Сначала отделите ошибку формы от ошибки почты
Форма должна зафиксировать заявку независимо от того, удалось ли отправить уведомление. В логах полезно иметь два отдельных результата: заявка сохранена и SMTP accepted.
Где искать проблему
| Симптом | Проверка |
|---|---|
| Форма 500 | PHP/backend log |
| Форма success, SMTP connection error | host/port/TLS/firewall |
| SMTP 535 | логин/пароль/метод auth |
| SMTP accepted, Gmail не видит письмо | SPF/DKIM/DMARC/PTR/reputation/spam |
| одит только на часть доменов | DNS/authentication/policy receiving side |
Проверить DNS домена
dig +short MX example.com
dig +short TXT example.com
dig +short TXT _dmarc.example.com
# selector замените на реальный:
dig +short TXT selector1._domainkey.example.comSPF, DKIM и DMARC решают разные задачи
- SPF сообщает, какие серверы могут отправлять почту от домена;
- DKIM подписывает сообщение ключом домена;
- DMARC задаёт политику и проверяет alignment домена From с SPF/DKIM.
Для стабильной доставки лучше настраивать все три механизма, а не ограничиваться SPF.
Проверьте From, Return-Path и PTR
Частая ошибка сайта — отправка письма с адресом посетителя в поле From. Лучше использовать адрес собственного домена, а email клиента передавать в Reply-To. Для собственного SMTP важен корректный PTR/reverse DNS.
Проверить соединение с SMTP без отправки пароля
openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com
# Закройте соединение:
QUITЧто записывать в лог приложения
Не логируйте пароль SMTP. Сохраняйте timestamp, message-id, адрес получателя, SMTP host, код ответа и краткий текст ошибки. Этого обычно достаточно, чтобы понять, где остановилась доставка.
Скачать набор диагностики
Связанные инструкции
Как различить сбой SMTP и проблемы доставки
Сначала проверьте, формирует ли сайт письмо и получил ли SMTP-сервер команду отправки. Успешный SMTP-ответ означает принятие сервером, но не гарантирует появление сообщения во «Входящих». Далее изучите bounce-уведомления и логи, корректность SPF, DKIM, DMARC, выравнивание домена From и репутацию отправителя.
Для форм заявок полезно хранить отдельный идентификатор заявки, чтобы не потерять обращение при задержке доставки. Не публикуйте пароли SMTP и токены в диагностических скриншотах.