Опис
Для відправки системних повідомлень використовуємо поштові сервіси (postfix, sendmail), які відправляють системні події на пошту. В ідеалі в AWS для цього використовувати AWS SES, але грошики. AWS блокує 25 порт, тому доведеться трішки повозитися. Загалом можна зробити запит на розблокування, дивимося тут, проте це не наш варіант. Підемо іншим шляхом, піднімемо в DigitalOcean mail-relay сервер, встановимо postfix. Налаштуємо роботу postfix на не стандартний порт (2525) і будемо через нього відправляти повідомлення. Своєю чергою, mail-relay буде приймати ці повідомлення і перевідправляти їх по 25 порту.
Що ж, для реалізації нам потрібно:
- сервер в AWS, буде виконувати роль relay-client, на якому встановлений postfix.
- сервер в DigitalOcean, який буде виконувати роль mail-relay-server, встановлений postfix, налаштований на роботу через 2525 порт.
Перед процесом налаштування Вам потрібно створити наступні записи в доменному реєстраторі:
- Record A – mail-relay.example.com
- Record MX – @
Перейдемо до налаштування.
relay-server
Підключаємось та встановлюємо postfix, зазвичай за замовчуванням встановлений sendmail, якщо він встановлений його можна видалити
yum remove sendmail yum install postfix
далі переходимо в директорію /etc/sendmail і будемо вносити зміни в конфігураційних файлах, для початку змінимо порт, щоб наш postfix працював на 2525 порту, редагуємо master.cf
# Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== 2525 inet n - n - - smtpd #smtp inet n - n - 1 postscreen #smtpd pass - - n - - smtpd #dnsblog unix - - n - 0 dnsblog #tlsproxy unix - - n - 0 tlsproxy #submission inet n - n - - smtpd .......
знаходимо рядок з smtp, закоментуємо його і зверху або під ним додаємо запис з портом 2525, після чого перезавантажуємо постфікс:
systemctl restart postfix
Тепер переходимо до налаштування в файлі main.cf. Нас будуть цікавити наступні рядки:
- inet_interfaces – адреса яку буде слухати postfix
- myhostname – назва сервера
- mynetworks – список довірених IP адрес які можуть відправляти повідомлення через relay-server, якщо не додавати сюди довірені IP – повідомлення через mail-relay відправлятися не будуть.
переходимо до їх редагування в файлі:
################################## # INTERNET HOST AND DOMAIN NAMES # ################################## myhostname = mail-relay.*****.com ################## # RECEIVING MAIL # ################## inet_interfaces = localhost, 104.***.**.39 ########################### # TRUST AND RELAY CONTROL # ########################### mynetworks = 127.0.0.1, 3.**.216.**/32
після чого перезапускаємо постфікс
systemctl restart postfix
Перевіримо на якому порту працює сервер:
netstat -tulpn | grep :2525 (No info could be read for "-p": geteuid()=1005 but you should be root.) tcp 0 0 104.***.**.39:2525 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:2525 0.0.0.0:* LISTEN - tcp6 0 0 ::1:2525 :::* LISTEN -
З базовим налаштуванням завершено, переходимо до перевірки.
relay-client
В ролі клієнта — сервер в AWS, на якому також встановлений postfix з базовими параметрами. Для початку перевіримо з даного серверу доступність до 2525 порту:
$ telnet mail-relay.****.com 2525 Trying 104.248.137.39... Connected to mail-relay.****.com. Escape character is '^]'.
Далі в налаштуваннях конфігураційного файлу /etc/postfix/main.cf потрібно знайти рядок relayhost, розкоментувати й додати посилання на створений mail-relay server:
..... # If you're connected via UUCP, see also the default_transport parameter. # relayhost = [mail-relay.****.com]:2525 #relayhost = [gateway.my.domain] #relayhost = [mailserver.isp.tld] #relayhost = uucphost #relayhost = [an.ip.add.ress] # REJECTING UNKNOWN RELAY USERS .....
перезапускаємо постфікс:
systemctl restart postfix
для виправляння повідомлення будемо використовувати утиліту mailx, якщо у вас її немає потрібно встановити пакет або використати sendmail:
$ echo "This is a test email body from AWS " | mail -s "Subject from AWS" v***.t**@***.net
перевіряємо пошту:
Посилання по темі
- https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/
- BASIC_CONFIGURATION_README.html
- https://tecadmin.net/bash-mail-command-not-found/