Фильтр спама · 7 min read · Nov 14, 2025

Фильтр спама Postfix с использованием Ubuntu Dapper, MailScanner, SpamAssassin, Razor, Pyzor, DCC и ClamAV - Страница 4

3 Конфигурация Pyzor, Razor, DCC, SpamAssassin и MailScanner

3.1 Конфигурация Pyzor

Сначала нам нужно изменить некоторые разрешения на pyzor:

chmod -R a+rX /usr/share/doc/pyzor /usr/bin/pyzor /usr/bin/pyzord

Эта следующая команда должна быть изменена, если у вас другая версия python. Попробуйте найти pyzor.

chmod -R a+rX /usr/lib/site-python/pyzor

Здесь мы указываем IP-адрес сервера Pyzor для Pyzor. Это создаст директорию .pyzor в обоих домашних каталогах пользователей и поместит IP-адрес сервера в файл servers. Затем он протестирует соединение. Если вы находитесь за брандмауэром, откройте порт 24441/udp на вход и выход к вашему серверу. Также откройте 6277/udp для DCC, 2703/tcp для Razor и 783/tcp для SpamAssassin:

pyzor ping

Обычно вы получите тайм-аут от ping pyzor, так что не беспокойтесь об этом. Мы протестируем снова позже.

Если в будущем IP-адрес сервера изменится, вам нужно будет снова пройти через этот раздел. Вы можете найти адрес текущего сервера Pyzor здесь http://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x.

Если Pyzor работает, вы увидите “Pyzor: got response:” Pyzor запрашивает сервер Pyzor так же, как ваш компьютер запрашивает DNS-сервер. Единственное практическое отличие - это номер порта, который используется. Если Pyzor не работает, возможно, вам нужно открыть порт на вашем брандмауэре или сервер Pyzor занят.

3.2 Конфигурация Razor

Создайте конфигурацию default.razor в домашнем каталоге root:

cd  
rm /etc/razor/razor-agent.conf  
razor-admin -create  
razor-admin -create

Razor v2 требует, чтобы репортеры были зарегистрированы, чтобы их репутации могли вычисляться со временем и они могли участвовать в механизме отзыва. Регистрация осуществляется с помощью razor-admin -register. Когда razor-admin -register вызывается от имени root, он ведет переговоры о регистрации с сервером номинаций и записывает информацию о личности в /root/.razor/identity-username. Вызовите его вручную одним из следующих способов:

  1. Чтобы зарегистрировать пользователя: foo и пароль: s1kret (foo и s1kret - примеры):
razor-admin -register -user=foo -pass=s1kr3t
  1. Чтобы зарегистрироваться с адресом электронной почты и получить назначенный пароль:
razor-admin -register [email protected]
  1. Чтобы получить назначенные (случайные) имя пользователя и пароль:
razor-admin -register

Я обычно просто делаю номер 3. Внесите следующие изменения в /root/.razor/razor-agent.conf:

vi /root/.razor/razor-agent.conf

Измените debuglevel = 3 на debuglevel = 0 (да, ноль, а не “o”). Это предотвратит заполнение вашего диска информацией отладки. Также мы переместим эти конфигурации в место, где пользователь Postfix сможет их читать, поэтому добавьте строку razorhome в конец файла. Эти две строки должны выглядеть так, когда вы закончите:

debuglevel             = 0
razorhome             = /var/lib/MailScanner/.razor/

Мы протестируем Razor позже. man razor-agent.conf или перейдите на http://razor.sourceforge.net/docs/razor-agent.conf.php для получения дополнительной информации о Razor.

3.3 Установка и конфигурация DCC

Установите DCC:

apt-get install dcc-client

Мы не запускаем сервер DCC, поэтому нам не нужно тратить время на проверку себя: Если вы крупная организация (100,000 сообщений в день), вам следует рассмотреть возможность запуска собственного сервера.

После завершения установки выполните:

cdcc "delete 127.0.0.1"  
cdcc "delete 127.0.0.1 Greylist"

Проверьте нашу установку с помощью:

cdcc info

Вы должны получить ‘requests ok’ от серверов.

4 Конфигурация MailScanner, ClamAV и SpamAssassin

4.1 MailScanner и ClamAV

Остановите Postfix:

postfix stop

Установите пакеты:

apt-get install mailscanner clamav

Обновите определения вирусов ClamAV:

freshclam

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

Скачайте архив с http://www.mailscanner.info/downloads.html … На момент написания это версия 4.56.8-1, и ссылка на архив http://www.mailscanner.info/files/4/tar/MailScanner-install-4.56.8-1.tar.gz. Затем установите MailScanner, используя скрипт install.sh.

