Контрольний список для успішного надсилання пошти та перевірки доставки
Для подальших перевірок знадобиться таке програмне забезпечення:
-
Утиліта host
- Debian/Ubuntu:
apt-get install bind9-host - CentOS:
yum install bind9-host
- Debian/Ubuntu:
-
Утиліта telnet
- Debian/Ubuntu:
apt-get install telnet - CentOS:
yum install telnet
- Debian/Ubuntu:
Запис MX
MX-запис — це тип DNS-запису, призначений для реєстрації поштових серверів, що використовують протокол SMTP. Цей запис відповідає за визначення сервера, на який має бути доставлено електронний лист поштовим агентом відправника. Для одного домену може існувати кілька типів записів із різними пріоритетами.
Ви можете перевірити, чи пошта працює локально, чи використовує сторонній поштовий сервер, за допомогою команди host:
host -t MX example.com
Під час роботи з локальним поштовим сервером вивід матиме такий вигляд:
Пошта для example.com обробляється через 10 mail.example.com.
Варто зазначити, що запис mail.example.com також може вказувати на інший сервер. Крім того, необхідно зазначити, що mail.example.com має бути наявним A-записом, який вказує на сервер, з якого ви надсилаєте пошту.
Ви також можете виконати такі команди для перевірки:
host example.com
host mail.example.com
І порівняти IP-адреси, на які вказують основний домен, у цьому випадку example.com, і mail.example.com.
MX-запис має бути налаштований, щоб поштові сервери могли приймати вашу електронну пошту.
Приклад MX-запису:
Ім’я: example.com.
Тип: MX
Значення: mail.example.com.
Пріоритет: 10
DKIM-підпис
За допомогою FASTPANEL® DKIM-підпис можна отримати в меню керування → розділ "Mail", натиснувши "DKIM" навпроти потрібного поштового домену

