The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Проверка адреса отправителя при помощи Smfsav (mail sendmail postfix validate filter)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: mail, sendmail, postfix, validate, filter,  (найти похожие документы)
From: Anton Lysenok <bart@unixpages.net.> Newsgroups: email Date: Mon, 9 Nov 2008 17:02:14 +0000 (UTC) Subject: Проверка адреса отправителя при помощи Smfsav Оригинал: unixpages.net Введение Зачем нужна проверка адреса отправителя на почтовых серверах? SMTP протокол фактически не гарантирует доставку письма, но всячески способствует хотя бы косвенно уведомить отправителя о возможных проблемах. Ниже приведена схема, по которой работает SMTP сервер: Сервер получает письмо и пытается доставить получателю Если возникает ошибка, создается отчет об ошибках и отправляется отправителю Если возникает ошибка при отправке письма отправителю, сервер пытается отправить отчет своему postmaster'у Если недоступен адрес 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.> <= 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', `S=unix:/var/run/smfsav/smfsav.sock, T=S:30s;R:4m') Пересоберите конфиги и перезапустите сервер 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

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:





  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor