Несколько писем отправлено с моего веб-сервера на адрес Gmail, где From:
адрес websitevisitor@gmail.com
, были отмечены Gmail как спам. В From:
Поле заполняется из данных формы и соответствует фактическому адресу электронной почты посетителя, который часто является адресом Gmail. В Return-Path:
всегда указывает на адрес account@mywebserver.com
, что означает, что проверки SPF и DKIM будут работать.
Когда я просматриваю необработанные электронные письма в учетной записи Gmail, я вижу следующее:
Delivered-To: webformrecipient@gmail.com
...
Return-Path: <account@mywebserver.com>
Received: from mywebserver.com (mywebserver.com. [my:ipv6:address])
by mx.google.com with ESMTPS id xxx
for <webformrecipient@gmail.com>
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Tue, 02 Feb 2016 00:40:02 -0800 (PST)
Received-SPF: pass (google.com: domain of account@mywebserver.com designates my:ipv6:address as permitted sender) client-ip=xxx;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of account@mywebserver.com designates my:ipv6:address as permitted sender) smtp.mailfrom=account@mywebserver.com;
dkim=pass header.i=@mywebserver.com;
dmarc=fail (p=NONE dis=NONE) header.from=gmail.com
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mywebserver.com; s=mydkim;
h=Date:Message-Id:Sender:From:Subject:To; bh=w2snQznwxlVRVACmfQELC7VGmD1dcYdiCXbCIRYFKRs=;
b=a0Vy3Ky43J5FdiWSuQ4qvTTH47G+Js0W/qtRU5gMlxfesNqrlyaIyExaIZlWvHNL4o0LNOF1GI94w4C41mmH+2JIkMEQZazw0MainP7UyUgsm/RZbAWoRuecPv+k108FlsWMP/l1UttXAdlvBVJmV2UGsYYlSSjKErQEF8tv3K0=;
Received: from apache by mywebserver.com with local (Exim 4.80)
(envelope-from <account@mywebserver.com>)
id 1aQWVF-00009b-2X
for webformrecipient@mywebserver.com; Tue, 02 Feb 2016 09:40:01 +0100
To: webformrecipient@mywebserver.com
From: Website User <website-user@gmail.com>
Sender: webformrecipient@mywebserver.com
...
Обратите внимание, что проверки SPF и DKIM проходят, а проверка DMARC - нет. После некоторого поиска я отследил это до DMARC, используя From:
адрес для получения ссылочного домена, согласно этот ответ о переполнении стека.
Три вопроса:
dmarc=fail
в чем причина того, что письмо отнесено к спаму Gmail?From:
адрес, а не Return-Path
(отправитель конверта) как SPF и DKIM?From:
заголовок должен соответствовать адресу @mydomain.com
тогда как нам указать актуальный (логический, плоть и кровь) отправитель сообщения?Подумайте о SPF и DKIM как о способах проверки почтового пути, а о DMARC как о расширении, которое также проверяет отправителя сообщения. Думайте об этом как о доставке письма FedEx. Легко проверить, откуда был отправлен конверт и что курьер был законным, но это не дает возможности доказать, что письмо внутри конверта действительно от человека, чье имя напечатано на нем.
Ваш веб-сервер является допустимым SMTP-сервером для mywebserver.com и что ваш адрес отправителя является законным, но этого недостаточно, чтобы другие серверы доверяли тому, что у вас есть разрешение на отправку с адреса website-user@gmail.com. Как GMail узнает, что ваш сервер не был взломан или иным образом не использовался со злым умыслом? Серверы Gmail не будут слепо доверять вам отправлять почту в качестве одного из своих пользователей - если, возможно, вы не размещены у них, и тогда у вас, вероятно, возникнут проблемы с отправкой в Yahoo.
Чтобы ответить на вашу первую часть вопроса, да, очень вероятно, что именно поэтому GMail классифицирует его как спам. Самые старые формы спама связаны с подделкой адреса «От». Это то, что видят большинство пользователей, когда получают сообщение, и это основное поле, которому они хотят доверять. Когда сообщение с легитимного почтового сервера отправляется с использованием адреса От, который не принадлежит этому почтовому серверу, это все еще красный флаг.
Как вы упомянули, DMARC работает с адресом From как часть спецификации. Конечно, это затрудняет написание веб-приложений, отправляющих сообщения от чьего-либо имени, но в этом-то и дело. Относительно Зачем они это делают - ну, это дело разработчиков спецификации, но это компромисс. Они выбирают большой путь и создают систему, которая работает очень хорошо, если вы не выходите за рамки этих ограничений. Возможно, будущие механизмы найдут способ обойти это.
Неудачное решение - использовать только те адреса, которые вы контролируете. Чтобы ответить на третий вопрос, подпишите сообщения своим доменным именем и укажите в теле письма, что оно было отправлено от имени website-user@gmail.com. В противном случае вам придется попросить получателей добавить адрес в свой белый список. Для законного разработчика веб-приложений это не очень весело, но это защитит неприкосновенность почтового ящика получателя. Возможно, вам повезет с использованием заголовка Reply-To с адресом электронной почты веб-пользователя.
Это ограничение обсуждается на этот поток DMARC.
А пока вы можете попытаться убедиться, что ваш сервер не занесен в черный список ни в каких RBL. Может случиться так, что вы можете не пройти DMARC, но все же пройти некоторые спам-фильтры, если у вас достаточно хорошая репутация ... но я бы не стал на это полагаться.
1) да, скорее всего, сбой dmarc приведет к тому, что Gmail отбросит ваши письма
2) тоже интересовался бы ответом на это
3) Я бы (и мы это делаем) использовал поле для ответа для адреса клиента, наши письма выглядят так:
с: website@mydomain.com
на: user@mydomain.com
тема: контактная форма
ответ на: customer-addy@somewhere.com
Надеюсь это поможет
Есть два вопроса "почему":
Этот раздел четко устанавливает, что Sender:
заголовок, если он присутствует, имеет приоритет над From:
заголовок, с целью идентификации стороны, ответственной за отправку сообщения:
В поле «Отправитель:» указывается почтовый ящик агента, ответственного за фактическую передачу сообщения. Например, если секретарь должен послать сообщение другому человеку, почтовый ящик секретаря появится в поле «Отправитель:», а почтовый ящик фактического автора появится в поле «От:». Если отправитель сообщения может быть указан одним почтовым ящиком, а автор и отправитель идентичны, поле «Отправитель:» НЕ ДОЛЖНО использоваться. В противном случае ДОЛЖНЫ отображаться оба поля.
Сравните это с обоснованием, приведенным в RFC 7489:
DMARC подтверждает использование RFC5322. От домен, требуя, чтобы он соответствовал (согласовывался) с аутентифицированным идентификатором. В RFC5322. От домен был выбран в качестве центрального идентификатора механизма DMARC, потому что это обязательное поле заголовка сообщения и поэтому гарантированно присутствует в совместимых сообщениях, а большинство агентов пользователей почты (MUA) представляют RFC5322. От в качестве отправителя сообщения и отображать часть или все содержимое этого поля заголовка для конечных пользователей.
Я считаю, что эта логика ошибочна, поскольку RFC 5322 продолжает явно вызывать эту ошибку:
Примечание: информация о передатчике присутствует всегда. Отсутствие поля «Отправитель:» иногда ошибочно принимают за то, что агент, ответственный за передачу сообщения, не указан. Это отсутствие просто означает, что отправитель идентичен автору и поэтому не помещается в поле «Отправитель:».
Я считаю, что DMARC нарушен по замыслу, потому что
Sender:
заголовок.Если Sender:
поле присутствует, DMARC должен сказать для аутентификации который поле и игнорировать From:
поле. Но это не то, о чем он говорит, и поэтому я считаю, что он сломан.
RFC 7489 продолжается:
Таким образом, это поле используется конечными пользователями для определения источника сообщения и, следовательно, является основной целью злоупотреблений.
Это просто неправильно (в контексте оправдания игнорирования Sender:
заголовок). Во время разработки DMARC обычные почтовые клиенты обычно отображали комбинацию информации из Sender:
и From:
поля, что-то вроде Из имя-для-списка-рассылки @ сервер от имени user@original.domain. Таким образом, пользователю всегда было ясно, кто несет ответственность за отправку сообщения, которое он просматривает.
Предложения, которые Reply-To:
является адекватной заменой, также ошибочны, потому что этот заголовок часто неверно интерпретируется как «дополнительный получатель», а не «замещающий получатель», и заменяет исходный отправитель Reply-To:
ухудшит функциональность для те пользователей.