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

Postfix Relay в Office365

Я пытаюсь настроить сервер Postfix на компьютере с Linux для ретрансляции всей почты на наш почтовый сервер Office365 (Exchange, размещенный на Microsoft), но я продолжаю получать сообщение об ошибке относительно адреса отправки:

BB338140DC1: to = relay = pod51010.outlook.com [157.56.234.118]: 587, задержка = 7,6, задержки = 0,01 / 0 / 2,5 / 5,1, dsn = 5.7.1, статус = bounced (хост pod51010.outlook.com [ 157.56.234.118] сказал: 550 5.7.1 Клиент не имеет разрешений на отправку в качестве этого отправителя (в ответ на конец команды DATA))

Office 365 требует, чтобы адрес отправителя в заголовках MAIL FROM и From: совпадал с адресом, используемым для проверки подлинности. Я перепробовал все, что мог придумать в конфигурации, чтобы это заработало. Мой postconf -n:

append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
debug_peer_list = 127.0.0.1
inet_interfaces = loopback-only
inet_protocols = all
mailbox_size_limit = 0
mydestination = xxxxx, localhost.localdomain, localhost
myhostname = localhost
mynetworks = 127.0.0.0/8
recipient_delimiter = +
relay_domains = our.doamin
relayhost = [pod51010.outlook.com]:587
sender_canonical_classes = envelope_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_always_send_ehlo = yes
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

/etc/postfix/sender_canonical:

www-data                address@mydomain.com
root                    address@mydomain.com
www-data@localhost      address@mydomain.com
root@localhost          address@mydomain.com

Также, sasl_passwd настроены на правильные учетные данные (проверено их с помощью сваки несколько раз.) Аутентификация работает и отправляет сообщение, если заголовки from верны (также проверено с использованием сваки, который работает)

Электронные письма приходят с PHP, поэтому я также попытался изменить путь sendmail в php.ini для использования передать правильный адрес через -f

Итак, по какой-то причине почта приходит от www-data и корень не переписывают поля from в соответствии с требованиями Office 365, и сообщение не будет отправлено.

Есть какие-нибудь гуру постфикса, которые могут помочь мне настроить это реле?

На случай, если кто-нибудь потом с этим столкнется. Я ДЕЙСТВИТЕЛЬНО наконец-то получил правильную работу почтового реле. Проблемы были связаны с использованием более старой версии постфикса, которая форматировала элемент «FROM» в конверте не так, как Office 365. Обновление Postfix до версии 2.9 или выше (и использование конфигурации, подобной приведенной выше) решило проблему.

Решение:

  1. Не отправляйте почту в Office365 как пользователь из своего почтового домена, размещенного в Office365. Вместо этого используйте субдомен, например address@services.mydomain.com вместо address@mydomain.com. Не повредит настроить запись SPF для services.mydomain.com или того, что вы решите использовать.

  2. Не проходите аутентификацию на mail.messaging.microsoft.com как пользователь Office365. Просто подключитесь к порту 25 и доставьте почту в свой домен, как это сделал бы любой внешний SMTP-агент.

Я обнаружил, что отсутствуют некоторые модули аутентификации SASL. Следующее исправлено:

yum install cyrus-sasl-plain  cyrus-sasl-scram cyrus-sasl-md5  cyrus-sasl-ntlm

(простой модуля наверное хватило)