null

Использование Office365 SMTP Relay в Postfix

Данный заметка покажет как использовать Office365 SMTP relay в Postfix
на Ubuntu 16.04.

Установка компонентов

Для начала нужно установить необходимые компоненты:

# apt-get install postfix sasl2-bin mailutils

sasl2-bin является реализцией Cyrus SASL API, и позволяет
интегрировать механизм аутентификации в Postfix.

Во время конфигурации Postfix на вопрос:
"General type of mail configuation" выберите "Internet Site".
Также, установите в `System mail name` ваш FQDN (Fully Qualified Domain Name).

Конфигурация

Зададим учетные данные, которые будут использоваться для аутентификации на Office365 SMTP сервере.
Создайте файл /etc/postfix/sasl_passwd и поместите туда строку:

[smtp.office365.com]:587 usernameOffice365@domainOffice365.it:password

Не забудьте заменить usernameOffice365@domainOffice365.it и password
на Ваши учетные данные.

Для некоторых конфигурационных файлов Postfix не использует формат plain текст.
Вместо этого используется захэшированная версия этого файла, что позволяет
быстрее искать и получать необходимую информацию из них. sasl_passwd -- один из них.

# postmap /etc/postfix/sasl_passwd

Эта команда создаст захэшированную версию текстового файла sasl_passwd.
Вы можете увидеть его здесь: /etc/postfix/sasl_passwd.db.

Используя Office365 SMTP, Вы можете отправлять письма только он имени
пользователя которым Вы аутентифицировались (поле FROM должно с ним совпадать).
Поэтому нам нужно попросить Postfix подменять поле FROM во всех исходящих письмах.

Создадим файл /etc/postfix/sender_canonical и добавим туда строку:

/.+/ usernameOffice365@domainOffice365.it

Не забудьте поменять здесь email адрес на свой.

И создадим захэшированную версию этого файла:

# 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}

Будем использовать TLS:

# cp /etc/ssl/certs/TWCA_Global_Root_CA.pem /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

И перезапустим Postfix:

# systemctl restart postfix

Тестовое письмо

Теперь попробуем отправим тестовое письмо, чтобы убедиться, что
все работает как ожидается.
Создайте файл /etc/postfix/mailtest.txt:

to: emailto@domain.it
subject:Mail Delivery Test

Не забудьте поменять emailto@domain.it на адрес на который Вы хотите отправить письмо.

Отправим его:

# sendmail -v emailto@domanin.it < /etc/postfix/mailtest.txt

Если что-то пошло не так, посмотрите в лог и исследуйте что именно пошло не так
при отправке:

# less /var/log/mail.log

Если Вы внесли какие-либо изменения в конфигурацию Postfix, то его нужно перезапуcтить:

# systemctl restart postfix