HELPER VPS

Отправка почты с VPS: подключение SMTP сервиса через порты 587 и 465

На всех серверах HELPER VPS исходящий порт 25 закрыт для защиты от спама, и благодаря этому репутация IP всех серверов в общей сети остаётся чистой. Если отправлять почту через порт 587 или 465 сервиса отправки, письма лучше доходят до папки «Входящие».

Почему отправлять через порты 587 и 465

Порт 25 служит для передачи почты между почтовыми серверами. Если отправлять письма с сервера прямо на почтовый сервер получателя, придётся самим следить за репутацией IP, обратной DNS записью и объёмами отправки, а письма с IP нового сервера легко попадают в спам.

Порты 587 и 465 это порты отправки, через которые авторизованный пользователь передаёт почту. Вы входите в сервис отправки почты по логину и паролю и передаёте ему письма, а его серверы с управляемой репутацией доставляют их за вас. Это самый надёжный способ, чтобы письма о регистрации, восстановлении пароля и заказах доходили до папки «Входящие».

  • Порт 587: соединение открывается без шифрования, а затем шифрование включается через STARTTLS. Этот порт по умолчанию используют большинство сервисов и программ.
  • Порт 465: соединение с самого начала шифруется через TLS. В настройках он часто обозначен как SSL или SSL/TLS.

Как выбрать сервис отправки почты

Сервисы отправки почты бывают двух основных видов. Первый это сервисы транзакционной почты для массовой отправки уведомлений сайтов и приложений, второй это функция SMTP в рабочей или личной почте, которой вы уже пользуетесь. В любом случае, получив четыре параметра ниже, вы готовы к настройке.

  • Адрес SMTP сервера: например, smtp.example.com
  • Порт: 587 (STARTTLS) или 465 (SSL/TLS)
  • Имя пользователя: логин или адрес почты, выданный сервисом
  • Пароль: отдельный пароль SMTP или ключ API сервиса

Интернет-магазинам и сервисам с большим объёмом рассылки удобнее транзакционная почта: она ведёт журнал отправок, обрабатывает возвраты и отписки. Для нескольких уведомлений хватит и SMTP почтового аккаунта.

Проверка SMTP подключения с сервера

Перед настройкой проверьте, что сервер может подключиться к сервису отправки. Команды ниже только проверяют соединение и не отправляют письма.

Терминал
nc -vz smtp.example.com 587
openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -quiet
openssl s_client -connect smtp.example.com:465 -crlf -quiet

Если первая строка показывает succeeded или open, а команда openssl выводит приветствие сервера, начинающееся с 220, всё готово. Выход по Ctrl+C. Если команды nc нет, установите её: в Ubuntu и Debian apt install -y netcat-openbsd, в AlmaLinux dnf install -y nmap-ncat.

Подключение Postfix к сервису отправки

Чтобы собрать в одном месте почту от программ на сервере, уведомлений cron и команды mail, настройте Postfix как ретранслятор, передающий письма сервису отправки. Вся почта с сервера будет уходить через порт 587 с авторизацией.

Шаг 1. Установка

Ubuntu, Debian
apt install -y postfix libsasl2-modules mailutils

Если при установке спросят тип настройки почты, выберите Internet Site, а в качестве почтового имени укажите свой домен. В AlmaLinux 10 установите командой dnf install -y postfix cyrus-sasl-plain s-nail и включите командой systemctl enable --now postfix.

Шаг 2. Настройка ретрансляции

Терминал
postconf -e 'relayhost = [smtp.example.com]:587'
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'smtp_tls_security_level = encrypt'
postconf -e 'inet_interfaces = loopback-only'

inet_interfaces = loopback-only принимает только письма, отправленные с самого сервера, поэтому извне этот сервер нельзя использовать как почтовый ретранслятор.

Шаг 3. Сохраните данные для входа

Терминал
echo '[smtp.example.com]:587 SMTP_USER:SMTP_PASSWORD' > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
systemctl restart postfix

Если сервис работает через порт 465, замените порт в relayhost и sasl_passwd на 465 и добавьте строку postconf -e 'smtp_tls_wrappermode = yes'.

Шаг 4. Тестовая отправка и проверка логов

Терминал
echo "VPS mail test" | mail -s "Test from VPS" you@example.com
postqueue -p
journalctl -t postfix/smtp -n 20

Если в логе видно status=sent, сервис отправки принял письмо. postqueue -p показывает письма, которые ещё не ушли. Если вы исправили данные для входа, выполните systemctl restart postfix, а затем отправьте их повторно командой postqueue -f.

Настройка SMTP в WordPress и приложениях

У большинства сайтов и приложений есть поля настройки SMTP, поэтому их можно подключить прямо к сервису отправки, без Postfix на сервере. В WordPress установите SMTP плагин и укажите значения ниже, и письма о регистрации и восстановлении пароля будут уходить через этот сервис.

  • SMTP хост: адрес сервиса отправки
  • Шифрование: TLS (STARTTLS) для порта 587, SSL для порта 465
  • Порт: 587 или 465
  • Авторизация: включить, указать имя пользователя и пароль
  • Адрес отправителя: адрес на вашем домене (например, no-reply@example.com)

Приложения на Node.js, PHP и Python настраиваются с теми же значениями в почтовой библиотеке. Не прописывайте пароль прямо в коде, а храните его в переменной окружения или файле настроек. Установка WordPress описана в руководстве по установке WordPress.

Записи SPF, DKIM и DMARC в DNS домена

Почтовый сервер получателя по DNS записям проверяет, действительно ли письмо пришло из места, разрешённого вашим доменом. Если добавить три записи, письма будут гораздо чаще попадать во «Входящие».

  • SPF: список серверов, которым разрешено отправлять почту от вашего домена. Добавьте значение include, которое даёт сервис отправки, в одну TXT запись.
  • DKIM: электронная подпись письма. Добавьте TXT или CNAME запись, которую создаёт сервис отправки, без изменений.
  • DMARC: определяет, что делать с письмами, не прошедшими проверку SPF и DKIM. Для начала используйте настройку, которая только присылает отчёты, как ниже.
DNS TXT
_dmarc.example.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

Когда за несколько недель по отчётам станет видно, что все письма проходят проверку, поднимите политику до p=quarantine, а затем до p=reject, чтобы защитить домен от подделки.

Получение почты и следующие шаги

Чтобы получать письма на свой домен, добавьте в домен MX записи сервиса почтового хостинга. Если входящую почту ведёт почтовый хостинг, а исходящие уведомления сервис отправки, сервер может заниматься только сайтами и приложениями.

Отправка через сервис продолжает работать и при переносе или создании нового сервера: достаточно перенести несколько строк настроек. Даже если IP сервера меняется, репутация отправки остаётся у сервиса, поэтому доставляемость не страдает и при переезде сайта в другой регион.

Другие порты открывайте свободно под нужды своего сервиса. Как открыть только нужные порты, описано в руководстве по базовому файрволу, правила использования серверов в политике использования.

Полезные руководства по теме

Настройки, которые стоит сделать вслед за этим руководством.

Все руководства