Документация по ОС FreeBSD Воскресенье, 05.05.2024, 12:37
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Mail

smfsav - проверка адреса отправителя [2008]
Введение

Зачем нужна проверка адреса отправителя на почтовых серверах? 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>
<= 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

----
Оригинал статьи: http://unixpages.net/wiki/Smfsav_-_проверка_адреса_отправителя
http://unixpages.net/



Источник: http://www.lissyara.su/?id=1789
Категория: Mail | Добавил: oleg (22.11.2008) | Автор: Bart Tapolsky
Просмотров: 1098 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024