Борьба со спамом в Sendmail

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Короткий URL: sendmail/antispam


Содержание

[править] Методы борьбы

[править] Чёрные списки (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-серверов:

Дополнительная информация:

[править] Серые списки (graylisting)

Серые списки или грейлистинг — это один из методов блокирования спама на уровне почтового сервера без применения статистического анализа и вообще эвристических подходов.

Грейлистинг базируется на том (иногда сомнительном) факте, что серверы, рассылающие спам, и нормальные пользователи ведут себя по-разному. Грейлистинг блокирует письмо не на основе его содержимого, а смотря на то, как сервер пытается его отправить.

Спам-системы, как правило, не пытаются отправить письмо второй раз, если при первой попытке они получили сообщение о том, что сервер временно недоступен. Обычные системы пытаются. Они запоминают письмо в очереди на отправку и повторяют отправку потом. До тех пор, пока письмо не уйдёт, или закончится время попыток (достаточно большое).

Спамер может переслать письмо и повторно, но между двумя попытками проходит время, в течение которого он не сидел без дела, и с большой вероятностью уже успел отправить письмо в спам-ловушку. Если так, то он попадёт в соответствующий 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

[править] Недостатки этого решения

Основным недостатком грейлистинга считается то, что время доставки первого письма от неизвестного отправителя существенно увеличивается. Если раньше письмо приходило мгновенно, то сейчас оно придёт только после второй попытки, спустя четыре часа (время может быть другим, оно зависит от настроек сервера отправителя).

Снизить негативные последствия от использования грейлистинга можно несколькими путями.

  1. Использовать белые списки, куда занести IP-адреса серверов, с которыми идёт обмен почтой, но которые гарантированно не могут присылать спам (проще всего построить такой список на основе существующего журнала mail.log);
  2. Разрешить беспрепятственное прохождение писем с серверов, поддерживающих SPF (Sender Policy Framework) — механизм обеспечивающий некоторые гарантии того, что адрес отправителя верен (подробнее об SPF можно прочитать, например в статье «Технология SPF - за и против»). Большинство популярных почтовых систем (gmail, mail.ru и проч.) поддерживают SPF.

[править] Дополнительная информация

[править] Байесовский анализ

[править] Конфигурация Sendmail

Что в конфигурационном файле m4 полезного для борьбы со спамом.

http://www.acme.com/mail_filtering/sendmail_config.html


[править] Материалы по настройке почтовых систем на Xgu.ru