Полный Гайд по Настройке SMTP: Порты, Аутентификация и Настройка Почтового Сервера

Иллюстрация кибербезопасности: аутентификация, защищённый сервер со щитом и замком, серверные порты на тёмно-синем фоне

Настройка SMTP — это процесс конфигурации почтового сервера или почтового клиента для корректной отправки сообщений через протокол Simple Mail Transfer Protocol. Если всё сделать правильно, письма попадут в папку входящих. Если допустить ошибку, вы столкнётесь с отказами в доставке, ошибками аутентификации или письмами, тихо оказывающимися в спаме. Три ключевых момента, которые нужно всегда соблюдать правильно: выбрать нужный порт, использовать правильный метод шифрования и настроить рабочие учётные данные.

Что на самом деле делает SMTP

SMTP — это протокол, который использует ваш почтовый клиент или приложение для передачи исходящих сообщений на почтовый сервер, который затем маршрутизирует их к получателю. Он отвечает только за отправку. Получение писем обрабатывается отдельными протоколами: IMAP (для синхронизации) или POP3 (для загрузки).

Когда вы нажимаете «Отправить», ваш клиент открывает TCP-соединение с SMTP-сервером, проходит аутентификацию, передаёт сообщение и разрывает соединение. Сервер затем пытается доставить письмо на почтовый сервер получателя, используя тот же протокол и ища MX-запись (Mail Exchange) в DNS получателя, чтобы узнать, куда отправить письмо.

SMTP определён в RFC 5321 , который заменил исходный RFC 2821. Понимание спецификации помогает при отладке сырых SMTP-диалогов или конфигурации сервера с нуля.

Порты SMTP объяснены: 25, 465 и 587

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

Порт Название Шифрование Типичное использование
25 SMTP Отсутствует (или STARTTLS) Ретрансляция сервер-сервер (MTA к MTA)
465 SMTPS Неявный SSL/TLS Отправка от клиента (старые приложения)
587 Submission STARTTLS (явный TLS) Аутентифицированная отправка от клиента

Порт 25 против 587: какой выбрать?

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

Порт 587 — правильный выбор для отправки писем от клиента или приложения. Он был стандартизирован в RFC 6409 как выделенный порт для отправки сообщений. Он требует STARTTLS, что означает, что соединение начинается без шифрования, а затем переходит в TLS перед отправкой любых учётных данных. Именно это ожидают Gmail, Outlook и практически все современные почтовые сервисы.

Никогда не отправляйте учётные данные по незащищённому соединению. Если SMTP-клиент переходит на простой текст при неудаче STARTTLS, он передаст ваше имя пользователя и пароль в открытом виде. Всегда настраивайте клиент на требование TLS и отклонение соединения, если шифрование не может быть установлено.

SMTP порт 465: наследие SSL

Порт 465 имеет необычную историю. Он был кратко назначен SMTPS (SMTP через SSL) в 1997 году, а затем это назначение было отозвано в 1998 году, когда STARTTLS на порту 587 стал предпочтительным подходом. Несмотря на официальное снятие с производства, многие почтовые серверы продолжили его поддерживать, и позже он был переназначен IANA для другой цели.

На практике большинство провайдеров по-прежнему принимают соединения на порту 465, используя неявный SSL/TLS. Это означает, что TLS обёртывает всё соединение с самого первого байта, вместо того чтобы переходить в процессе рукопожатия, как STARTTLS. Некоторые старые приложения и устройства (определённые сетевые принтеры, устаревшие CRM-системы) поддерживают только порт 465, поэтому он остаётся полезным в этих случаях.

  • Используйте порт 465, если ваше приложение или устройство специально требует неявный SSL и не может работать с STARTTLS.
  • Используйте порт 587 для всего остального. Это современный стандарт.
  • Полностью избегайте порта 25 для отправки от клиента.

Аутентификация SMTP: как это работает

Аутентификация SMTP (часто пишется как SMTP AUTH) определена в RFC 4954 . Она требует, чтобы клиент доказал свою личность перед тем, как сервер примет исходящее письмо. Без неё любой, кто мог бы достичь вашего сервера, мог бы использовать его для отправки спама, поэтому открытые relay-серверы считаются серьёзной проблемой безопасности.

Наиболее распространённые механизмы аутентификации, которые вы встретите в конфигурации SMTP:

  • PLAIN: Отправляет имя пользователя и пароль в кодировке base64. Безопасно только через защищённое соединение (TLS должен быть активен в первую очередь).
  • LOGIN: Похож на PLAIN, но отправляет имя пользователя и пароль как отдельные обмены. Также требует TLS.
  • CRAM-MD5: Механизм типа вызов-ответ, который избегает прямой отправки пароля. Менее распространён на современных серверах.
  • XOAUTH2: Используется Gmail и другими учётными записями Google Workspace. Вместо пароля вы предоставляете токен доступа OAuth 2.0. Это то, что вам нужно, когда отключен доступ для менее безопасных приложений.
