Назад | Перейти на главную страницу

Postfix: получать электронные письма только с определенных доменов?

Как я могу настроить Postfix так, чтобы он получал электронные письма только с определенных доменов?

На моем сервере есть конкретная учетная запись электронной почты, которую я хотел бы получать только с серверов txt.att.net, text.wireless.alltel.com и mms.alltel.net. Любые другие электронные письма, переданные на этот аккаунт, должны быть возвращены отправителю.

Это зависит от того, как вы хотите его ограничить. Я не уверен, о ретрансляторах вы говорите или об адресах отправки.

Отправка адресов

Вы можете использовать директиву check_sender_access с соответствующими ограничениями smtpd _ * _. Обычно лучше всего применять все проверки отправителя, хоста и т. Д. В рамках ограничений получателя (т.е. после того, как клиент отправил RCPT To :.)

например разрешить почту только от отправителей @ gmail.com и @ hotmail.com ...

задайте для smtpd_recipient_restrictions следующее:

smtpd_recipient_restrictions =
    check_sender_access hash:/etc/postfix/access,
    reject

Теперь / etc / postfix / access должен иметь вид:

gmail.com OK
hotmail.com OK

используйте хеш postmap: / etc / postfix / access для создания хеш-таблицы.

Имя хоста ретрансляции или IP

smtpd_recipient_restrictions =
    check_client_access hash:/etc/postfix/client_access,
    reject

Формат client_access аналогичен:

host.name.of.system.com  OK
ip.addr.of.system        OK

Чтение ваших журналов

Ниже приводится полный отрывок из моего журнала mail.log для примера сообщения. Я выбрал сообщение и получил идентификатор очереди - 31AF4761F3. Он будет в заголовках письма, а также в вашем почтовом файле журнала.

$ grep 31AF4761F3 /var/log/mail.log
Sep  4 09:30:38 cutoffs postfix/smtpd[7912]: 31AF4761F3: client=russian-caravan.cloud9.net[w.x.y.z]
Sep  4 09:30:38 cutoffs postfix/cleanup[7915]: 31AF4761F3: message-id=<007B93C54F154113B36026A22D5E0106@gaby>
Sep  4 09:30:38 cutoffs postfix/qmgr[19172]: 31AF4761F3: from=<owner-postfix-users@postfix.org>, size=4225, nrcpt=1 (queue active)
Sep  4 09:30:39 cutoffs postfix/pipe[7916]: 31AF4761F3: to=<XXXX@XXXX>, relay=spamassassin, delay=1.4, delays=0.19/0.01/0/1.3, dsn=2.0.0, status=sent (delivered via spamassassin service)
Sep  4 09:30:39 cutoffs postfix/qmgr[19172]: 31AF4761F3: removed

Вы можете видеть в первой строке, что у нас есть client = russian-caravan.cloud9.net (который является почтовым сервером, который отправляет почту для списка рассылки postfix), а IP-адрес указан в скобках. Вы можете использовать имя хоста или IP-адрес в файле доступа, но помните, если у них есть несколько почтовых ретрансляторов или когда-либо они меняют свои почтовые ретрансляторы, вам нужно это выяснить.

Ответ Фила хорош, за исключением одной детали. не используйте «OK» на правой стороне / etc / postfix / access или / etc / postfix / client_access. что делает ваш почтовый сервер частично открытым ретранслятором для всех, кто утверждает, что отправляет почту с @ gmail.com или @ hotmail.com (доступ), или для определенных хостов, разрешенных в client_access. это выходит за рамки простого предоставления им возможности отправлять почту определенным пользователям вашей системы, это позволяет им пересылать почту любому пользователю в любой системе через вашу.

вместо этого используйте "permission_auth_destination". это позволяет им отправлять сообщения на ваши локальные домены или на любые, для которых вы настроили ретрансляцию, но НЕ на любой произвольный домен.

например

/ etc / postfix / доступ:

gmail.com     permit_auth_destination
hotmail.com   permit_auth_destination

/ etc / postfix / client_access:

host.name.of.system.com  permit_auth_destination
ip.addr.of.system        permit_auth_destination

даже если все остальное настроено идеально, использование «ОК» в правилах доступа постфиксного типа - плохая привычка. иногда вам это действительно нужно, но по умолчанию вы должны использовать вместо этого "permission_auth_destination".

На основании этой ссылки: [http://www.postfix.org/RESTRICTION_CLASS_README.html#internal provided[2]

моя конфигурация:

/etc/postfix/main.cf

 smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/protected_destinations,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
 smtpd_restriction_classes = insiders_only
 insiders_only = check_sender_access hash:/etc/postfix/insiders, reject

/ и т.д. / постфикс / инсайдеры

 mydomain.com            OK
 otherdomain.com         OK
 myemail@gmail.com       OK

/ и т.д. / постфикс / защищенные_назначения

restricted_email@      insiders_only

затем

 postmap /etc/postfix/insiders
 postmap /etc/postfix/protected_destinations
 /etc/init.d/postfix restart

Эта настройка разрешает входящие электронные письма только от объектов / etc / postfix / insiders и влияет только на адреса / es в файле protected_destinations, а НЕ на глобальную систему, поэтому все другие пользователи могут получать входящую почту всегда. Обратите внимание, что это могут быть домены и / или адреса электронной почты.

Строка limited_email @ insiders_only охватывает все домены на сервере. У меня есть только локальные пользователи на моем сервере, и мне нужно поставить «@» в конце ограниченного_почта, чтобы работать со всеми доменами limited_email @, что я хочу.