Postfix Relay для Office365


8

Я пытаюсь настроить сервер 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, статус = отказов (хост pod51010.outlook.com [ 157.56.234.118] said: 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заданы правильные учетные данные (проверено их с использованием swaks несколько раз.) Проверка подлинности работает и отправляет сообщение, когда заголовки from верны (также проверяется с использованием swaks , что работает)

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

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

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

Ответы:


3

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


Я провел последние 3 дня, пытаясь установить это реле с sendmail, ssmtp и теперь postfix. Можете ли вы объяснить мне немного больше вашего sender_canonical? Это реле необходимо для работы? С моей настройкой я получаюJan 9 11:03:11 isvahlrtk01 postfix/smtp[12841]: connect to pod51017.outlook.com[157.56.250.182]:587: Connection timed out
Rhyuk

где вы взяли smtp_tls_CAfile для outlook.com?
13

Я никогда не нуждался в этом, он хорошо сочетается с тем, что поставляется с сервером Ubuntu.
Вудсбв

2

Решение:

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

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


Справедливо. Я надеялся, что вся наша почта будет проходить через центральную точку ... но потратив 12 часов на то, чтобы заставить это реле работать, я возьму его :)
woodsbw

0

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

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

(достаточно простого модуля)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.