Меню

Freebsd postfix spamassassin настройка

Настройка антиспам-фильтра SpamAssassin в связке с Postfix на FreeBSD 11

Сегодня речь пойдёт о настройке антиспам-фильтра SpamAssassin на FreeBSD. К сожалению, активное развитие русскоязычного сообщества по настройке unix серверов, в частности FreeBSD, закончилось где-то в начале 2000-ых и актуальной информации по данной теме сейчас крайне мало. Убедиться в этом не сложно, достаточно посмотреть на даты последних публикаций или ветки форумов. Чуть лучше дела у линуксоидов, но тоже не фонтан. По всей видимости, делиться знаниями и наработками безвозмездно, сейчас никто не желает или просто знаний нет. конечно, это всё печально.

На борту у SpamAssassin имеется статистический обучаемый анализатор, на основе байесовского классификатора. Фильтр умеет взаимодействовать с базами данных, черными/белыми списками и системами, основанными на сигнатурном анализе (Razor, Pyzor, DCC). Таким образом, SpamAssassin анализирует, переданные ему сообщения, по ряду характерных признаков, и назначает определенное количество баллов по каждому из них. Набранные баллы, суммируются и сравниваются с пороговым значением для признания письма спамом, что отображается в заголовке письма.

Установка SpamAssassin на FreeBSD

Устанавливаем SpamAssassin из пакета. На данный момент самый свежий SpamAssassin версии 3.4.1 от 2015-04-28:

или традиционно через порты:

На мой взгляд, первый вариант предпочтительнее. Хоть сам пакет и не большой, однако тянет за собой кучу зависимостей, потому установка из портов, отнимает гораздо больше по времени.

После установки, желательно, ознакомиться с прилагаемой инструкцией /usr/local/share/doc/spamassassin/INSTALL, после чего уже вносить изменения в файлы конфигурации, которые находятся в каталоге /usr/local/etc/mail/spamassassin/.

В конфете /usr/local/etc/mail/spamassassin/local.cf указывается порог срабатывания фильтра, какие тесты предполагается использовать и задать им требуемые баллы, также определяются заголовок сообщения о спаме, белые/черные списки, автообучение и многое другое. Подробнее останавливаться на тонкой настройке фильтра не буду, замечу лишь, что свежеустановленный spamassassin ОБЯЗАТЕЛЬНО нуждается в обучении, без этого он практически бесполезен в борьбе с русскоязычным спамом.

По идее, спамфильтр можно запустить и с настройками по умолчанию. Вот пример того, что вы увидите в конфигурационном файле с некоторыми пояснениями:

в файл /etc/rc.conf следует добавить:

Вторая строка нужна для запуска фильтра от пользователя spamd (создаётся при установке пакета). По умолчанию SpamAssassin работает от суперпользователя (root), что не очень здорово.

На заключительном этапе предлагается выполнить два скрипта sa-update и sa-compile для обновления базы и компиляции набора правил SpamAssassin. Везде почему-то опускают этот момент.

Настройка связки Postfix и SpamAssassin на FreeBSD

Spamassasin уже полностью готов к работе, однако Postfix пока ничего об этом не знает. Намекнём ему о такой возможности. Для этого подправим конфигурационный файл master.cf в каталоге /usr/local/etc/postfix/:

Читайте также:  Как изменить настройки сообщений вконтакте

Находим строку (в самом начале):

В самый конец файла добавляем строку с информацией о новом транспорте:

Перезапустив Postfix, можем наблюдать работу SpamAssassin в логах и дополнительных заголовках письма. Протестировать работу SpamAssassin можно стандартной сигнатурой GTUBE, поместив её в тело письма или просто в файл:

Обучение SpamAssassin

Видим, что кое-как фильтр начал работать. Почему кое-как? Как я уже писал выше, SpamAssassin нужно обучать. Для обучения, в комплекте идёт утилита sa-learn.

Обучить программу следует от имени того же пользователя, от которого она работает. Скармливаем sa-learn письма со спамом (формат ящиков maildir):

Обучение программы нормальными письмами:

В заключение, хочу дать несколько полезных ссылок по теме:

интеграции SpamAssassin с Postfix. Описано решение как удалять помеченные спам-сообщения (англ.).: https://wiki.apache.org/spamassassin/IntegratePostfixViaSpampd

хорошая статья в журнале «Системный администратор», но старенькая: http://samag.ru/archive/article/559

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Источник

Ещё один блог сисадмина

четверг, 17 сентября 2009 г.

Postfix и Spamassassin: Как фильтровать спам

