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

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

Введение

Это аналогичная версия HOWTO, которую можно найти здесь: http://www200.pair.com/mecham/spam/spamfilter20050628.html. Если вы смотрите этот howto, предполагается, что у вас есть некоторый опыт работы с почтовыми серверами, DNS, TCP/IP, брандмауэрами и Linux в целом.

1 Настройка сервера Ubuntu

Пожалуйста, смотрите документацию, уже доступную онлайн, для получения подробной информации о настройке сервера Ubuntu. HowToForge имеет несколько очень подробных HowTo. Однако здесь описаны некоторые конфигурации установки, которые следует учитывать при настройке сервера, которые могут отличаться от других howto.

ПРИМЕЧАНИЕ: Ubuntu устанавливается как система setuid по умолчанию. Это означает, что учетная запись root отключена, и вам нужно запускать все с 'sudo' перед ним, чтобы запустить его от имени root. Обойти это можно, запустив 'sudo su -', и вам больше не нужно будет вводить 'sudo' перед командой, потому что вы находитесь в сеансе bash от имени root. В остальной части этого документа предполагается, что вы сделали это и работаете в сеансе bash от имени root, поэтому команды sudo не будут даны. Мораль истории такова: когда вы входите в Ubuntu через SSH или консоль, не забудьте запустить 'sudo su -' перед тем, как начать редактировать системные файлы, перемещать/создавать директории или устанавливать/удалять программное обеспечение и службы.

1.1 Разделы

Разделение диска таким образом не является обязательным, но это поможет вашему серверу не полностью исчерпать пространство, если что-то пойдет не так в директории /var. Кроме того, разделение диска таким образом позволит вам создать несколько дополнительных графиков с MailScannerMRTG, которые могут отдельно отслеживать /var, /var/log и /var/spool. MailScannerMRTG не будет проверять пространство на диске в директориях, он может только вычислять размер по разделам.

Пример моей таблицы разделов:
/boot       50MB        Загрузочный раздел      EXT3 (ПЕРВИЧНЫЙ)
Swap        2GB     Раздел подкачки (Размер зависит от вашей памяти, удвойте вашу память, это должно быть нормально) (ПЕРВИЧНЫЙ)
/       2GB     Корневой раздел     EXT3 (ЛОГИЧЕСКИЙ)
/var        1GB     Раздел переменных данных    EXT3 (ЛОГИЧЕСКИЙ)
/var/log    3GB     Раздел переменных данных    EXT3 (ЛОГИЧЕСКИЙ)
/var/spool  2GB     Раздел переменных данных Spool  EXT3 (ЛОГИЧЕСКИЙ)
/usr        4GB     Установленные пользователем программы       EXT3 (ЛОГИЧЕСКИЙ)
/usr/local  2GB     Установленные пользователем программы   EXT3 (ЛОГИЧЕСКИЙ)
/home       ANY     Домашние директории (Хорошее место для размещения любого дополнительного пространства, вы можете переразделить, если у вас закончится место и использовать это.)    EXT3 (ЛОГИЧЕСКИЙ)

1.2 Проверка сетевых настроек

Нам нужно убедиться, что система настроена с действительным статическим IP, правильные DNS-серверы находятся в /etc/resolv.conf, и ваш сервер идентифицирован в файле /etc/hosts.

vi /etc/network/interfaces

Файл сетевых интерфейсов должен выглядеть примерно так:

auto lo eth0
iface lo inet loopback
# Основной сетевой интерфейс
iface eth0 inet static
        address  192.168.1.100
        netmask  255.255.255.0
        network  192.168.1.0
        broadcast 192.168.1.255
        gateway  192.168.1.1

Перезапустите сетевую службу, чтобы изменения вступили в силу:

/etc/init.d/networking restart

Отредактируйте файл resolv.conf, чтобы добавить DNS-серверы:

vi /etc/resolv.conf

Убедитесь, что ваше доменное имя находится вверху файла resolv.conf, он должен выглядеть примерно так:

search example.com
nameserver 192.168.0.1
nameserver 192.168.0.2
vi /etc/hosts

Верхняя часть файла должна выглядеть примерно так:

127.0.0.1 localhost.localdomain localhost
192.168.0.100 sfp.example.com sfp

Поскольку мы здесь, вы можете также добавить любые другие хосты, о которых вы хотите, чтобы наш фильтр спама знал. Добавьте любые внутренние почтовые серверы здесь. Просто добавьте любые другие записи в конец списка.

1.3 APT и другие настройки

APT необходимо настроить для поиска в репозиториях universe и multiverse. Сделайте резервную копию вашего текущего /etc/apt/sources.list:

cp /etc/apt/sources.list /etc/apt/sources.list.default