Пароли приложений против вашего основного пароля: Gmail, Outlook и Yahoo все поддерживают пароли для конкретных приложений для SMTP-клиентов, которые не поддерживают OAuth. Создайте его в параметрах безопасности вашей учётной записи и используйте его вместо реального пароля. Его можно отозвать независимо без изменения ваших основных учётных данных.

Настройка почтового сервера пошагово

Независимо от того, настраиваете ли вы почтовый клиент вроде Thunderbird, веб-приложение, отправляющее транзакционные письма, или самостоятельный почтовый сервер, процесс следует одной и той же логической последовательности.

Для почтовых клиентов и приложений

  1. Получите имя хоста SMTP от вашего провайдера. Примеры: smtp.gmail.com , smtp.office365.com , mail.yourdomain.com .
  2. Выберите правильный порт. Используйте 587 с STARTTLS в качестве стандарта. Отступите на 465 с SSL только если ваше приложение это требует.
  3. Введите учётные данные аутентификации. Обычно это ваш полный адрес электронной почты в качестве имени пользователя плюс пароль или пароль приложения.
  4. Установите метод шифрования. Согласуйте его с портом: STARTTLS для 587, SSL/TLS для 465.
  5. Протестируйте соединение. Большинство почтовых клиентов имеют кнопку «Проверить параметры учётной записи» или «Проверить». Используйте её перед сохранением.

Для самостоятельного почтового сервера (пример Postfix)

Если вы запускаете собственный сервер с Postfix, основная конфигурация SMTP находится в /etc/postfix/main.cf . Вот минимальный рабочий пример для сервера, который ретранслирует через провайдера SMTP третьей стороны:

# /etc/postfix/main.cf - Basic relay configuration

relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes

После редактирования создайте /etc/postfix/sasl_passwd с вашими учётными данными, запустите postmap /etc/postfix/sasl_passwd для хеширования, затем перезагрузите Postfix с помощью systemctl reload postfix .

Сразу же защитите sasl_passwd. Запустите chmod 600 /etc/postfix/sasl_passwd и chmod 600 /etc/postfix/sasl_passwd.db после создания файла. Читаемые файлы с учётными данными — это частая ошибка конфигурации сервера.

Типичные параметры SMTP для популярных сервисов

Сервис SMTP хост Порт Шифрование Примечание по аутентификации
Gmail smtp.gmail.com 587 STARTTLS Используйте пароль приложения или OAuth2
Gmail (альт) smtp.gmail.com 465 SSL/TLS Используйте пароль приложения или OAuth2
Microsoft 365 smtp.office365.com 587 STARTTLS Modern Auth / пароль приложения
Yahoo Mail smtp.mail.yahoo.com 465 SSL/TLS Требуется пароль приложения
Zoho Mail smtp.zoho.com 587 STARTTLS Полный адрес электронной почты как имя пользователя
Amazon SES email-smtp.us-east-1.amazonaws.com 587 STARTTLS Учётные данные SMTP IAM

Решение проблем с подключением SMTP

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

Вы можете проверить, открыт ли порт SMTP на вашем почтовом сервере, используя бесплатный онлайн-инструмент для проверки портов. Введите имя хоста или IP-адрес вашего почтового сервера, выберите порт 25, 465 или 587 и запустите тест. Если результат показывает закрытый порт или timeout, проблема находится на уровне сети (брандмауэр, блокировка интернет-провайдером или сервис не работает), а не в конфигурации внутри вашего приложения.

Распространённые сообщения об ошибках и их значение

  • Connection refused / Connection timed out: Порт заблокирован или сервис не прослушивается. Проверьте правила брандмауэра и убедитесь, что daemon SMTP работает.
  • 535 Authentication failed: Неправильное имя пользователя или пароль. Для Gmail это обычно означает, что вам нужен пароль приложения, а не пароль учётной записи.
  • 550 5.7.1 Relay access denied: Ваш сервер не настроен на ретрансляцию писем для этого адреса отправителя, или аутентификация не произошла перед командой MAIL FROM.
  • 421 Too many connections: Принимающий сервер вас ограничивает. Уменьшите частоту отправки или реализуйте очередь с задержками.
  • TLS handshake failed: Несоответствие сертификата или устаревшая версия TLS. Проверьте, что SSL-сертификат вашего сервера действителен и что вы не пытаетесь использовать TLS 1.0 или 1.1, которые большинство провайдеров отключили.

