AWS: Amazon Linux відправка пошти з Postfix через Gmail
0 (0)

Автор |  16/03/2026
Click to rate this post!
[Total: 0 Average: 0]

Продовження налаштування нового сервера для RTFM. Наступний крок – налаштувати можливість відправки пошти з EC2, бо тут можуть бути і важливі листи юзера root, і сам RTFM відправляє листи.

Думав робити з AWS Simple Email Service – чисто для того, аби згадати як з ним працювати, але – не такий вже він і Simple, бо верифікація домену затягнулась.

Тому забив, і зробив зі старим другом – Postfix, який відправляє пошту через налаштований relay – звичайний ящик в Gmail.

OMG… Останній раз про Postfix писав в червні 2013.

В принципі – все аналогічно тому, як описано в пості FreeBSD: налаштування DragonFly Mail Agent для пошти root:

  • Postfix у нас грає роль MTA (Mail Transfer Agent) – приймає листи від клієнтів і передає до SMTP Relay host
  • Relay: Gmail SMTP – аутентифікуємось з логіном-паролем, які задамо в Postfix, і через Gmail відправляємо листи

Приклад на Amazon Linux версії AL2023, але те саме рішення можна для будь-якої системи.

Встановлюємо Postfix:

[root@ip-10-0-1-79 ~]# dnf install postfix cyrus-sasl-plain mailx

cyrus-sasl-plain вже має бути в системі, але про всяк випадок вказуємо і його, а mailx – зручний MUA (Mail User Agent), для тестів або для використання в скриптах.

Запускаємо:

[root@ip-10-0-1-79 ~]# systemctl enable --now postfix
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.

Для аутентифікації в Gmail краще створити окремий пароль – процес описував в Створення Google Mail App Passwords.

Налаштовуємо аутентифікацію Postfix в Gmail – файл /etc/postfix/sasl_passwd, формат:

[smtp.gmail.com]:587 [email protected]:apppassword

З postmap генеруємо sasl_passwd.db, бо Postfix не використовує файл /etc/postfix/sasl_passwd напряму:

[root@ip-10-0-1-79 ~]# postmap /etc/postfix/sasl_passwd
[root@ip-10-0-1-79 ~]# chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

І в самому Postfix /etc/postfix/main.cf додаємо:

  • relayhost: куди передаємо пошту для відправки, в нашому випадку Gmail SMTP
  • smtp_sasl_auth_enable: вмикаємо SMTP аутентифікацію (логін/пароль) з Simple Authentication and Security Layer (SASL)
  • smtp_sasl_password_maps: шлях до файлу з credentials до Gmail
  • smtp_sasl_security_options = noanonymous: забороняємо анонімну аутентифікацію
  • smtp_tls_security_level = encrypt: обов’язковий TLS
  • smtp_tls_CAfile: CA сертифікати для перевірки Gmail SMTP
  • inet_protocols = ipv4: якщо не налаштовували IPv6 для VPC – то дозволяємо тільки IPv4

Робимо з postconf, бо деякі параметри вже є в конфігу – postconf замінить існуючі, а не додасть дублі:

[root@ip-10-0-1-79 ~]# postconf -e "relayhost = [smtp.gmail.com]:587"
[root@ip-10-0-1-79 ~]# postconf -e "smtp_sasl_auth_enable = yes"
[root@ip-10-0-1-79 ~]# postconf -e "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd"
[root@ip-10-0-1-79 ~]# postconf -e "smtp_sasl_security_options = noanonymous"
[root@ip-10-0-1-79 ~]# postconf -e "smtp_tls_security_level = encrypt"
[root@ip-10-0-1-79 ~]# postconf -e "smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt"

Рестартимо, перевіряємо логи:

[root@ip-10-0-1-79 ~]# systemctl restart postfix
[root@ip-10-0-1-79 ~]# journalctl -f -u postfix.service

Змінюємо адресу юзера root – редагуємо /etc/aliases:

...
# Basic system aliases -- these MUST be present.
mailer-daemon:  postmaster
postmaster:     root

# add mailbox for the root user
root: [email protected]

...

Оновлюємо базу:

[root@ip-10-0-1-79 ~]# newaliases

І перевіряємо відправку – в одній консолі запускаємо journalctl -f -u postfix.service, в іншій з mailx відправляємо листа до root:

[root@ip-10-0-1-79 ~]# echo "test body" | mailx -s "test postfix" root

Бачимо відправку в логах:

[...] postfix/qmgr[176329]: BB15174EFD: from=<[email protected]>, size=714, nrcpt=1 (queue active)
[...] postfix/smtp[176331]: BB15174EFD: to=<[email protected]>, orig_to=<root>, relay=smtp.gmail.com[172.253.116.109]:587, delay=333, delays=332/0.03/0.32/0.59, dsn=2.0.0, status=sent
[...] postfix/qmgr[176329]: BB15174EFD: removed

І маємо листа в своєму ящику:

Готово.

Коли вже дописував, то нагуглив документацію AWS Integrating Amazon SES with Postfix – аналогічно до того, що ми робили вище, тільки з використанням SMTP AWS SES.

Loading