Зачем нужна проверка адреса отправителя на почтовых серверах? SMTP протокол фактически не гарантирует доставку письма, но всячески способствует хотя бы косвенно уведомить отправителя о возможных проблемах. Ниже приведена схема, по которой работает SMTP сервер:
1. Сервер получает письмо и пытается доставить получателю 2. Если возникает ошибка, создается отчет об ошибках и отправляется отправителю 3. Если возникает ошибка при отправке письма отправителю, сервер пытается отправить отчет своему postmaster'у 4. Если недоступен адрес postmaster'a, в логи добавляется событие "savemail panic" и обработка письма вместе с отчетом останавливается
Как видите, SMTP сервер пытается, во чтобы то ни стало, доставить письмо получателю или известить компетентых людей об ошибках. Если у вас есть почтовый сервер, обратите внимание, сколько писем у него в очереди. Скорее всего, вы увидите письма от MAILER-DAEMON или postmaster на непонятные адреса типа <klausdefargt093fstb@poweroverhealthing.ee>. Потому что спаммеры зачастую в своих письмах указывают неверный обратный адрес, а заодно и неверный адрес получателя. Согласно вышеуказанной схеме, отчет должен уйти отправителю, вот и висит он, потому что некуда ему идти. Механизм проверки адреса отправителя вовсе не гарантирует, что адрес отправителя в письме - это настоящий адрес отправителя, но позволит нам хотя бы удостовериться, что это рабочий адрес, и, как минимум, на него можно будет отправить отчет о недоставке.
Технология
Обычная SMTP сессия выглядит примерно так:
<= 220 Server ESMTP ready
=> HELO mx.yandex.ru
<= 250 server.firma.ua Hello mx.yandex.ru [212.89.22.56], pleased to meet you
=> MAIL FROM:<invalid@address.com>
<= 2502.1.0 Ok
=> RCPT TO:<petrov@firma.ua>
<= 2502.1.5 Ok
=> DATA
<= 354 Enter mail, end with "." on a line by itself
=> text
=> of
=> mail
=> .
<= 2502.0.0 mAA8JNbB099896 Message accepted for delivery
=> QUIT
<= 2212.0.0 server.firma.ua closing connection
Фильтр, отвечающий за проверку адреса получателя, вызывается почтовым сервером после команды MAIL FROM и делает примерно следующие действия: Получает список MX записей для домена address.com