Эта статья не рассматривает процесс установки postfix. Для этого вы можете обратиться к статье «Как запустить postfix с виртуальными доменами».

На этот момент у вас должен иметься работающий SMTP-сервер под управлением postfix. Потребуется пара пакетов, которые нужно установить: spamassassin и его клиент spamc.
Пакет spamassassin содержит демон, который может быть вызван пользовательской программой, например procmail. но также может быть встроен в агент передачи почты, такой как postfix.

2. Использование spamassassin как самостоятельного демона

2.1. Настройка spamassassin

И так, теперь вы установили spamassassin из репозитория debian. С настройками по умолчанию spamassassin отключен, но при включении будет запускаться от имени пользователя root. Чтобы избежать этого, мы заведём особого пользователя и группу для spamassassin. Выполните следующие команды от имени пользователя root:
Теперь нам нужно поменять некоторые настройки в файле /etc/default/spamassassin и удостовериться, что у вас получились следующие значения:
Таким образом мы настроили запуск демона spamd от пользователя spamd, создали его собственный домашний каталог (/var/lib/spamassassin/) и заставили его ввести журнал в файле /var/lib/spamassassin/spamd.log

2.2. Конфигурирование spamassassin

Чтобы позволить использование _SCORE_ в директиве rewrite_header, вы должны установить report_safe в 0.

В следующем разделе мы сообщаем spamassassin’у о необходимости использовать бэйсовский классификатор и улучшать его с помощью автообучения по сообщениям, которые он анализирует.

Читайте также:  Программа для настройки кнопок руля

В последнем разделе мы отключаем сотрудничающие сети, такие как pyzor, razor2 и dcc. Эти сотрудничающие сети ведут актуальный каталог известных контрольных сумм для писем, которые были определены как спам. Они могут быть интересны, но я не использую их здесь, поскольку я считаю, что spamassassin справляется со спамом достаточно хорошо, используя только эти правила.

Теперь запустим spamd следующей командой:
Мы почти закончили, нам осталось настроить postfix таким образом, чтобы он передавал все письма, которые нужно доставить в локальные почтовые ящики, в spamassassin.

3. Заставляем Postfix вызывать Spamassassin

Теперь нам нужно сообщить postfix о необходимости использовать spamassassin. В нашем случае spamassassin будет вызываться только единожды, когда postfix завершит обработку письма.

Чтобы сообщить postfix использовать spamassassin, мы отредактируем файл /etc/postfix/master.cf и заменим строку:
на:
и затем в конец файла master.cf, добавим:
и наконец, наш фильтр спама настроен, нам осталось только перезагрузить настройки postfix и всё должно быть готово.
4. Заключение

Это один из возможных способов настройки, который позволяет фильтровать спам с помощью spamassassin и postfix.

Существуют другие способы сделать то же самое (на которых я остановлюсь в другой раз), например воспользоваться amavis, который использует spamassassin без необходимости использовать демон spamassassin (spamd).

