
Как настроить служебную почту WordPress через SMTP
Подключаем внешний SMTP, отделяем адрес отправителя от администратора, настраиваем DNS-аутентификацию и проверяем доставку по всей цепочке.
Содержание
WordPress формирует письмо, но доставляет его отдельная почтовая система. Успешная отправка формы не доказывает, что сообщение принято SMTP-сервером, прошло проверки домена и появилось во входящих. Поэтому настройку нужно проверять от вызова wp_mail() до заголовков полученного письма.
Для небольшого VPS удобнее внешний транзакционный SMTP: он принимает сообщение после аутентификации и отвечает за дальнейшую доставку. Выбор конкретного сервиса зависит от страны, объёма, типа писем и требований к данным; не переносите чужие лимиты и тарифы в свою схему.
Отделите технический адрес от учётной записи владельца
Создайте адрес вида notify@example.com или поддомен для транзакционных писем. Он не должен совпадать с личным ящиком администратора. Заранее решите, куда попадут ответы и возвраты недоставленных сообщений.
У провайдера получите SMTP hostname, порт, требование TLS, логин и отдельный пароль приложения или API credential. Не используйте основной пароль от панели. Сохраните реквизиты в менеджере секретов и запишите процедуру отзыва.
Настройте DNS по инструкции отправителя
Обычно провайдер просит добавить SPF, DKIM и иногда DMARC. SPF сообщает, какие источники могут отправлять от имени домена. DKIM добавляет криптографическую подпись, которую получатель проверяет по публичному ключу DNS. DMARC задаёт политику для писем, не прошедших согласование SPF/DKIM, и адрес отчётов.
Не склеивайте две SPF-записи: у домена должна быть одна итоговая политика. Точные значения и selector DKIM выдаёт почтовый сервис. После публикации проверьте DNS командами, заменив домен и selector:
dig +short TXT example.com
dig +short TXT selector._domainkey.example.com
dig +short TXT _dmarc.example.com
Ожидайте записи, совпадающие с панелью провайдера. Пустой ответ может означать неверное имя, ещё не завершившееся обновление DNS или публикацию в другой зоне. Не копируйте значение DKIM из чужого домена.
Начинайте DMARC с режима наблюдения, если домен уже отправляет почту из нескольких систем и вы не составили полный список. Более строгую политику включают после изучения отчётов и подтверждения всех законных источников.
Подключите SMTP в WordPress
Выберите поддерживаемый SMTP-плагин из проверенного источника и сначала установите его на staging. Нужны принудительный адрес From, TLS, скрытое хранение credential, тестовая отправка и понятный журнал без тела письма и пароля.
Введите hostname и порт ровно из документации сервиса. Параметры «TLS» и «SSL» в интерфейсах плагинов могут обозначать разные режимы: явный STARTTLS после соединения или TLS с первого байта. Не перебирайте варианты на production — проверьте их по инструкции провайдера.
Пароль не должен попадать в экспорт настроек, репозиторий или скриншот. Если плагин поддерживает константы или переменные окружения, храните в базе только несекретные параметры, а credential передавайте процессом развёртывания.
Проверьте сетевое соединение без отправки пароля
С VPS можно убедиться, что имя разрешается и TCP/TLS-соединение доступно. Следующая команда проверяет TLS с первого байта на примере порта 465; hostname и порт возьмите у своего провайдера:
openssl s_client \
-connect smtp.example-provider.test:465 \
-servername smtp.example-provider.test \
-verify_return_error </dev/null
Ожидайте успешную проверку цепочки сертификатов и имя, соответствующее SMTP hostname. Суффикс .test намеренно не работает — замените его реальным адресом. Не вводите SMTP-пароль в диагностический сеанс и не отключайте проверку сертификата для обхода ошибки.
Если соединение не устанавливается, проверьте DNS, исходящий firewall и ограничения хостера. Открывать входящий SMTP-порт на VPS для внешнего relay не требуется.
Проведите тест всей цепочки
Отправьте отдельное сообщение из SMTP-плагина на ящики как минимум двух разных почтовых систем. Используйте уникальную тему с временем теста, но без персональных данных. Затем сопоставьте:
- результат WordPress;
- запись в журнале SMTP-провайдера;
- статус accepted, deferred, bounced или delivered;
- фактическую папку получателя;
- заголовки Authentication-Results.
Статус accepted означает приём relay, а не гарантированное появление во входящих. bounced требует прочитать код и причину отказа. Не отправляйте новые попытки каждую секунду: это создаёт дубли и ухудшает репутацию.
Разделите типы писем и обработку ошибок
Сброс пароля и подтверждение заказа важнее рекламной рассылки. Не отправляйте массовый маркетинг тем же потоком без согласия получателей и отдельной политики. Ограничьте частоту форм, чтобы злоумышленник не использовал сайт как генератор писем.
Настройте уведомление об исчерпании квоты, ошибке аутентификации и росте bounce rate. Журнал не должен содержать пароль, полный токен или тело сообщения с персональными данными. Срок хранения определяйте по реальной задаче диагностики.
Подготовьте замену и откат
Если пароль SMTP раскрыт, отзовите его в панели сервиса, выпустите новый и обновите секрет WordPress. После этого отправьте тест и убедитесь, что старый credential больше не работает.
При проблеме после смены плагина верните прежнюю конфигурацию только вместе с действующим credential. Временный переход на локальную mail() не является равнозначным откатом: меняются маршрут, репутация и наблюдаемость.
Фоновые письма зависят от системного расписания WordPress, а сам SMTP-плагин следует выбирать по проверочному списку расширений.
Источники
Самопроверка
Проверьте, что материал усвоен
Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.
Разбираем коротко
Частые вопросы
Почему функция wp_mail вернула true, а письмо не пришло?
True означает, что WordPress передал сообщение почтовому механизму без немедленной ошибки. Это не подтверждает приём SMTP-сервером, прохождение антиспама или доставку в ящик.
Можно ли отправлять почту напрямую с VPS?
Технически возможно, но потребуется репутация IP, корректный PTR, защита очереди и постоянный контроль доставки. Для небольшого сайта внешний транзакционный SMTP обычно проще сопровождать.
Нужно ли публиковать пароль SMTP в wp-config.php?
Нет публично и не в Git. Храните его как отдельный секрет с ограниченными правами; конкретный способ зависит от SMTP-плагина и процесса развёртывания.


