Данный заметка покажет как использовать 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