Всем привет.Есть Postfix. Работает как шлюз исходящей почты (с авторизацией по паролю), и заодно перенаправляет входящую почту для одного домена (пусть domain1.com) на основной почтовый сервер. Т.е. не является конечной остановкой для почты.
Основная почта - в облаке, на Exchange Online. Там есть опция (поток обработки почты - соединители), где можно настроить, через какой промежуточный сервер можно переслать отправляемую почту. В Exchange Online указал мой Postfix.
В почтовом клиенте (Outlook) вынужден использовать не IMAP, а Microsoft Exchange, который, паразит, не дает просто указать кастомный SMTP!!! Т.е. почта из Outlook с авторизацией через Exchange Online уходит прекрасно, но если ее релеить на postfix, то он не дает открыто релеить через него почту в другие домены.
Конфиг Postfix:
main.cf:
relay_domains = domain1.com
...
smtpd_relay_restrictions =
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_recipient_domain,
reject_unknown_sender_domain,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_unverified_sender,
reject_unknown_client_hostname,
reject_unknown_helo_hostname,
defer_unauth_destination
И, вроде бы, прекрасно, что это не открытый релей.
Но без авторизации отправить через него почту в домен, отличный от domain1.com, невозможно. И письма из Exchange Online, пересылаемые от Microsoft на Postfix, отбрасываются. Лог на postfix, когда Exchange Online пытается переслать через него почту:
Anonymous TLS connection established from mail-ve1eur122p0672.outbound.protection.outlook.com[213.199.154.150]: TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)
NOQUEUE: reject: RCPT from mail-ve1eur122p0672.outbound.protection.outlook.com[213.199.154.150]: 454 4.7.1 <external123@partner.org>: Relay access denied; from=<my@domain1.com> to=<external123@partner.org> proto=ESMTP helo=<EUR03-VE1-obe.outbound.protection.outlook.com>
disconnect from mail-ve1eur122p0672.outbound.protection.outlook.com[213.199.154.150]
Оно и логично. С какого перепугу мой postfix будет релеить почту от "левых" *.outbound.protection.outlook.com? Он ее и отбрасывает.
Хосты (и IP) *.outbound.protection.outlook.com постоянно меняются, я не могу поступить грубо/криво и добавить нужный IP в myhostname.
Если relay_domains указать так:
relay_domains = domain1.com,partner.org
то почта на email external123@partner.org пройдет успешно. Но тогда надо просто делать открытый релей для любых доменов! Ясное дело - не хочу.
В smtpd_relay_restrictions, по моему представлению, надо указать что-то вроде:
smtpd_relay_restrictions =
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_recipient_domain,
reject_unknown_sender_domain,
permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:/etc/postfix/trusted_servers,
reject_unauth_destination,
reject_invalid_hostname,
reject_unverified_sender,
reject_unknown_client_hostname,
reject_unknown_helo_hostname,
defer_unauth_destination
В файле /etc/postfix/trusted_servers:
.outbound.protection.outlook.com OK
Но почему-то не работает.
# postmap /etc/postfix/trusted_servers
Проверяю:
# postmap -q mail-am5eur02lp0143.outbound.protection.outlook.com /etc/postfix/trusted_servers
фиг там
# postmap -q .outbound.protection.outlook.com /etc/postfix/trusted_servers
ок
То-ли я не тот синтаксис использую, то-ли еще что-то. Есть идеи, как заставить разрешить postfix релеить почту, приходящую с хостов *.outbound.protection.outlook.com и адресованную любым адресам почты (а не моему домену), при этом не став открытым релеем?