Быстрый диагностический чек-лист

  1. Подтвердите, что порт SMTP открыт и доступен из вашей среды отправки.
  2. Проверьте, что имя хоста правильно разрешается с помощью nslookup smtp.yourdomain.com .
  3. Проверьте, что ваш IP-адрес отправителя не в чёрном списке, используя инструмент вроде MXToolbox Blacklist Check .
  4. Подтвердите, что ваши DNS-записи SPF, DKIM и DMARC опубликованы правильно. Отсутствующие или сломанные записи приводят к отклонению или спаму легитимных писем.
  5. Просмотрите логи вашего почтового сервера. Для Postfix проверьте /var/log/mail.log . Фактические коды ответов SMTP в логе точно скажут вам, что отклонил удалённый сервер и почему.
SPF, DKIM и DMARC так же важны, как и ваши параметры SMTP. Даже идеально настроенный SMTP-сервер будет иметь проблемы с доставкой, если эти DNS-записи отсутствуют. SPF сообщает принимающим серверам, какие IP-адреса разрешены для отправки от вашего домена. DKIM добавляет криптографическую подпись к исходящим сообщениям. DMARC сообщает получателям, что делать, если любая из этих проверок не пройдена.
Онлайн инструмент проверки портов, проверяющий статус SMTP-порта для настройки почтового сервера

Действительно ли открыт ваш SMTP-порт?

Перед тем как винить настройку SMTP, убедитесь, что проблема не в заблокированном порте. Наш бесплатный инструмент для проверки портов позволяет вам тестировать порт 25, 465 или 587 на любом почтовом сервере мгновенно, так что вы узнаете, имеете ли вы дело с проблемой брандмауэра или ошибкой конфигурации.

Проверьте ваш SMTP-порт сейчас →

Порт 465 использует неявный SSL/TLS, что означает, что всё соединение зашифровано с самого начала. Порт 587 использует STARTTLS, который начинается как обычное соединение, а затем переходит в TLS перед отправкой учётных данных. Оба безопасны при правильной конфигурации, но порт 587 — это современный стандарт, рекомендуемый для отправки писем от клиента. Используйте 465 только если ваше приложение специально требует неявный SSL и не может поддерживать STARTTLS.

Порт 25 блокируется на большинстве жилых и общих хостингов, потому что он исторически использовался для отправки спама прямо с скомпрометированных машин. Блокируя исходящий трафик на порт 25, интернет-провайдеры и облачные провайдеры (включая AWS EC2 по умолчанию) предотвращают использование их IP-диапазонов как источников спама. Для отправки писем из приложений используйте порт 587. Если вы запускаете легитимный почтовый сервер, которому нужна открытость порта 25 для ретрансляции сервер-сервер, вам обычно нужно запросить отмену блокировки у вашего провайдера.

В большинстве случаев ваше имя пользователя SMTP — это ваш полный адрес электронной почты, например you@yourdomain.com . Некоторые старые системы используют только локальную часть перед символом @. Для сервисов вроде Amazon SES имя пользователя — это отдельные учётные данные SMTP, сгенерированные IAM, а не ваш адрес электронной почты. Всегда проверяйте документацию вашего конкретного провайдера. При использовании Gmail или Outlook с включённой двухфакторной аутентификацией вам нужно создать пароль для конкретного приложения, а не использовать обычный пароль учётной записи.

Вы можете тестировать на нескольких уровнях. Сначала проверьте, что порт SMTP доступен, используя инструмент для проверки портов или запустив telnet smtp.yourdomain.com 587 с вашего сервера. Если порт открыт, вы можете протестировать полное SMTP-рукопожатие, используя openssl s_client -starttls smtp -connect smtp.yourdomain.com:587 , который показывает SSL-сертификат и позволяет вам вводить сырые SMTP-команды. Для полного сквозного теста без доставки в реальный inbox используйте сервис вроде Mailtrap, который принимает SMTP-соединения и показывает вам сообщение без его пересылки.

Успешная аутентификация SMTP только доказывает, что вам разрешено использовать сервер. Фильтрация спама происходит отдельно на принимающей стороне и основана на комбинации факторов: находится ли ваш IP-адрес отправителя в чёрном списке, авторизует ли ваша SPF-запись этот IP на отправку от вашего домена, действительна ли ваша DKIM-подпись и соответствует ли она вашей DNS-записи, опубликована ли ваша политика DMARC. Отсутствующая или сломанная SPF-запись сама по себе достаточна, чтобы Gmail или Outlook отправили ваши письма в спам. Проверьте все три DNS-записи и проверьте репутацию вашего IP-адреса отправителя.

Да, но с ограничениями. SMTP-сервер Gmail ( smtp.gmail.com на порту 587) будет отправлять письма, аутентифицированные как ваша учётная запись Gmail. Если вы хотите, чтобы адрес «От» показывал ваш пользовательский домен, вам нужно добавить этот адрес в параметры Gmail в разделе «Отправлять письма как» и проверить владение. Однако Gmail добавляет примечание «отправлено через gmail.com», видимое в некоторых почтовых клиентах. Для более чистой настройки с вашим собственным доменом использование провайдера транзакционной почты вроде Amazon SES или выделенного SMTP relay — лучший долгосрочный выбор.