Я хотел бы настроить postfix для ретрансляции почты только с определенных адресов отправителя. Postfix должен ретранслировать почту на разные relayhosts(/smarthosts) (Gmail, AOL, ...) в зависимости от адреса отправителя ("MAIL FROM:").
На данный момент моя текущая конфигурация работает следующим образом:
Пользователи аутентифицируются на postfix для почтовой ретрансляции в целом. Если они не могут аутентифицироваться, ретрансляция невозможна. Обратите внимание, что эта аутентификация отличается от аутентификации для relayhosts.
В зависимости от адреса отправителя ("MAIL FROM:") выбирается определенный релейный хост (
smtp_sender_dependent_authentication
,sender_dependent_relayhost_maps
,smtp_sasl_password_maps
). Это тоже работает нормально.Однако если пользователь может пройти аутентификацию и его адрес отправителя не указан в
sender_dependent_relayhost_maps
, Postfix пытается напрямую ретранслировать почту, что часто не работает из-за ограничений по IP-адресам (черных списков).
Теперь у меня вопрос: как отклонить почту, которая была бы передана напрямую (без smarthost), т. е. адрес отправителя которой не указан в sender_dependent_relayhost_maps
? Есть какие-нибудь подсказки, как этого добиться?
решение1
Вам понадобится какой-то ограничивающий тестдо permit_sasl_authenticated
. Предпосылкой для этого будет наличие отдельного smtpd на порту 25
для входящей почты и другого smtpd дляподчинениена порту 587
. В противном случае это ограничение приведет к отклонению входящей почты, поскольку она не пройдет тест. Затем удалите permit_sasl_authenticated
из порта 25
вообще и добавьте тест в конфигурацию отправки в master.cf
.
Если отвечать на ваш вопрос буквально,
check_sender_access
Подходящим тестом было бы внесение всех доменов, перечисленных в списке, в белый списокsender_dependent_relayhost_maps
и отклонение почты для остальных.check_sender_access type:table
Поиск указанногодоступ(5)базу данных для
MAIL FROM
адреса, домена, родительских доменов илиlocalpart@
и выполнить соответствующее действие.Это можно добавить либо к
smtpd_sender_restrictions
илиsmtpd_recipient_restrictions
.То же самое, но еще больше мешая пользователям использовать адреса друг друга, можно сделать с помощью
reject_sender_login_mismatch
. Это требует дополнительногоsmtpd_sender_login_maps
table, но если вашиvirtual_alias_maps
записи уже сформированы как[email protected] username
, вы можете использовать тот же файл, и разрешенные адреса отправителей будут автоматически обновляться всякий раз, когда вы обновляете свою базу данных виртуальных псевдонимов с помощьюpostmap
. Пример такой конфигурации отправки вmaster.cf
:submission inet n - - - - smtpd # Other parameters -o smtpd_sender_login_maps=hash:/etc/postfix/virtual -o smtpd_sender_restrictions=reject_sender_login_mismatch -o smtpd_client_restrictions=permit_sasl_authenticated,reject # Other parameters