den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Чёрные списки (black lists)
RBL-список это фактически DNS-сервер, который знает известные спам-ретрансляторы. Sendmail обращается при получении письма к RBL-серверу. Он отправляет обычный DNS-запрос с адресом сервера, который пытается отправить письмо, и если RBL-сервер его знает, сервер делает вывод, что письмо отправляет спаммер и отказывает ему.
Добавьте в .m4-файл строки и перестройте конфигурационный файл.
FEATURE(`dnsbl', `bl.spamcop.net', `Spam blocked - see http://spamcop.net/bl.shtml?$&{client_addr}')dnl
FEATURE(dnsbl, `bl.csma.biz', `*** SPAM Blocked from $&{client_addr} - See http://bl.csma.biz/')dnl
FEATURE(dnsbl,`dnsbl.njabl.org',`Message from $&{client_addr} rejected - see http://njabl.org/')dnl
FEATURE(dnsbl, `dnsbl.sorbs.net', `Message from $&{client_addr} rejected see dnsbl.sorbs.net') dnl
FEATURE(dnsbl, `cbl.abuseat.org', `Message from $&{client_addr} rejected see http://cbl.abuseat.org/')dnl
FEATURE(`dnsbl', `dul.ru', `Use mail relays of your ISP')dnl
Список может постоянно меняться.
Обязательно проверяйте, работает RBL или нет.
После того как построен .cf-файл, проверить его можно так:
sendmail -bt -C /config/to/test/sendmail.cf
> .D{client_addr}127.0.0.1
> Basic_check_relay <>
rewrite: ruleset 192 input: < >
rewrite: ruleset 192 returns: OK
> .D{client_addr}127.0.0.2
> Basic_check_relay <>
rewrite: ruleset 192 input: < >
rewrite: ruleset 192 returns: $# error $@ 5 . 7 . 1 $: "Mail from " 127 . 0 . 0 . 2 " refused; see http://www.mail-abuse.org/cgi-bin/lookup?127.0.0.2"
> CTRL/D
Если проверка заработала, рано или поздно в логах сервера должны начать появляться записи:
May 8 14:59:59 mail sm-mta[20408]: m48Bxsng020408: ruleset=check_rcpt, arg1=<petrensol@example.com>, relay=dsl88-247-10247.ttnet.ne
t.tr [88.247.40.7] (may be forged), reject=553 5.3.0 <petrensol@example.com>... Spam blocked - see http://spamcop.net/bl.shtml? 88.247.40.7
May 8 15:00:18 mail sm-mta[20452]: m48C0GoL020452: ruleset=check_rcpt, arg1=<gelos@example.com>, relay=Nnov-hpool.quantum.ru [88.86
.70.254], reject=553 5.3.0 <gelos@example.com>... Spam blocked - see http://spamcop.net/bl.shtml? 88.86.70.254
Или, если вы хотите подсвечивать сообщения о спаме (с задержкой):
%# tail -f /var/log/mail.log |perl -p -e 's/Spam/\033\[46;1mSpam\033[0m/gi;'
Если у вас почтовые сообщения хранятся в формате Maildir, чтобы найти письма от тех, в ком мы теперь узнали спамера, нужно дать команду:
spam_re()
{
grep reject=553 /var/log/mail.log | awk '{print $9}'| sort | uniq -c | sort -r -n | sed s/.*=// | tr -d ][, \
| tr '\n' \| ; echo UNIKAL
}
grep -r "$(spam_re)" /var/mail
Список известных DNSBL-серверов:
http://en.wikipedia.org/wiki/Comparison_of_DNS_blacklists
http://spamlinks.net/filter-dnsbl-lists.htm
Серые списки (graylisting)
Серые списки или грейлистинг — это одиз из методов блокирования спама на уровне почтового сервера без применения статистического анализа и вообще эвристических подходов.
Грейлистинг базируется на том (иногда сомнительном) факте, что серверы, рассылающие спам, и нормальные пользователи ведут себя по-разному. Грейлистинг блокирует письмо не на основе его содержимого, а смотря на то, как сервер пытается его отправить.
Спам-системы, как правило, не пытаются отправить письмо второй раз, если при первой попытке они получили сообщение о том, что сервер временно недоступен. Обычные системы пытаются. Они запоминают письмо в очереди на отправку и повторяют отправку потом. До тех пор, пока письмо не уйдёт, или закончится время попыток (достаточно большое).
Спамер может переслать письмо и повторно, но между двумя попытками проходит время, в течение которого он не сидел без дела, и c большой вероятностью уже успел отправить письмо в спам-ловушку. Если так, то он попадёт в соответствующий blacklist, и вторая попытка отправки будет отсечена с его помощью.
Код: |
первая вторая
отправка отправка (отсекается)
| |
v v
------------------------------------------------------------->
^ t
|
|
попадаение в ловушку
и DBL |
Говоря коротко, грейлистинг это такой способ приёма почты, когда мы не принимаем письмо сразу, а ждём некоторое время, чтобы узнать не окажется ли отправитель в чёрных списках. Если не окажется, то с большой вероятностью это не спамер, и письма от него можно принимать.
Ниже описывается процедура инсталляции и настройки milter-greylist, одной из распространённых систем грейлистинга, работающей с Sendmail.
Инсталляция
%# apt-get install milter-greylist
Активируется milter-greylist разными способами, зависящими от дистрибутива. В Debain GNU/Linux:
%# vi /etc/default/milter-greylist
Настройка
Конфигурирование выполняется через файл /etc/milter-greylist/greylist.conf.
В этот файл можно добавить чёрные списки (по IP-адресам), белые списки (по IP-адресам) и чёрные и белые списки по адресам электронной почты.
Примеры:
Все письма, которые приходят с этих адресов, считать спамом.
list "spammer ips" addr { \
116.24.19.147\32 \
121.141.105.191\32 \
121.186.4.54\32 \
}
acl blacklist list "spammer ips"
Все письма, которые приходят с этих адресов, считать правильными и пропускать сразу же.
list "my clients" addr { \
204.3.218.131/32 \ # my webserver
65.17.234.133/32 \ # my other webserver
}
acl whitelist list "my addresses"
Все письма, которые приходят на этих пользователей, пропускать сразу же. Некоторые любят читать спам. Они там узнают много нового.
list "open users" rcpt { \
spamconsumer@mydomain.com \
}
acl whitelist list "open users"
Все письма, которые идут от этих пользователей, пропускать сразу же. Ни разу не было чтобы спам приходил от их имени, предположим, что и в будущем не придёт (наивное предположение, вообще говоря).
list "my addresses" from { \
jay@brownnoser.com \
kroumay@brownnoser.com \
}
acl whitelist list "my addresses"
После изменения настроек, для того чтобы они вступили в силу, нужно перезапустить программу milter-greylist:
# /etc/init.d/milter-greylist restart
Подключение к sendmail
В конец m4-файла нужно добавить строки:
INPUT_MAIL_FILTER(`greylist',`S=local:/var/milter-greylist/milter-greylist.sock, F=, T=S:1m;R:1m')dnl
define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnl
define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')dnl
define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')dnl
define(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnl
перестроить cf-файл и перезапустить sendmail.
%# cd /etc/mail
%# make
%# /etc/init.d/sendmail restart
Недостатки этого решения
Основным недостатком грейлистинга считается то, что время доставки первого письма от неизвестного отправителя существенно увеличивается. Если раньше письмо приходило мгновенно, то сейчас оно придёт только после второй попытки, спустя четыре часа (время может быть другим, оно зависит от настроек сервера отправителя).
Снизить негативные последствия от использования грейлистинга можно несколькими путями.
Использовать белые списки, куда занести IP-адреса серверов, с которыми идёт обмен почтой, но которые гарантированно не могут присылать спам (проще всего построить такой список на основе существующего журнала mail.log);
Разрешить беспрепятственное прохождение писем с серверов, поддерживающих SPF (Sender Policy Framework) — механизм обеспечивающий некоторые гарантии того, что адрес отправителя верен (подробнее об SPF можно прочитать, например в статье «Технология SPF - за и против»). Большинство популярных почтовых систем (gmail, mail.ru и проч.) поддерживают SPF.
Оригинал
http://xgu.ru/wiki/Борьба_со_спамом_в_Sendmail#.D0.A1.D0.B5.D1.80.D1.8B.D0.B5_.D1.81.D0.BF.D0.B8.D1.81.D0.BA.D0.B8_.28graylisting.29 |
|