Я просматривал вопросы по Stackoverflow и Serverfault, но не нашел упомянутой проблемы - хотя это может быть потому, что я просто недостаточно знаю о том, как работает электронная почта, чтобы понять, что некоторые из вопросов действительно такие же, как у меня ... вот моя ситуация:
У меня есть веб-приложение, которое использует SmtpClient .Net для отправки электронной почты. Конфигурация SmtpClient использует сервер smtp, имя пользователя и пароль. Код SmtpClient выполняется на сервере, IP-адрес которого не находится в домене, в котором находится SMTP-сервер.
В большинстве случаев электронные письма отправляются без проблем - но не AOL (и, возможно, другие, но это то, что мы точно знаем прямо сейчас).
Когда я смотрю на заголовки в сообщении, которое было отклонено AOL, в нем на одну строку меньше, чем в успешных сообщениях, которые получает hotmail:
Неверное сообщение AOL:
Received: from WEBSVRNAME ([##.###.###.###]) by domainofsmtp.com with MailEnable ESMTP; Mon, 18 Jun 2012 09:48:24 -0500
MIME-Version: 1.0
From: "donotreply@domainofsmtp.com" <donotreply@domainofsmtp.com>
...
Хорошее сообщение Hotmail:
Received: from mail.domainofsmtp.com ([###.###.###.###]) by subdomainsof.hotmail.com with Microsoft SMTPSVC(6.0.3790.4900); Thu, 21 Jun 2012 09:29:13 -0700
Received: from WEBSVRNAME ([##.###.###.###]) by domainofsmtp.com with MailEnable ESMTP; Thu, 21 Jun 2012 11:29:03 -0500
MIME-Version: 1.0
From: "donotreply@domainofsmtp.com" <donotreply@domainofsmtp.com>
...
Обратите внимание, что в заголовках сообщений Hotmail есть дополнительная строка.
Я не понимаю, почему имя и IP-адрес веб-сервера даже находятся в заголовках, поскольку я думал, что использую SmtpClient для прохождения через SMTP-сервер (отсюда необходимость в имени пользователя и пароле действующего почтового ящика).
Я читал о SPF, DKIM и SenderID, но на данный момент я не уверен, нужно ли мне что-то делать с веб-сервером (и его ip / доменом) или с доменом, с которого приходит smtp. Кому-нибудь приходилось делать что-нибудь подобное раньше?
Я использую сервер smtp в качестве реле? Любая помощь в том, как описать то, что я делаю, также поможет.
Вот некоторые вещи, которые вы можете сделать, чтобы устранить проблему с AOL и другими:
Во-первых, знайте, что AOL и другие используют методы предотвращения спама, такие как отказ от электронной почты из почтовых доменов, не имеющих записи обратного просмотра, занесение в серый список или используя SPF записи. Вы должны проверить каждый из них. При добавлении в серый список при выполнении метода отправки smtpclient будет возвращена ошибка.
Затем, если вы можете проверить сервер, на котором выполняется метод отправки, чтобы узнать, выдает ли он какие-либо ошибки или игнорируются ли ошибки в блоке try catch.
Кроме того, вы можете подключиться к своему SMTP-серверу через Telnet и выполнить EHLO тест чтобы узнать, можете ли вы просмотреть какие-либо проблемы.
Дополнительную информацию о политике блокировки AOL можно найти здесь: http://postmaster.aol.com/Postmaster.Errors.php
Другие почтовые домены могут использовать аналогичные методы для предотвращения спама, поэтому вам может потребоваться выполнить те же действия по устранению неполадок с ними.
Некоторые моменты:
По умолчанию большинство SMTP-серверов включают заголовок Received: для исходного хоста, даже если он не является SMTP-сервером.
Каждый раз, когда вы отправляете сообщение через SMTP-сервер, вы используете его как ретранслятор.
Большинство спам-фильтров проверяют все заголовки "Получено:". Каждый из них обычно проходит через черный список и проверяется на правильность обратного сопоставления, а также на ключи домена и проверки SPF. Поэтому вам необходимо убедиться, что оба они разрешены в вашей записи SPF и имеют допустимое обратное сопоставление, и что ни один из них не указан в черном списке.
Я подозреваю, что разница, которую вы видите, заключается в том, что AOL не добавила заголовок Received: со ссылкой на ваш почтовый сервер, потому что он отклонил сообщение (как следует из терминологии, этот заголовок добавляется каждым сервером, через который проходит сообщение, чтобы указать, от кого оно было получено. последний). Похоже, что SMTP-сервер hotmail действительно добавил его в этом случае. Это не очень важно для устранения неполадок.