Представленный вариант по прежнему отправляет все письма их получателям (хотя кто-то вроде меня предпочитает их отклонять и выбрасывать письма, помеченные как спам). Можно настроить правило в своём почтовом или веб-клиенте, фильтруя все письма содержащие тему «[***** SPAM» и перемещая их в нужное место в клиенте, так что вы сможете легко отделить их от вашей ценной почты, но в конце концов, если они здесь, то вам незачем удалять их, потому что в спаме иногда попадаются действительно важные письма.

Источник

Антиспам средствами postfix+spamassassin

У меня небольшой домен, который я поддерживаю и в один прекрасный момент спам настолько достал, что было решено минимизировать его насколько это возможно. Результатом я более чем доволен спама я в принципе не вижу бывает 1 письмо за месяца 3-4 в инбокс падает. Конечно есть ложные срабатывания, но они в основном от рассылок.
Это моя личная конфигурация которой я хочу поделиться, возможно некоторые вещи сделать можно лучше я этого не отрицаю. Так же в зависимости от сайта нужно будет делать свой тюнинг в определенную сторону.

Итак для этого нам понадобятся postfix, spamassassin, amavisd-new. Я использую Debian, ставим пакеты apt-get install postfix, postfix-pcre, spamassassin, amavisd-new

Читайте также:  Настройка джойстика на очках

Конфигурационный файл /etc/postfix/main.cf

alias_maps = hash:/etc/aliases
virtual_alias_maps = hash:/etc/postfix/virtual
proxy_interfaces = 1.1.1.1 # айпи адрес на WAN интерфейсе, если у вас сервер использует внутрение адреса.
smtpd_helo_required = yes
strict_rfc_envlopes = yes
disable_vrfy_command = yes

# smtpd_delay_reject = yes — Дефалт поэтому все правила применяться лишь после команды RCPT TO.

smtpd_recipient_restrictions =
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unlisted_recipient
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
reject_unknown_sender_domain
reject_unknown_recipient_domain
check_recipient_access hash:/etc/postfix/spam_trap # список адресов которые кушают спам без запретов.
reject_unknown_reverse_client_hostname
reject_invalid_hostname
reject_non_fqdn_hostname
check_client_access cidr:/etc/postfix/trusted_IP # белый лист
check_helo_access pcre:/etc/postfix/helo_checks # регулярные выражения для ловли типичных спамерских HELO.
check_helo_access hash:/etc/postfix/helo_checks_text
check_sender_access hash:/etc/postfix/not_our_domain_as_sender # Если отправитель в нашем домене, требовать авторизацию
check_sender_mx_access cidr:/etc/postfix/sender_mx_access # список не маршрутизируемых сетей
## Looking up for DNSBL
reject_rbl_client zen.spamhaus.org
permit

smtpd_data_restrictions =
reject_multi_recipient_bounce
reject_unauth_pipelining # Можно использовать эту опцию вне data_restriction только если smtpd_delay_reject = NO установлено, например для задержки показа приветствия (HELO)

smtpd_etrn_restrictions = reject
smtpd_soft_error_limit = 3

header_checks = pcre:/etc/postfix/header_checks # обычная проверка на присутствие в Recived полях нашего домена
mime_header_checks = pcre:/etc/postfix/mime_header_checks # блокировка атачментов

# Это часть конфига для авторизации через dovecot и направления писем в хранилище.
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_authenticated_header = yes

dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
virtual_transport = dovecot
virtual_mailbox_domains = example.com
virtual_mailbox_maps = hash:/etc/postfix/vmailbox

/etc/postfix/helo_checks
/^mail\.example\.com$/ Reject That’s my hostname, use your own
/^1\.1\.1\.1$/ Reject That’s my IP address, use your own
/^[1\.1\.1\.1]$/ Reject That’s my IP address, use your own
/^[0-9.]+$/ Reject Your client not RFC 2821 compilant
/(7)<1,3>\.(4)<1,3>\.(3)<1,3>\.(2)<1,3>/ 553 SPAM-raw-ip-in-helo
/(^|[0-9.-])([axv]dsl|isadsl|as|bgp|dynamicIP|broadband|cable|[ck]lient|dhcp|dial|dialin|dialup|dialer|dip|dsl|dslam|dup|dyn|dynamic|host|ip|isdn|modem|nas|node|pool|ppp|pppo[ae]|sirius.*ukrtel.*|user|users|vpn)[0-9.-]/i 553 SPAM_DYNAMIC-in-helo
/(9*-)<3>4*(\..*)<2,>/i 553 SPAM-ip-add-rr-ess_networks-in-helo
/(3*\.)<4>(.*\.)<3,>.*/i 553 SPAM-ip-add-rr-ess_networks-in-helo
/smtp[-0-9]*\.orange\.nl/i 553 SPAM-orange.nl
/smtp[-0-9]*\.orange\.fr/i 553 SPAM-orange.fr
/\.lan$/i 533 SPAM-lan-in-helo

/etc/postfix/sender_mx_access
127.0.0.0/8 Reject MX points to LOCALHOST
192.168.0.0/16 Reject MX points to RFC1918 unreachbale network
10.0.0.0/8 Reject MX points to RFC1918 unreachable network
172.16.0.0/12 Reject MX points to RFC1918 unreachable network
14.0.0.0/8 Reject MX points to RFC3330 special network
224.0.0.0/4 Reject MX in class D multicast network

Все адреса которые указаны в /etc/postfix/spam_trap, так же присутствую в /etc/postfix/virtual где они все направляються на один ящик spam@example.com.

@local_domains_maps = ( [ «.$mydomain», ‘.example.org’ ] );

$sa_spam_subject_tag = ‘Spam> ‘;
$sa_tag2_level_deflt = 6.0; # add ‘spam detected’ headers at that level
$sa_kill_level_deflt = 14.0; # triggers spam evasive actions (e.g. blocks mail)

$final_banned_destiny = D_REJECT;
$final_spam_destiny = D_REJECT;

@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Простейший скрипт который будет выполнять обучение bayes фильтра

Я не использую базы данных или LDAP т.к. домен небольшой и управлять файлами гораздо быстрее на данный момент.

Источник

Adblock
detector