Perl для системного администрирования



     Купить газовый котел орел также читайте. |          

Получение почты - часть 7


использует информацию, не зависящую от того, что предоставил клиент во время SMTP-диалога. Это важно, поскольку клиент спамера, скорее всего, будет заядлым лжецом. Слово действительный берется в кавычки потому, что существуют способы сфабриковать и эту информацию.

«Действительное» имя

Имя клиента, найденное агентом передачи почты при обратном разыменовании IP-адреса через DNS. Эта информация, как и предыдущая, поступает не от клиента (хотя она тоже может быть фальшивой).

Формат правильной строки Received: определяется в RFC821 и RFC822. Однако, если просмотреть доставленную почту (как сделал я, создавая использованные регулярные выражения), можно заметить, что не все агенты передачи почты следуют данному правилу. В нашей программе будут применяться наиболее распространенные форматы, но существуют и другие способы, которые обязательно надо учитывать, если есть намерение в дальнейшем расширять код. Чтобы иметь представление о возможных форматах, посмотрите в сценарий adcomplain.

Вот как выглядит вывод программы, выполненной для сообщения, приведенного ранее:

login_0246.whynot.net mx.whynot.net 206.212.231.88

extreme host-209-214-9-150.mia 209.214.9.150

isiteinc.com www.isiteinc.com 206.136.243.2

В первом столбце перечислены имена, используемые машинами при идентификации; во втором - имена этих машин, указанные серверу при соединении; а в третьем - IP-адреса инициаторов данного соединения. Как уже отмечалось, в построенном списке последняя строка соответствует машине, передавшей сообщение на наш почтовый сервер.

Спамеры не могут удалить строки Received:, но они могут изменить их содержимое, задав фальшивое имя во время приветствия HELO или EHLO. Подтверждение этому можно увидеть во второй строке примера, поскольку имя узла из первого столбца не имеет ничего общего с именем из второго столбца, который более достоверен.

Но предположим, что они совпадают. Как же тогда узнать, что строка

Received: была подделана? Один из способов - сверять «действительный» IP-адрес из каждой строки Received: с «действительным» именем узла и сообщать об отклонениях. Приведенная ниже подпрограмма вернет значение (1), если разыменованное имя не совпадет с IP-адресом, в противном случае - (0). Вскоре этот код будет добавлен к основной программе:




Содержание  Назад  Вперед