cd  
apt-get remove mailscanner  
wget http://www.mailscanner.info/files/4/tar/MailScanner-install-4.56.8-1.tar.gz  
tar zxvf MailScanner-install-4.56.8-1.tar.gz  
cd MailScanner-install-4.56.8  
./install.sh

Игнорируйте сообщение о строках cron, которые нам нужно добавить в cron на данный момент.

После этого нам нужно создать директорию для SpamAssassin в спуле и дать разрешения postfix на нее, если вы запустите sa-learn –force от имени root, база данных bayes, которая хранится в этих директориях, изменится на root:root, и spamassassin выдаст ошибку при обращении к БД. Просто следите за mail.log, и вы вспомните, чтобы изменить разрешения обратно. Также отключите конфигурации по умолчанию MailScanner:

mkdir /var/spool/MailScanner/spamassassin  
mv /etc/MailScanner /etc/MailScanner.dist

Создайте резервную копию вашего файла MailScanner.conf:

cp /opt/MailScanner/etc/MailScanner.conf /opt/MailScanner/etc/MailScanner.conf.back

Отредактируйте MailScanner.conf:

vi /opt/MailScanner/etc/MailScanner.conf

Измените следующие параметры в MailScanner.conf:

%org-name% = YOURDOMAIN-COM
%org-long-name% = Your Company Long Name INC
%web-site% = www.yourdomain.com
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanners = clamav
Spam Subject Text = [SPAM]
Send Notices = no
Spam List = ORDB-RBL SBL+XBL
Required SpamAssassin Score = 6
High SpamAssassin Score = 10
Spam Actions = deliver striphtml
High Scoring Spam Actions = delete
Rebuild Bayes Every = 86400
Wait During Bayes Rebuild = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

Первые 9 строк в основном обязательны для того, чтобы все работало, остальные рекомендуются. MailScanner.conf хорошо документирован, поэтому, пожалуйста, прочитайте примечания там, если у вас есть какие-либо вопросы по остальным параметрам, которые мы изменили. Пройдитесь по этому файлу сверху вниз.

Также обратите внимание на раздел “Удаление/Логирование опасного или потенциально оскорбительного контента” в файле MailScanner.conf. Мне пришлось отключить большинство из них, потому что клиенты жаловались на сообщения ‘{Disarmed}’.

4.2 SpamAssassin

Сначала нам нужно отключить файл конфигурации SpamAssassin по умолчанию:

mv /etc/spamassassin/local.cf /etc/spamassassin/local.cf.disabled

Теперь давайте создадим резервную копию файла конфигурации SpamAssassin в MailScanner, а затем отредактируем:

cp /opt/MailScanner/etc/spam.assassin.prefs.conf /opt/MailScanner/etc/spam.assassin.prefs.conf.back
vi /opt/MailScanner/etc/spam.assassin.prefs.conf

Добавьте эти две строки в начало spam.assassin.prefs.conf:

pyzor_options --homedir /var/lib/MailScanner/
razor_config /var/lib/MailScanner/.razor/razor-agent.conf

Измените, где SpamAssassin ищет базу данных Bayes, закомментируйте путь bayes_path по умолчанию или измените его соответственно:

#bayes_path /var/lib/MailScanner/bayes
bayes_path /var/spool/MailScanner/spamassassin/bayes

Ищите эти строки и измените их соответственно:

bayes_ignore_header X-YOURDOMAIN-COM-MailScanner
bayes_ignore_header X-YOURDOMAIN-COM-MailScanner-SpamCheck
bayes_ignore_header X-YOURDOMAIN-COM-MailScanner-SpamScore
bayes_ignore_header X-YOURDOMAIN-COM-MailScanner-Information

“YOURDOMAIN-COM” следует заменить на то, что вы использовали для “%org-name%” в файле MailScanner.conf. Оставьте “X-“ на месте.

Убедитесь, что “bayes_auto_expire 0” не закомментирован:

bayes_auto_expire 0

Отредактируйте файл SpamAssassin v310.pre, чтобы включить Razor и DCC

vi /etc/spamassassin/v310.pre

Раскомментируйте следующие строки:

loadplugin Mail::SpamAssassin::Plugin::DCC
loadplugin Mail::SpamAssassin::Plugin::Razor2

5 Соберем все вместе

Скопируйте конфигурации Pyzor и Razor в место, где пользователь Postfix сможет их читать:

cp -R /root/.pyzor /var/lib/MailScanner  
cp -R /root/.razor /var/lib/MailScanner