Замените его следующим файлом sources.list:

vi /etc/apt/sources.list
deb http://us.archive.ubuntu.com/ubuntu dapper main restricted
deb-src http://us.archive.ubuntu.com/ubuntu dapper main restricted
deb http://us.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb http://us.archive.ubuntu.com/ubuntu dapper universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu dapper universe multiverse
deb http://security.ubuntu.com/ubuntu dapper-security main restricted
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted
deb http://security.ubuntu.com/ubuntu dapper-security universe multiverse
deb-src http://security.ubuntu.com/ubuntu dapper-security universe multiverse

Нам нужно обновить/обновить кэш apt и установить некоторое программное обеспечение. Чтобы обновить кэш, выполните:

apt-get update

Примечание: сейчас хорошее время, чтобы изменить образ ядра на правильный, скорее всего, вам понадобится ‘linux-image-i686’. Если вы не знаете, что это значит, посмотрите это. Выполните apt-get upgrade и уделите время для устранения любых ошибок или проблем, которые могут у вас возникнуть. Мы хотим устранить все, что может вызвать проблемы в будущем. Не забудьте перезагрузить, как только все будет готово, и выполните быструю dmesg | less, это может оказать большое влияние.

apt-get install ssh

После установки ssh вы должны подключиться к серверу через ssh, используя PuTTY с вашего рабочего стола Linux или Windows. Это упростит выполнение остальной части этого howto, потому что вы сможете копировать/вставлять в терминал с рабочего стола. Так что вперед, ssh этого пса.

Я обычно просто устанавливаю время BIOS на местное время, а затем выполняю следующее, чтобы синхронизировать часы.

apt-get install ntpdate  

hwclock --systohc

Теперь мы устанавливаем большинство необходимых нам вещей. Я разделил список на 4 запуска APT для установки. 5-15 установок за раз кажется разумным, на ваше усмотрение:

apt-get install libc6-dev dpkg-dev db4.3-util libdb4.3-dev vim lynx bzip2 unzip perl-doc libwww-perl ntp-simple  
  
apt-get install zlib1g-dev zip libdbi-perl libconvert-binhex-perl gcc make autoconf automake libtool libmail-spf-query-perl rblcheck libnet-ident-perl  
  
apt-get install flex bison libcompress-zlib-perl pax libberkeleydb-perl ncftp unzoo arj lzop nomarch arc zoo  
  
apt-get install postfix postfix-pcre postfix-mysql postfix-ldap cabextract lha unrar razor pyzor spamassassin

Выберите NO CONFIGURATION, когда появится Debconf для Postfix.

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

wget http://archive.ubuntu.com/ubuntu/pool/universe/a/arj/unarj_3.10.21-2_all.deb  
  
dpkg -i unarj_3.10.21-2_all.deb

Теперь нам также нужно удалить некоторые программы, надеюсь, вам не нужна поддержка PCMCIA или принтера. Этот сервер также не будет нуждаться в поддержке модемов. У вас не обязательно будут установлены все эти программы.

Удалите следующее программное обеспечение (все в одной строке):

apt-get remove ipchains lpr nfs-common portmap pidentd pcmcia-cs pcmciautils pppoe pppoeconf ppp pppconfig uw-imapd qpopper mailagent

1.6 Очистка служб

Некоторые службы могут все еще оставаться даже после удаления демонов. Сначала нам нужно сделать резервную копию inet.d:

cp -R /etc/init.d /etc/init.d.backup

Теперь мы можем остановить все службы, которые могут работать и которые нам не нужны:

/etc/init.d/lpd stop  
update-rc.d -f lpd remove  
  
/etc/init.d/nfs-common stop  
update-rc.d -f nfs-common remove  
  
/etc/init.d/portmap stop  
update-rc.d -f portmap remove  
  
/etc/init.d/pcmcia stop  
update-rc.d -f pcmcia remove  
  
/etc/init.d/pcmciautils stop  
update-rc.d -f pcmciautils remove  
  
/etc/init.d/ppp stop  
update-rc.d -f ppp remove  
  
/etc/init.d/exim4 stop  
update-rc.d -f exim4 remove  
  
update-rc.d -f ntpdate remove

Отключите все службы, которые мы остановили:

update-inetd --disable time  
  
update-inetd --disable daytime  
  
update-inetd --disable echo  
  
update-inetd --disable chargen  
  
update-inetd --disable ident  
  
update-inetd --disable discard

Последний может задать вам вопрос о “нескольких записях”, ответьте да (y).

Проверьте, что мы все сделали:

lsof -i | grep LISTEN

Единственным демоном, который вы должны увидеть на данный момент, является *:ssh. Возможно, вам придется выполнить это снова:

update-inetd --disable discard

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

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.