Postfix: GMAIL SMTP Relay

Очень часто возникает необходимость отправлять почту с сервера. Разберем как это делать и какие есть нюансы.

Для отправки писем можно использовать любой аккаунт Gmail. Если вы счастливый обладатель смартфона на Android, то у вас 100% есть аккаунт. Также не требуется создавать MX запись в DNS.

Настройка не хитрая. Всего лишь надо установить пакеты для работы с SASL и сертификаты: yum install postfix cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain ca-certificates. Накидаем конфиг:

$ cat /etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no
# $myhostname заменить на свой hostname (можно сделать равным fqdn)
# $fqdn заменить на полное доменное имя (например: myblog.example.com)
# в mynetworks укажите IP-адреса или подсети в формате CIDR
# с которых разрешена отправка почты
# пример:
# myhostname = mysmtp
# mydestination = mysmtp.mydomain.com, mysmtp
myhostname = mysmtp
mydestination = mysmtp.example.com, $myhostname, localhost.localdomain, localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_use_tls = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# замените all на 127.0.0.1 если нужно чтобы просто слушал локалхост
inet_protocols = ipv4

Создайте файл /etc/postfix/sasl_passwd и впишите следующие данные:

[smtp.gmail.com]:587   username@gmail.com:password
$ chmod 400 /etc/postfix/sasl_passwd
$ postmap /etc/postfix/sasl_passwd
$ postmap /etc/aliases
$ systemctl restart postfix

Ну и по сути все. Проверяем отправку письма: mail -s «Test subject» recipient@domain.com. Если сервер торчит на внешке, то настраивайте firewall так, чтобы порт postfix не был доступен с внешки.

Двухфакторная аутентификация

Если у вас включена двухфакторная аутентификация, тогда надо зайти в настройки безопасности аккаунта и создать пароль приложения. В sasl_passwd заменить пароль аккаунта паролем приложения, выполните снова postmap и перезапускайте postfix.

Ограничения

В Gmail по-умолчанию стоит ограничение в 500 писем в день. Если вы счастливый обладатель G Suite, то еще можно обойти это ограничение используя почтовые группы для рассылки, а количество отправляемых писем в день увеличивается до 2000.