Wednesday, August 23rd, 2017

Проверка адреса отправителя при помощи Smfsav

Published on Март 30, 2009 by   ·   Комментариев нет

Введение

Зачем нужна проверка адреса отправителя на почтовых серверах? SMTP
протокол фактически не гарантирует доставку письма, но всячески
способствует хотя бы косвенно уведомить отправителя о возможных
проблемах. Ниже приведена схема, по которой работает SMTP сервер:

Сервер получает письмо и пытается доставить получателю

Если возникает ошибка, создается отчет об ошибках и отправляется отправителю

Если возникает ошибка при отправке письма отправителю, сервер пытается
отправить отчет своему postmaster'у

Если недоступен адрес postmaster'a, в логи добавляется событие «savemail
panic» и обработка письма вместе с отчетом останавливается

Как видите, SMTP сервер пытается, во чтобы то ни стало, доставить письмо
получателю или известить компетентых людей об ошибках. Если у вас есть
почтовый сервер, обратите внимание, сколько писем у него в очереди.
Скорее всего, вы увидите письма от MAILER-DAEMON или postmaster на
непонятные адреса типа .
Потому что спаммеры зачастую в своих письмах указывают неверный обратный
адрес, а заодно и неверный адрес получателя. Согласно вышеуказанной
схеме, отчет должен уйти отправителю, вот и висит он, потому что некуда
ему идти. Механизм проверки адреса отправителя вовсе не гарантирует, что
адрес отправителя в письме — это настоящий адрес отправителя, но
позволит нам хотя бы удостовериться, что это рабочий адрес, и, как
минимум, на него можно будет отправить отчет о недоставке.

Технология

Обычная 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.>
        <= 250 2.1.0 Ok
        => RCPT TO:<petrov@firma.ua.>
        <= 250 2.1.5 Ok
        => DATA
        <= 354 Enter mail, end with "." on a line by itself
        => text
        => of
        => mail
        => .
        <= 250 2.0.0 mAA8JNbB099896 Message accepted for delivery
        => QUIT
        <= 221 2.0.0 server.firma.ua closing connection

Фильтр, отвечающий за проверку адреса получателя, вызывается почтовым
сервером после команды MAIL FROM и делает примерно следующие действия:

Получает список MX записей для домена address.com

        nslookup -type=MX address.com
        Server:         127.0.0.1
        Address:        127.0.0.1#53
       
        Non-authoritative answer:
        address.com     mail exchanger = 10 spam04.affinitypath.com.
        address.com     mail exchanger = 20 spam01.affinitypath.com.

Подключается к одному из них и производит следующий диалог с сервером:

        <= 220 Server ESMTP ready
        => HELO server.firma.ua
        <= 250 spam04.affinitypath.com Hello server.firma.ua [11.22.33.44], pleased to meet you
        => MAIL FROM:<validator@firma.ua.>
        <= 250 2.1.0 Ok
        => RCPT TO:<invalid@address.com.>
        <= 550 User not found.
        => QUIT
        <= 221 2.0.0 spam04.affinitypath.com closing connection

Возращает отправителю ошибку без приема письма. Сессия будет выглядеть
примерно так:

        <= 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.>
        <= 550 Sender address verification failed
        => QUIT
        <= 221 2.0.0 server.firma.ua closing connection

Установка smfsav для sendmail

Установите smfsav из исходников (сорцы возьмите
на http://smfs.sourceforge.net/smf-sav.html), либо из портов FreeBSD:

make install clean -C /usr/ports/mail/smfsav

Поправьте в конфиге smfsav.conf, который скорее всего будет в
/usr/local/etc:

        PublicName      dns_имя_вашего_сервера #Узнайте командой nslookup ваш_внешний_IP
        SafeCallBack    postmaster@firma.ua #Заведомо рабочий адрес в вашем домене

Запустите сервис

  /usr/local/etc/rc.d/smfsav start

Пропишите фильтр в конфиг sendmail'a /etc/mail/your_hostname.mc

 INPUT_MAIL_FILTER(`smfsav&#039;, `S=unix:/var/run/smfsav/smfsav.sock, T=S:30s;R:4m&#039;)

Пересоберите конфиги и перезапустите сервер

  make all install stop start -C /etc/mail

Все, ждите сообщений в логах!

        # tail -f /var/log/maillog |grep smf

        Nov 10 10:37:52 gt smf-sav[60084]: sender check failed: <tefighter70@icqmail.com.>, 83.9.68.148, abzw148.adsl.tpnet.pl, [00:00:06]
        Nov 10 10:40:09 gt smf-sav[60084]: sender check failed: <yu@basf.com.>, 89.254.215.113, line113-49.adsl.kirov.ru, [00:00:03]
        Nov 10 10:41:05 gt smf-sav[60084]: sender check failed: <simeon@basf.com.>, 89.20.23.89, [89.20.23.89], [00:00:04]
        Nov 10 10:44:32 gt smf-sav[60084]: sender check failed: <www.@ruthschris.com.>, 85.72.60.199, oikopano.static.otenet.gr, [00:00:03]
        Nov 10 10:45:08 gt smf-sav[60084]: sender check succeeded: <fields@whsllc.com.>, 59.90.187.144, [59.90.187.144], [00:00:02]

Настройка фильтра на postfix

Такой механизм уже есть в стандартной поставке postfix'a, добавьте
нужное значение в следующий параметр конфига main.cf:

   smtpd_sender_restrictions = ..., reject_unverified_sender
zp8497586rq























Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]