Resend
Коротко: Сервис для отправки транзакционных писем (подтверждения, сброс паролей, рассылки) с вашего собственного домена.
Подробнее: Чтобы письма не попадали в спам и распознавались как «действительно» пришедшие с вашего домена, нужно задать определённые записи DNS — в том числе запись DKIM (цифровая подпись) и SPF (какие серверы могут отправлять почту от имени домена). По желанию можно настроить поддомен отслеживания, через который Resend фиксирует, были ли письма открыты или нажаты ли ссылки в них.
Наш контекст: Пришлось полностью перенести на отдельный аккаунт Resend — включая удаление старых записей DKIM/SPF (которые всё ещё указывали на аккаунт партнёра) и ввод новых в OVH.
Подробности
Доставляемость почты исторически была проблемой доверия: теоретически любой сервер может заявить, что отправляет почту от имени любого домена (адрес отправителя в поле From можно задать свободно), поэтому почтовые провайдеры вроде Gmail или Outlook требуют дополнительных доказательств, прежде чем не классифицировать письмо как спам. Стандартную тройку для этого образуют три записи DNS:
- SPF (Sender Policy Framework) — TXT-запись, перечисляющая, какие IP-адреса серверов могут отправлять почту от имени домена.
- DKIM (DomainKeys Identified Mail) — каждое отправленное письмо криптографически подписывается; открытый ключ для проверки этой подписи доступен как запись DNS, чтобы получатель мог проверить подпись.
- DMARC — определяет, что делать, если SPF/DKIM не пройдены (всё равно доставить письмо, отправить в спам или полностью отклонить), плюс адрес для отчётов о неудачных проверках.
Если этих записей нет или (как в случае Emzett) они всё ещё указывают на чужой аккаунт, письма либо вовсе не доставляются, либо надёжно попадают в папку спама — картина сбоя, которую невозможно диагностировать только в собственном коде, поскольку сама отправка технически успешна.
Возвраты и жалобы
Два вида обратной связи решающи для долгосрочной доставляемости: bounce означает, что целевого адреса (больше) нет или почтовый ящик переполнен — hard bounce (адрес навсегда не существует) должен сразу исключить адрес из будущих рассылок, а soft bounce (временная проблема, например переполненный ящик) допускает повторные попытки позже. Жалоба означает, что получатель явно пометил письмо как спам. Сервисы отправки вроде Resend оценивают оба сигнала и могут понизить репутацию отправителя всего домена, если доля bounce/жалоб становится слишком высокой — это затрагивает ВСЕ будущие письма с этого домена, а не только соответствующий адрес. Поэтому важно активно удалять bounce из собственного списка получателей, а не молча игнорировать их.
Вебхуки статуса доставки
Вместо того чтобы самим регулярно спрашивать, доставлено ли письмо, можно настроить вебхук: при каждом изменении статуса (доставлено, открыто, нажата ссылка, bounce, жалоба) Resend отправляет на заданный вами URL HTTP-запрос с подробностями в теле — это позволяет вашему приложению, например, показывать, действительно ли дошло письмо с подтверждением, без polling.
См. также: Записи DNS, Записи DNS, TXT-запись, Письма