Это довольно длинный вопрос с длинным списком перепробованных вещей и мучений, поэтому, пожалуйста, потерпите меня. Краткое изложение таково.
- Я могу ретранслировать электронную почту из Ubuntu через Office365 с помощью Postfix; конфигурация работает.
- Он работает только как один из пользователей; точнее, пользователь, который проходит аутентификацию в Office365, является единственным допустимым «от».
Далее следует более подробная информация. У меня есть машина в облаке Amazon, на которой я запускаю кучу заданий, и я хотел бы получать статусы по почте. Я использую office365 на работе, поэтому я хочу ретранслировать почту через office365. Я лучше всего знаком с postfix, поэтому я использовал его в качестве MTA.
Конфигурация такова ubuntu 12.04LTS
: я установил postfix и mail-utils.
Для этого примера предположим, что моя компания называется « company.com
», а рассматриваемая машина (через эластичный IP и запись DNS) называется « plaything.company.com
». Имя хоста установлено на « plaything.company.com
», поэтому/etc/mailname
На plaything у меня зарегистрированы следующие пользователи alpha
: bravo
, , и charlie
.
У меня есть следующие файлы конфигурации.
alias_database = хэш:/etc/aliases alias_maps = хэш:/etc/aliases append_dot_mydomain = нет бифф = нет config_directory = /etc/postfix inet_interfaces = все inet_protocols = ipv4 mailbox_size_limit = 0 mydestination = plaything.company.com, localhost.company.com, , localhost myhostname = plaything.company.com моисети = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = нет разделитель_получателя = + релейхост = [smtp.office365.com]:587 sender_canonical_maps = хэш:/etc/postfix/sender_canonical smtp_sasl_auth_enable = да smtp_sasl_password_maps = хэш:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = безанонимный smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = да smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = да
Поскольку машина называется , plaything.company.com
я выполнил процедуру регистрации всех соответствующих записей DNS, чтобы office365 распознал, что я являюсь ее владельцем, plaything.company.com
и позволил мне создать пользователя с именем [email protected]
office365.
В Office365 я настроил [email protected]
еще один адрес электронной почты [email protected]
.
Затем я сделал следующий sender_canonical
[email protected] [email protected]
Я создал файл sasl_passwd следующего содержания:
smtp.office365.com [email protected]:123456password123456
скажем так, пароль [email protected]
для1234...456
После всех этих настроек войдите в систему как alpha
и
почта[email protected] Копия: Тема: тест тест
и все это работает замечательно. электронная почта отправляется через Postfix, TLS работает как чемпион, аутентифицируется как daemon@...
и[email protected]в Office365 получает сообщение электронной почты.
Проблема возникает при входе в систему как bravo
на машине.
отправитель — это [email protected]
и office365 говорит:
статус=возвращено (хост smtp.office365.com[132.245.12.25] сказал: 550 5.7.1 Клиент не имеет разрешения на отправку как этот отправитель (в ответ на команду «конец ДАННЫХ»))
это потому, что я пытаюсь отправить почту как bravo@...
и аутентифицироваться в office365 как daemon@...
. Причина, по которой это работает, alpha@...
заключается в том, что в office365 я настраиваю [email protected]
как имеющий другой адрес электронной почты [email protected]
.
ВРетрансляция Postfix в Office365,Майлз Эриксонотвечает на вопрос так:
Не отправляйте почту в Office365 как пользователь с вашего домена электронной почты, размещенного в Office365. Вместо этого используйте поддомен, например[email protected]вместо[email protected]. Не помешает настроить запись SPF для services.mydomain.com или любого другого имени, которое вы решите использовать.
Не проходите аутентификацию на mail.messaging.microsoft.com как пользователь Office365. Просто подключитесь к порту 25 и доставьте почту на свой домен, как это сделал бы любой сторонний агент SMTP.
Хорошо, я выполнил пункт 1, у меня есть эти записи в DNS, но по большей части они не имеют значения, как только Office365 распознает, что я являюсь владельцем домена.
Вот эти записи:
Записи CNAME: - msoid.plaything.company.com - autodiscover.plaything.company.com
Запись MX: - plaything.company.com (plaything-company-com.mail.protection.outlook.com)
Запись TXT: - plaything.company.com (v=spf1 include:spf.protection.outlook.com -all)
Я пробовал #2, но что бы я ни делал, office365 просто разрывает соединение с сообщением "не аутентифицировано". Я могу попробовать даже простой telnet на порт 25 и попытаться отправить, но это не работает.
250 BY2PR01CA007.outlook.office365.com Hello [54.221.245.236]
530 5.7.1 Client was not authenticated
Connection closed by foreign host.
Есть ли кто-нибудь, у кого есть такая рабочая конфигурация, где несколько пользователей на машине Linux могут ретранслировать почту с помощью postfix через office365? Должен быть кто-то, кто делает это и может сказать мне, что не так с моей настройкой...
решение1
Я думаю, вам нужно сделать шаг назад :)
Если вы вошли в систему plaything
как bravo
, вам действительно нужно, чтобы вся почта, отправленная с plaything, отправлялась как [email protected]
? Если нет, просто отправляйте всю почту как [email protected]
, см.Postfix на хостах без реального имени хоста в Интернете.
Если вы не можете применить это, то вам понадобитсяКарты SASL, зависящие от отправителя. Это немного усложнит вашу установку, поэтому я бы постарался этого избежать.
И последнее, но не менее важное: если plaything
бы вы отправляли письма как [email protected]
, вам бы пришлось настроить myhostname
и/или myorigin
также избавиться от relayhost
настройки. В этом случае, plaything
вы бы доставляли всю почту напрямую, со всеми плюсами и минусами, такими как репутация почтового сервера и т. д.