Преодоление Sender Policy Framework: как красиво решить задачу рассылки писем пользователей своим почтовым сервисом?
Исходные данные такие.
Есть SaaS сервис, который, кроме прочих основных дел, доставляет сообщения от пользователя SaaS его клиентам. Почту доставляет mail-сервер сервиса, скажем, mail.saas.ru.
Допустим, пользователь имеет свой адрес отправителя saas_user@yandex.ru, и отправляет сообщение своему клиенту на адрес client@yandex.ru. И тут засада: принимающий сервер Яндекса с некоторых пор сурово следит за соблюдением SPF и тут же режектит сообщение.
Как я обхожу это дело сейчас? Я создаю на своём почтовом сервисе специальный адрес типа saas_user@saas.ru и отправляю письмо, указывая этот адрес в From. В Reply-To, разумеется, указываю saas_user@yandex.ru. Худо-бедно работает, но выглядит как костыль. Как сделать красиво, указывая в From реальный адрес saas_user@yandex.ru, и в то же время не нарушить SPF? Я же не могу сказать админу Яндекса "добавь mail.saas.ru в свою txt-запись"!
P.S. Та же проблема с отправкой на адреса в пользовательских доменах. По феншую, нужно им в txt-запись добавить правило для saas.ru. Как-то сложно очень...
SPF для того и придуман, чтобы только добавленные (в т.ч. неявно добавленные) в SPF запись хосты могли отправлять почту от имени пользователя домена. Поверх SPF, наверное еще и DMARC есть. Везде, где есть и проверяется SPF и/или политика DMARC, Ваши сообщения с нарушением SPF не будут приняты почтовым сервером. А если будут приняты, то пометятся как спам. В этом случае Вы даже не узнаете, что они не прочитаны.
Поэтому здесь верное решение именно такое, как Вы уже применили. Но красивым его не назовешь. А красиво было бы не от имени пользователя SaaS письмо посылать, а по нажатию кнопки или ссылки в письме открывать на вашем веб сайте тикет, назначенный на пользователя SaaS. Т.е. чтобы вообще не было имейла отправителя saas_user@yandex.ru, а вместо этого у получателя была возможность с ним связаться через тикет.
И обратите внимание, кроме From и Reply-To, есть еще Return-Path. Возможно, Вам в Return-Path нужно указать свой адрес, а в From и Reply-To - saas_user@yandex.ru. Коммерческие сервисы рассылок так делают.
Предложение интересное и красивое, это да, но в моём случае не очень подходит.
В целом оно не решает проблему, когда адрес отправителя "не совсем его" адрес, и это напрягает пользователей SaaS. Они хотят, чтобы в поле ОТ был именно их, родной адрес. Они боятся - и возможно, не без оснований - что получатели, увидев некую мешанину из двух адресов, один из которых не имеет явного отношения к делу, не окажут должного доверия содержимому, а то и просто проигнорируют его.
Особенно актуально это для тех клиентов пользователя SaaS, которые являются юридическими лицами. У них в почте такая куча всякого спама, что письма с подозрительными адресами - явный претендент на игнор.
Вообще-то, на соответствие SPF проверяется не From, а Return-Path. По крайней мере, так положено. Но некоторые почтовые клиенты пишут что-то наподобие: отправлено <Return-Path> от имени <From>.
Алексей,
Как верно заметил wisgest, так положено, чтобы проверялся Return-Path. Однако что там на самом деле проверяется, мы не знаем. Так же и пользователь может увидеть разное в "ОТ": "от имени", "on behalf of", или просто "От".
Алексей, либо "ОТ saas_user@yandex.ru", либо "отправлено saas_user@saas.ru от имени saas_user@yandex.ru" — зависит от почтового клиента (сервиса или программы). Конкретно в почте Яндекса, как помнится, в Lite-интерфейсе будет просто From, а в современном — тоже From, но возле него перечёркнутый красный замок при наведении на который будет сообщение, что адрес отправителя не соответствует домену, с которого отправлено сообщение, а при щелчке можно будет увидеть то ли домен, то ли целиком Return-Path.
wisgest, спасибо, это будет выглядеть не так костыльно.
Кстати, посмотрел вот сюда, там всё делается прям по правилам - система рассылки генерит txt-запись для домена отправителя. Увы, это для наших пользователей китайская грамота.