Как я могу настроить 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 @, что я хочу.