Я хочу настроить Postfix для использования внешнего реле в зависимости от имени хоста назначения, то есть:
Под именем хоста назначения я подразумеваю имя хоста, полученное из записи MX. Если в домене получателя есть запись MX microsoft-com.mail.protection.outlook.com
, затем используйте другое реле
Я знаю, что можно указать реле в зависимости от адреса отправителя (используя sender_dependent_relayhost_maps
), но в моей ситуации это непрактично.
Цель состоит в том, чтобы использовать другой ретранслятор для привередливых хостов назначения: возможно, Mandrill или другую установку Postfix.
Ответ арула идеально подходит для транспортировки на основе домена получателя. Однако, поскольку вы ссылаетесь на имя хоста записи MX вместо домена получателя, ответ неприменим.
Одно из решений - использовать check_recipient_mx_access
. Фрагмент из официальные документы
check_recipient_mx_access тип: стол
Поиск в база данных указанного доступа (5) для хостов MX для домена RCPT TO, и выполните соответствующее действие. Примечание: результат «ОК» не допускается по соображениям безопасности. Вместо этого используйте DUNNO, чтобы исключить определенные хосты из черных списков. Эта функция доступна в Postfix 2.1 и новее.
Для вашего случая просто положите check_recipient_mx_access hash:/etc/postfix/finickydestination
в подходящем месте smtpd_*_restriction
. В этом файле укажите имя хоста
# /etc/postfix/finickydestination
.outlook.com FILTER smtp:[some_smtp.example.com]
Не забудьте постмапить файл и выполнить перезагрузку постфикса.
Ссылки):
Вы можете настроить транспортную карту, чтобы выборочно выбирать почту с @outlook.com
в качестве адреса назначения и ретранслировать их через some_smtp.example.com
как показано ниже.
Добавьте запись ниже в /etc/postfix/transport
outlook.com smtp:[some_smtp.example.com]
Добавьте запись ниже в /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport
Перезапустите постфикс после следующей команды
sudo postmap /etc/postfix/transport
Как отметил @ user221326 (у меня недостаточно репутации, чтобы прокомментировать себя), @masegaloeh ответ будет НЕ работать check_recipient_mx_access
ожидает таблица доступа с ACTION
Больше информации в страница руководства
Действие, которое вы хотите, это FILTER
так что-то вроде
.outlook.com FILTER smtp:[some_smtp.example.com]
Обратите внимание, если у вас несколько FILTER
только последний будет стрелять, поэтому убедитесь, что он идет после всего остального.
более того .outlook.com
будет ловить только суб / супер домены (например, something.protection.outlook.com), если smtpd_access_maps
является НЕ в parent_domain_matches_subdomains
, иначе ты хочешь outlook.com
(без начальной точки)
Наконец, имейте в виду, что это действие применяется к все сообщение как только один из получателей MX совпадает с доменом, что не должно вызывать проблем, если ваша определенная цель не является MDA.
Ура