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

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

Перейти к: навигация, поиск

Эта статья находится в процессе написания.

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

Короткая ссылка: http://xgu.ru/wiki/sendmail/antispam

Содержание

1 Методы борьбы

1.1 Чёрные списки (black lists)

1.2 Серые списки (graylisting)

1.2.1 Инсталляция

1.2.2 Настройка

1.2.3 Подключение к sendmail

1.2.4 Недостатки этого решения

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

1.3 Байесовский анализ

2 Конфигурация Sendmail

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

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

[править] Чёрные списки (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=<[email-masked]>, relay=dsl88-247-10247.ttnet.ne
t.tr [88.247.40.7] (may be forged), reject=553 5.3.0 <[email-masked]>... 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=<[email-masked]>, relay=Nnov-hpool.quantum.ru [88.86
.70.254], reject=553 5.3.0 <[email-masked]>... 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

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

DNSBL на Wikipedia (англ.)

Anti-Spam Techniques: DNSBL in Sendmail (англ.)

How to Add RBL lists, without getting sucked in (англ.)

RBL: вред или польза

Антиспам черные списки RBL: вред или польза?

[править] Серые списки (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 { \
[email-masked] \
}
acl whitelist list "open users"

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

list "my addresses" from { \
[email-masked] \
[email-masked] \
}
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.

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

milter-greylist (англ.) — домашняя страница проекта

milter-greylist wiki (англ.)

milter-greylist README (англ.)

Для чего нужен SPF (рус.)

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

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

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

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

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

Sendmail

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

Использование ClamAV, SpamAssassin, MIMEDefang для борьбы с нежелательной почтой в Sendmail

Переход с POP3 на IMAP4

Копирование исходящей почты с помощью Sendmail

Получено с http://xgu.ru/wiki/%D0%91%D0%BE%D1%80%D1%8C%D0%B1%D0%B0_%D1%81%D0%BE_%D1%81%D0%BF%D0%B0%D0%BC%D0%BE%D0%BC_%D0%B2_Sendmail

Категории: Незавершённая статья | Почта

Просмотры

Статья

Обсуждение

Править

История

Личные инструменты

Представиться системе

Навигация

Заглавная страница

Свежие правки

Случайная статья

Справка

Поиск

Инструменты

Ссылки сюда

Связанные правки

Загрузить файл

Спецстраницы

Версия для печати

Постоянная ссылка

Последнее изменение этой страницы: 14:46, 12 мая 2008.

К этой странице обращались 499 раз.

Политика конфиденциальности

Описание Xgu.ru

Отказ от ответственности