
Далее рассмотрим, как наш сервер может проверять с помощью DNS
честность подключающегося к нему клиента/другого сервера путем проверки с
помощью DNS запросов того имени, которое клиент/другой сервер указывают в
качестве аргумента команды
HELO/EHLO. Положим, клиент просто
представляется именем caesar и не использует FQDN. На сервере доменом по
умолчанию является домен smile.com, поэтому все имена, не имеющие доменной
части снабжаются доменным суффиксом smile.com. Включим на сервере
проверку введенных клиентом имен и проверим, как сервер проверяет
введенные имена. При этом, домен smile.com используется в нашей сети БЕЗ
регистрации в Интернет, БЕЗ своего DNS сервера с зоной smile.com, более того,
домен smile.com кем то используется в Интернет, т.е. проверка соответствия
имени клиента caesar.smile.com и его IP адреса (192.168.0.251) явно закончится
неудачей . Проанализируем взаимодействия (файл dns_fail.cap).
Видно, что в пакете 6, сразу после команды EHLO, поданной нашим
клиентом сервер выполняет проверку введенного имени, выполняя DNS запрос
имени caesar.smile.com. В пакете 8 сервер получает ответ (разумеется, по
названным выше причинам этот ответ никак не совпадает с адресом клиента
192.168.0.251), после чего сервер продолжает коммуникации с клиентом, но в
заголовке Received, который сервер устанавливает в письме (пакет 36), сервер
делает пометку: RDNS failed.
Что будет, если проверка прошла успешно? Для этого разместим в нашей
сети DNS сервер с зоной smile.com и внесем туда запись об узле
caesar.smile.com. Проанализируем трафик (файл dns_pass.cap).