З боку DNS запис потрібно додати таким чином:
Ім’я: dkim._domainkey
Тип: TXT
Значення: v=DKIM1; k=rsa; p=public_key
Ось приклад правильного DKIM-запису
dkim._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpbBQ0T2xO3/SwziunIC/IFbsxBRub6WXiu8Kc2w7uB4GVw+SAB5wSEslDJbFXQRbdV9i/Duu8EQ9xik8dbqdLVyP4iAtw34g4j6QWKcfocgK4hEkwlPFff1dzUlNQONh2riNE5KVJXuWcizm8hub7nPnl36e7OnxiL0qIU7tT1QIDAQAB
Більше інформації про DKIM можна знайти за адресою https://wikipedia.org/wiki/DomainKeys_Identified_Mail
SPF-запис
Наявність SPF-запису можна перевірити, виконавши команду host. У цьому випадку команда матиме такий вигляд:
host -t TXT example.com
З таким виводом:
example.com descriptive text "v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all"
Зверніть увагу, що ipv6 може бути відсутнім у цьому записі. У цьому випадку SPF-підпис матиме такий вигляд:
example.com descriptive text "v=spf1 ip4:ipv4_of_your_server a mx ~all"
Необхідно зазначити, що має бути лише один SPF-запис
З боку DNS запис слід додати таким чином:
Ім’я: example.com.
Type: TXT
Value:
v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all
або (якщо ipv6 не використовується)
v=spf1 ip4:ipv4_of_your_server a mx ~all
Наприклад:
example.com TXT v=spf1 ip4:1.2.3.4 a mx ~all
Більше інформації про SPF можна знайти за адресою https://wikipedia.org/wiki/Sender_Policy_Framework
DMARC-запис
У більшості випадків значення запису DMARC буде однаковим.
З боку DNS запис пот рібно додати таким чином:
Ім’я: _dmarc
Тип: TXT
Значення: v=DMARC1; p=none
Наприклад:
_dmarc.example.com. TXT v=DMARC1; p=none
Більше інформації про DMARC можна знайти за адресою https://wikipedia.org/wiki/DMARC
PTR-запис і hostname сервера
PTR-запис — це зворотний DNS-запис, який перетворює IP-адресу на ім'я. Основне призначення цього запису для поштового сервера — усунення більшості спаму. Цей запис дає змогу визначити ім'я хоста, з якого надходить електронний лист. Найчастіше PTR-запис містить доменне ім'я, що використовується на сервері.
PTR-запис пов'язує ip-адресу з іменем хоста. Якщо PTR-запис вказано неправильно, ваші листи буде відхилено і вони не дійдуть до адресата.
Hostname слід вказати як ім'я фактичного домену, що вказує на сервер, а PTR має вказувати на домен, який, своєю чергою, вказує на сервер.
Наприклад, у вас на сервер і є домен example.com.
Виконавши команду:
host example.com
ви можете отримати такий вивід:
example.com має адресу 1.2.3.4
пошта для example.com обробляється через 10 mail.example.com.
Щоб уникнути можливих проблем, рекомендується встановити hostname і PTR-запис як наявний субдомен другого рівня, наприклад mail.example.com
Доступність SMTP-портів
Деякі хостинг-провайдери закривають можливість використання портів, які застосовуються для надсилання або отримання пошти. Портами для поштових сервісів можуть бути 25, 587, 465, 143 і 993.
Один із найпростіших способів перевірити доступність цих портів — використати команду telnet.
Щоб перевірити вхідне з'єднання зі стороннього сервера
Виконайте команду:
telnet ip_adress port
Наприклад, якщо ви намагаєтеся підключитися через telnet до порту 25 на 1.2.3.4, команда для виконання буде такою:
telnet 1.2.3.4 25
Якщо з'єднання успішне, ви побачите такий вивід:
Спроба з’єднання з 1.2.3.4...
З’єднано з 1.2.3.4.
Escape character is '^]'.
Якщо з'єднання не вдасться, вивід матиме такий вигляд:
Підключення до 1.2.3.4 ...
Не вдалося відкрити з’єднання з хостом на порту some_port: помилка підключення
Або:
telnet: Не вдалося підключитися до віддаленого хоста: час очікування з’єднання минув
Для вихідного з'єднання
На своєму сервері виконайте команду:
telnet smtp.gmail.com 25
Якщо з'єднання успішне, ви побачите такий вивід:
Спроба з’єднання з 2a00:1450:4010:c0b::6c...
З’єднано з smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP j6-20020ac25506000000b004b53eb60e3csm1066162lfk.256 - gsmtp
Зверніть увагу, що якщо ви використовуєте хмарний хостинг і порт 25 для свого SMTP-сервера, велика ймовірність, що ваш хостинг-провайдер за замовчуванням блокує вихідні з'єднання на порту 25. Нижче ви можете переглянути посилання з інструкціями щодо вирішення цієї проблеми:
- AWS: Як зняти обмеження на порт 25 з мого екземпляра Amazon EC2 або функції AWS Lambda?
- Azure: Усунення проблем із вихідним підключенням SMTP в Azure
- GCP: Надсилання електронної пошти з екземпляра
- DigitalOcean: Чому SMTP заблоковано?
Окрім блокування портів вашим хостинг-провайдером, потрібно перевірити, чи не закриті порти на вашому сервері. Розглянемо для прикладу iptables, який працює як брандмауер, у панелі керування FASTPANEL. Команда для перевірки наявності правила для певного порту, у цьому випадку 25, така:
iptables-save | grep 25
Якщо для порту, який ви хочете перевірити, немає правила, жодної інформації не буде виведено. Якщо ви бачите, що існує правило, яке блокує порт поштового сервісу, тоді потрібно видалити це правило командою:
iptables -D rule chain
Наприклад, ви виконали команду та виявили таке:
iptables-save | grep 25
-A INPUT -p tcp -m tcp --dport 25 -j DROP
Це правило не дозв оляє жодного доступу до вашого сервера через порт 25, що перешкоджатиме надсиланню пошти
Щоб видалити правило, використайте команду:
iptables -D INPUT -p tcp -m tcp --dport 25 -j DROP
Цей приклад команди дає змогу перевірити кожен порт, що використовується для надсилання пошти
Вплив IPv6 на надсилання пошти
Якщо вам потрібно використовувати ipv6 для поштових сервісів, перше, що потрібно зробити, — перевірити, чи існує PTR-запис для ipv6 і чи прослуховують поштові сервіси ipv6 на певних портах.
Ви можете виконати перевірку за допомогою команди:
netstat -nltpp | grep tcp6
Результатом виводу цієї команди буде список усіх сервісів, які використовують ipv6, серед яких ви вже зможете перевірити, чи використовує вашу адресу поштовий сервіс. На жаль, сьогодні використання ipv6 може працювати некоректно, навіть якщо ви виконали всі налаштування правильно.
Якщо, перевіривши журнали поштового сервісу, ви з'ясували, що помилка пов'язана з ipv6 і вся конфігурація правильна, ви можете вимкнути використання ipv6 для поштового сервісу.
На прикладі exim4 вимкнення ipv6 виглядає так:
-
Перевірте, чи використовується для сервісу адреса ipv6, командою
netstat -nltp | grep exim
-
У конфігураційному файлі
/etc/exim4/exim4.conf.templateу самий верх файлу потрібно додати такий рядок:disable_ipv6=true
-
Збережіть зміни у файлі, а потім перезапустіть сервіс командою на кшталт:
systemctl restart exim4 -
Виконайте команду:
netstat -nltp | grep eximщоб перевірити, чи сервісу більше немає у списку
Перевірка надсилання пошти за допомогою сторонніх сервісів
Після того як ви перевірили всі наведені вище пункти, ви можете перевірити надсилання пошти з вашого сервера за допомогою сторонніх ресурсів.
Одним із найзручніших та найінформативніших сервісів є https://www.mail-tester.com
За його допомогою ви можете перевірити поточний рейтинг вашої пошти, отримати інформацію про те, чи правильні наведені вище дані, а також отримати рекомендації щодо покращення рейтингу.
Для цього просто надішліть електронний лист на адресу, зазначену на сайті, а потім натисніть "Then check your score".
