Я пытаюсь настроить сервер 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 или выше (и использование конфигурации, подобной приведенной выше) решило проблему.
Решение:
Не отправляйте почту в Office365 как пользователь из своего почтового домена, размещенного в Office365. Вместо этого используйте субдомен, например address@services.mydomain.com вместо address@mydomain.com. Не повредит настроить запись SPF для services.mydomain.com или того, что вы решите использовать.
Не проходите аутентификацию на mail.messaging.microsoft.com как пользователь Office365. Просто подключитесь к порту 25 и доставьте почту в свой домен, как это сделал бы любой внешний SMTP-агент.
Я обнаружил, что отсутствуют некоторые модули аутентификации SASL. Следующее исправлено:
yum install cyrus-sasl-plain cyrus-sasl-scram cyrus-sasl-md5 cyrus-sasl-ntlm
(простой модуля наверное хватило)