Почтовый сервер Postfix доступен почти во всех дистрибутивах Linux. Вы можете использовать его в качестве простого релея для пересылки почты на другие почтовые сервера или smart host. В это статье мы покажем, как настроить Microsoft 365 (Exchange Online) SMTP relay (smart host) в postfix.
Установите необходимые компоненты:
# apt-get install postfix sasl2-bin mailutils
При первичной настройке postfix задайте:
- General type of mail configuration -> Internet Site
- System mail name -> ваш FQDN (hostname —fqdn)
Сохраните имя и пароль пользователя для аутентификации на Microsoft 365 SMTP сервере в файл /etc/postfix/sasl_passwd.
[smtp.office365.com]:587 username@vmblog365tenant.com:user_password
Set-CASMailbox -Identity username@vmblog365tenant.com -SmtpClientAuthenticationDisabled $false
Такой файл с паролем в виде plain текста нельзя использовать в postfix. Чтобы создать хэш для этого файла, выполните:
# postmap /etc/postfix/sasl_passwd
Хэш файла будет создан в etc/postfix/sasl_passwd.db.
При использовании Office 365 SMTP вы можете отбавить письмо только от имени пользователя, под которым аутентифицировались (должно совпадать с полем FROM). Postfix может подменить поле FROM для всех исходящих писем. Для этого создайте файл /etc/postfix/sender_canonical и добавьте в него строку:
/.+/ username@vmblog365tenant.com
Также создайте хэш для данного файла:
#postmap /etc/postfix/sender_canonical
Проверьте владельцев и права доступа к файлам:
# chown root:root /etc/postfix/{sasl_passwd,sasl_passwd.db,sender_canonical,sender_canonical.db}
# chmod 640 /etc/postfix/{sasl_passwd,sasl_passwd.db,sender_canonical,sender_canonical.db}
Для SMTP подключения мы будем использовать TLS. Получите сертификаты:
openssl s_client -showcerts -starttls smtp -crlf -connect smtp.office365.com:587
И скопируйте их в файл /etc/postfix/cacert.pem
Теперь внесите следующие изменения в конфигурационный файл postfix (/etc/postfix/main.cf):
inet_protocols = ipv4 relayhost = [smtp.office365.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may sender_canonical_maps = regexp:/etc/postfix/sender_canonical smtp_tls_CAfile = /etc/postfix/cacert.pem smtp_use_tls = yes
Перезапустите сервис:
# systemctl restart postfix
Попробуйте отправить письмо с вложением
# echo "Тестовое письмо через Microsoft 365 SMTP" | mail -s "Проверка отправки M365 Postfix" admin@vmblog.ru
Для анализа подключений к SMTP relay и просмотра логов отправки писем, смотрите журнал в файле:
# less /var/log/mail.log
Или журнал postfix:
# journalctl -u postfix