1.6. Коды возврата SMTP
Протокол SMTP поддерживает несколько классов кодов возврата (Return Code), описанных в работе [1]:
- 5xx
- Постоянный отказ (Permanent Negative Completion) — критическая ошибка (Fatal Error) — почтовая транзакция прерывается и сообщение возвращается отправителю.
- 4xx
- Временный отказ (Transient Negative Completion) — временная ошибка (Temporary Error) — почтовая транзакция возвращается в очередь для повторения попытки по истечении некоторого времени.
- 2xx
- Позитивный результат (Positive Completion) — показывает, что агент MTA принял на себя ответственность за дальнейшую доставку сообщения.
При использовании описанных в этом документе опций и методов следует принимать во внимание ряд аспектов:
- Для некоторых событий типа "Denied - you're on the spammer's list" возврат кода 5xx может быть корректным действием, поскольку при этом почтовая сессия прерывается (если спамер не играет по правилам SMTP, он может поместить сообщение обратно в очередь на отправку или перебросить на другой хост в зависимости от возвращенного кода). Однако возврат кода 5xx в результате конфигурационной ошибки может приводить к отказу в приеме легитимной почты.
- Следовательно, мы предлагаем в большинстве случаев возвращать коды 4xx. Поскольку такой код говорит о исправимой ошибке, почта заново помещается в очередь на стороне отправителя и мы получаем некоторое время на обнаружение и исправление конфигурационных ошибок и не отказываемся категорически от приема сообщения (например, отказ в трансляции почты для домена, в котором MX-запись указывает на данный транслятор).
- Возврат кода 4xx спамеру также приводит к сохранению сообщения в почтовой очереди и, если спамер использует свой хост, может заставить этого спамера образумиться — ведь размеры диска не бесконечны. С другой стороны, если спамер пользуется открытым транслятором, переполнение очереди может послужить владельцам хоста сигналом о непорядке в их системе.
- Однако при возврате кодов 4xx может возникать нетривиальный случай взаимодействия с записями MX. Если домен адресата имеет несколько MX-записей и хост с наиболее предпочтительным значением MX возвращает код 451, передающий сообщение хост может (и часто делает это реально) попытаться использовать хост со следующим значением MX.
- Если второй хост не использует в точности такой же список для отказа в приеме почты, он может принять сообщение и далее будет пересылать его транслятору с минимальным значением MX, который ранее отказался принимать сообщение на основе анализа "MAIL From:". В результате будет заполняться почтовая очередь на дружественном хосте, обеспечивающем адресату дополнительную запись MXt.
- Наконец, можно возвратить код 2xx, не предпринимая усилий по дальнейшей доставке спама (например, отправив сообщение в /dev/null). Очевидно, что это является нарушением RFC821 и таким способом не следует пользоваться без аккуратного рассмотрения всех аспектов. Вместо отбрасывания почты вслепую можно заново помещать ее в очередь и вручную (или автоматически) проверять является она спамом или легитимной почтой, после чего отбрасывать или пересылать дальше.
1.7. Списки рассылок
Агент MTA может также поддерживать списки рассылок (mailing list) и отправлять по этим спискам сообщения множеству адресатов. Требуется обеспечить проверку отправителя и предотвращение возможности рассылки спама по таким спискам. Механизмы в данном случае могут существенно отличаться от тех, которые применяются для отдельных сообщений и отдельных пользователей. Рассмотрение этих механизмов выходит за пределы данного документа.