Влияет ли MX запись на отправку писем через SMTP?

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

    Как работает отправка писем через SMTP-релей

    При отправке письма с вашего сайта (например, через PHP-функцию mail() или SMTP-клиент) скрипт подключается к внешнему SMTP-серверу (релею). Этот сервер аутентифицирует вас, принимает письмо и доставляет его получателю. При этом MX-запись вашего домена не участвует в маршрутизации исходящей почты - она нужна только для входящей почты, когда кто-то пишет вам на адрес @вашдомен.ру.

    Почему хостинг советует менять MX-запись?

    Есть два сценария, когда изменение MX-записи может быть оправдано:

    • Перехват входящей почты: Если ваш сайт отправляет письма с адреса отправителя @вашдомен.ру, но MX-запись указывает на ваш хостинг, а не на SMTP-релей, то письма, отправленные с ошибкой (например, если SMTP-релей не справился), могут уйти на локальный Exim-сервер хостинга. Хостинг предлагает перенаправить MX на релей, чтобы вся почта шла через него.
    • DNSSEC и проверки SPF/DKIM: Некоторые SMTP-провайдеры требуют, чтобы MX-запись домена совпадала с их серверами, иначе они отклоняют письма или выдают ошибки сертификата (как у вас). Это нестандартная практика, но встречается у мелких релеев.

    Почему возникают ошибки сертификата и сброс портов

    Ошибка «по сертификату» при подключении к Exim на хостинге - типичный признак того, что ваш скрипт пытается отправить письмо локально (на localhost или на IP хостинга), а не через удалённый SMTP-релей. Причины:

    • Неправильные настройки SMTP в скрипте (например, указан порт 587, но хост - localhost, а не адрес релея).
    • Блокировка порта 587 провайдером или хостингом - в таком случае используйте порт 465 (SSL) или 2525 (альтернативный).
    • Проблемы с цепочкой сертификатов на стороне хостинга - если вы подключаетесь к Exim, а не к релею, сертификат может быть самоподписанным или невалидным для вашего домена.

    Как правильно настроить отправку писем

    Чтобы избежать проблем, следуйте этому алгоритму:

    1. Проверьте настройки SMTP в коде: Убедитесь, что хост - это адрес вашего SMTP-релея (например, smtp.yandex.ru или smtp.sendgrid.net), а не localhost или IP хостинга.
    2. Выберите правильный порт: 587 (STARTTLS) - стандарт, 465 (SSL) - для старых систем, 2525 - если 587 заблокирован. Уточните у провайдера SMTP, какие порты разрешены.
    3. Настройте SPF и DKIM: Добавьте SPF-запись, разрешающую отправку с серверов релея, и подпишите письма DKIM-ключом. Это снизит риск попадания в спам.
    4. Игнорируйте совет про MX-запись, если он не подкреплён документацией: MX-запись не влияет на отправку. Если поддержка настаивает, попросите объяснить, как именно это решит вашу ошибку сертификата.

    Что делать, если порт 587 снова «отвалился»

    Если порт 587 перестал работать, проверьте логи на стороне хостинга - возможно, они блокируют исходящие соединения на этот порт из-за спама. Решение: используйте порт 465 с SSL-шифрованием или обратитесь к поддержке хостинга с просьбой разблокировать порт. Также убедитесь, что ваш SMTP-релей не изменил настройки - иногда провайдеры обновляют сертификаты или порты.

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

    Часто задаваемые вопросы