Наше веб-приложение отправляет сообщения электронной почты людям, когда кто-то публикует новый контент. Отправитель и получатель решили получать сообщения электронной почты из нашего приложения. При подготовке такого сообщения мы устанавливаем следующие заголовки SMTP:
ОТ: author@example.com TO: receient@example.com ОТПРАВИТЬ: webapp@mycompany.com
Мы решили использовать адрес электронной почты автора в заголовке FROM, чтобы обеспечить наилучший опыт для получателя; когда они видят сообщение в своем почтовом клиенте, автор понятен. Чтобы избежать появления спуфинга, мы добавили заголовок SENDER (с адресом электронной почты собственной компании), чтобы было ясно, что мы отправили сообщение от имени автора. После прочтения RFC 822 и 2822, это, кажется, предполагаемое использование заголовка отправителя.
Большинство принимающих почтовых серверов, кажется, справляются с этим хорошо; сообщение электронной почты доставляется нормально (при условии, что почтовый ящик получателя существует, не превышена квота и т. д.). Однако при отправке сообщения ОТ адреса в домене ДО адреса в том же домене некоторые принимающие домены отклоняют сообщения с ответом, например:
571 неверный IP - psmtp (в ответ на команду RCPT TO)
Я думаю, это означает, что принимающий сервер видел только то, что адрес заголовка FROM находился в его собственном домене, и что сообщение было отправлено с сервера, который он не считал авторизованным для отправки сообщений для этого домена. Другими словами, принимающий сервер игнорировал заголовок SENDER.
У нас есть обходной путь: веб-приложение хранит список таких доменов, которые, похоже, игнорируют заголовок SENDER, а когда заголовки FROM и TO находятся в таком домене, вместо этого он устанавливает заголовок FROM на наш собственный адрес электронной почты. Но этот список требует обслуживания.
Есть ли лучший способ достичь желаемого опыта? Мы хотели бы быть «добропорядочным гражданином» сети, и все вовлеченные стороны - отправители и получатели - хотят участвовать и получать эти сообщения. Один из вариантов - всегда использовать адрес электронной почты нашей компании в заголовке ОТ и добавлять имя / адрес автора к теме, но это кажется немного неуклюжим.
From: author
вместоFrom: author@example.com
?Ответы:
Вы смотрите на неправильные вещи. Это заголовки сообщений . Вы должны смотреть на конверт SMTP . (То, как указан конверт, зависит от того, как именно ваше приложение отправляет почту в почтовую систему. Во многих системах конверт задается аргументами командной строки для служебной программы отправки почты.) В зависимости от того, когда именно в транзакции протокола он решает выдать этот 571 ответ, сервер ретрансляции SMTP, возможно, даже не видел заголовки сообщений вообще.
В тексте ответа говорится, что администратор данного конкретного сервера ретрансляции SMTP ограничил то, что вы можете поместить в конверт SMTP. Похоже, что он жалуется на часть получателя конверта. Но это может быть отсрочка проверки отправителя конверта до указания первого получателя, поэтому он может жаловаться на отправителя.
Обратите внимание, что отправитель конвертов - это то место, куда отправляются сообщения о состоянии доставки, и вы не захотите, чтобы они направлялись случайным людям по всему миру. (Помимо того, что многим это не нравится, нет смысла возвращать сообщения о состоянии доставки вашей почты кому-либо, кроме вас.) Укажите себя в качестве отправителя конверта.
Между
MX
прочим, неправильно требовать записи ресурсов. Сервер ретрансляции SMTP может быть расположенA
иAAAA
записи ресурсов при отсутствии каких-либоMX
записей ресурсов. См. RFC 5321 § 5.1.источник
Я могу ошибаться, но наиболее вероятной причиной вышеуказанной ошибки, особенно в случае Postini, является то, что домены, на которые вы получаете отклонение, имеют строгую политику SPF. Большинство почтовых серверов с проверкой SPF проверяют только заголовок From: они не заботятся о заголовке Sender.
Чтобы проверить, так ли это, запустите «dig + short TXT domain.com», где domain.com - это то, что выдает сообщение об ошибке. Вы должны получить что-то вроде:
Важной частью является все. Это означает, что владелец домена заявил, что он будет когда-либо отправлять электронную почту только с серверов, которые действуют как их почтовые серверы, все остальные сообщения будут отклонены.
К счастью, если это так, вы можете активно проверить это перед отправкой электронного письма! Получить WebApp, чтобы сделать проверку SPF, когда пользователь вводит свой адрес электронной почты. Если существует строгая политика, добавьте домен в свой список. Нет недостатка в библиотеках для всех языков, которые могут выполнять проверки SPF.
источник