Перейти к основному содержимому

Чек-лист для успешной отправки почты и проверки доставки

Для дальнейших проверок потребуется следующее программное обеспечение:

  • Утилита host

    • Debian/Ubuntu: apt-get install bind9-host
    • CentOS: yum install bind9-host
  • Утилита telnet

    • Debian/Ubuntu: apt-get install telnet
    • CentOS: yum install telnet

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" напротив нужного почтового домена

Включение DKIM в FASTPANEL

Со стороны 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.
Символ экранирования: '^]'.

Если соединение не удалось, вывод будет выглядеть так:

Подключение к 1.2.3.4 ...
Не удалось открыть подключение к хосту на порту some_port: ошибка подключения

Или:

telnet: Не удается подключиться к удаленному хосту: время ожидания подключения истекло

Для исходящего соединения

На вашем сервере выполните команду:

telnet smtp.gmail.com 25

Если соединение успешно, вы увидите вывод вида:

Попытка подключения к 2a00:1450:4010:c0b::6c...
Подключено к smtp.gmail.com.
Символ экранирования: '^]'.
220 smtp.gmail.com ESMTP j6-20020ac25506000000b004b53eb60e3csm1066162lfk.256 - gsmtp

Обратите внимание, что если вы используете облачный хостинг и применяете порт 25 для своего SMTP-сервера, есть вероятность, что ваш хостинг-провайдер по умолчанию блокирует исходящие соединения на порту 25. Ниже вы можете увидеть ссылки с инструкциями о том, как решить эту проблему:

Помимо блокировки портов вашим хостинг-провайдером, необходимо проверить, закрыты ли порты на вашем сервере. В качестве примера возьмём 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 выглядит следующим образом:

  1. Проверьте, используется ли адрес ipv6 сервисом, с помощью команды

    netstat -nltp | grep exim

    Проверьте, используется ли адрес ipv6 в exim

  2. В конфигурационный файл /etc/exim4/exim4.conf.template необходимо добавить следующую строку в самое начало файла:

    disable_ipv6=true

  3. Сохраните изменения в файле, а затем перезапустите сервис командой, например:

    systemctl restart exim4
  4. Выполните команду:

    netstat -nltp | grep exim

    чтобы проверить, что сервиса больше нет в списке

    Проверьте, отключен ли ipv6 для exim

Проверка отправки почты с помощью сторонних сервисов

После того как вы проверили все вышеперечисленные пункты, вы можете проверить отправку почты с вашего сервера с помощью сторонних ресурсов.

Одним из самых удобных и информативных сервисов является https://www.mail-tester.com

С его помощью вы можете проверить текущий рейтинг вашей почты, получить информацию о том, корректны ли указанные выше данные, а также получить рекомендации по улучшению рейтинга.

Для этого просто отправьте письмо на адрес, указанный на сайте, а затем нажмите "Then check your score".

Проверьте вашу почту с помощью mail-tester