Теперь, когда у нас все это есть, установите правильные разрешения:

chown -R postfix.postfix /var/spool/MailScanner/  
chown -R postfix.postfix /var/lib/MailScanner/

Давайте посмотрим, доволен ли SpamAssassin:

su postfix -p -c 'spamassassin -x -D -C /opt/MailScanner/etc/spam.assassin.prefs.conf --lint'

Вы должны увидеть строки с DCC, Pyzor и Razor, которые говорят о загрузке плагина и, надеюсь, без ошибок.

ПРИМЕЧАНИЕ: Если вы когда-либо запустите sa-learn, помните, что нужно запускать его так: su postfix -p -c ‘sa-learn –sync –force-expire -C /opt/MailScanner/etc/spam.assassin.prefs.conf’, иначе, когда SpamAssassin перестраивает базу данных bayes, он не сможет ее прочитать.

Если все выглядит хорошо, продолжайте, если нет, устраните неполадки, а затем продолжайте.

Завершая эту часть, нам нужно добавить задания cron, которые будут очищать/обновлять/запускать MailScanner, вы, вероятно, видели сообщение об этом после завершения скрипта установки MailScanner. Причина, по которой мы делаем это сейчас, заключается в том, что мы не хотим, чтобы MailScanner запускался, пока мы завершаем конфигурацию SpamAssassin.

crontab -e

Добавьте эти строки:

37      5 * * * /opt/MailScanner/bin/update_phishing_sites
58     23 * * * /opt/MailScanner/bin/clean.quarantine
42      * * * * /opt/MailScanner/bin/update_virus_scanners
3,23,43 * * * * /opt/MailScanner/bin/check_mailscanner

Нам нужно добавить строку в rc.local, чтобы MailScanner запускался при перезагрузке:

vi /etc/rc.local

Перед строкой “Exit 0” добавьте:

/opt/MailScanner/bin/check_mailscanner

Можно также создать ссылку на файл “check_mailscanner” в директории bin. Таким образом, вы сможете запускать его, когда вам нужно перезапустить MailScanner:

cd /usr/bin  
ln -s /opt/MailScanner/bin/check_mailscanner check_mailscanner

Просто чтобы получить чистый лог для просмотра и перезагрузите:

rm /var/log/mail.log  
reboot

Если вы видите некоторые ошибки при перезагрузке при запуске MailScanner о Perl Sys/Hostname/Long.pm, вам нужно установить его следующим образом:

perl -MCPAN -e shell

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

install Sys::Hostname::Long

Когда это будет сделано, введите “quit”, чтобы вернуться в консоль. Перезагрузите или запустите MailScanner с помощью скрипта “check_mailscanner”.

На этом этапе у вас должен быть полностью функциональный фильтр спама. Посмотрите на tail -f /var/log/mail.log, он должен быть практически свободен от ошибок.

Этот README должен быть полезен для будущего использования. Скопируйте его в ваш фильтр спама для быстрого справочного материала.

POSTFIX, UBUNTU, MAILSCANNER README
************************************************
ADD DOMAIN
**********************************************
- Отредактируйте '/etc/postfix/relay_recipients', 'relay_domains' и 'transport'.
- Запустите 'postmap /etc/postfix/relay_recipients'. То же самое для 'relay_domains' и 'transport' после редактирования, чтобы добавить домены в файл db.
- 'postfix reload' для того, чтобы postfix прочитал новые файлы db.
- Чтобы добавить пользователей в домены, отредактируйте 'relay_recipients' и выполните postmap.
**********************************************
CONTROLLING BLIST WLIST
**********************************************
- Отредактируйте /etc/postfix/sender_access
- Запустите 'postmap /etc/postfix/sender_access'
- Запустите 'postfix reload'
**********************************************
OTHER CONFIG FILES
**********************************************
- Чтобы отредактировать настройки MailScanner "/opt/MailScanner/etc/MailScanner.conf"
- Чтобы отредактировать настройки spamassassin "/opt/MailScanner/etc/spam.assassin.prefs.conf"
- Чтобы отредактировать настройки clamav "/etc/clamav/clamd.conf"
**********************************************
MISC
************************************************
- Запустите 'LINUX2', если появляются ошибки postfix о файлах, которые не совпадают в jailroot.
- Запустите 'postfix check', чтобы увидеть, синхронизирован ли postfix с jailroot.
- Запустите newaliases, чтобы обновить базу данных /etc/postfix/aliases, если в этом файле были внесены изменения..
- 'mailq' и 'qshape', чтобы проверить очередь.
- 'check_mailscanner', чтобы перезапустить MailScanner.
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.