postfix+postgrey+spamassassin в Debian’е

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

postfix

Postfix — это почтовый сервер. По сути это комплекс из нескольких независимых программ, каждая из которых выполняет какую-то одну функцию. Изначально его разработка ориентирована на безопасность, поэтому архитектура разрабатывалась так, чтобы минимизировать права пользователя, под которым работает каждый компонент. При этом компоненты могут обмениваться между собой данными.
Устанавливаем пакеты, если postfix у вас еще не установлен:

apt-get install postfix

При установке будет запрошен тип установки по умолчанию, выбираем «Интернет-сайт».

spamassassin

Теперь устанавливаем spamassassin.

apt-get install spamassassin

Первым делом включаем его. Для этого в файле /etc/default/spamassassin надо строчку

ENABLED=0

поменять на

ENABLED=1

После этого можно стартовать сервис

service spamassassin start

Если сообщение выглядит так:

Starting SpamAssassin Mail Filter Daemon: spamd.

значит сервис успешно запустился. Теперь надо подключить спам-фильтр к почтовому серверу.

Переходим в директорию /etc/postfix, находим там файл master.cnf. В этом файле меняем строчку

smtp inet n - - - - smtpd

На строчку

smtp inet n - - - - smtpd -o content_filter=spamassassin

В данном случае то, что указано в качестве значения опции content_filter, — это название фильтра, и вы можете его задавать как вам больше нравится.

В конец файла добавляем сам фильтр. Обратите внимание, что создавать пользователя debian-spamd не надо, он уже есть, он создается автоматически при установке spamassassin. Можно это проверить командой «cat /etc/passwd | grep spam»

spamassassin unix - n n - - pipe
  flags=R user=debian-spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

И после этого перезапускаем сервис:

service postfix restart

Теперь наш почтовый сервер будет пропускать почту через фильтр spamassassin.

postgrey

Добавляем список серых адресов, он же грей-листинг. Что это такое? Это механизм, также использующийся для фильтрации спама. Хотя умные спамеры этот механизм научились уже обходить, все равно это снижает количество спама, которое до вас дойдет. Сам механизм работает так: на ваш сервер отправляется письмо, ваш почтовый сервер делает вид, что он недоступен в данный момент. Нормальный почтовый сервер получит ответ и перешлет письмо еще раз через некоторый интервал времени. Если письмо к нам приходит второй раз, то оно уже идет в обработку почтовым сервером, то есть, сначала проверяется на спам, а затем уже доставляется адресату. Вот такая многоступенчатая фильтрация получается.
И вместе с настройкой грэй-листинга донастроим безопасность почтового сервера.
Устанавливаем пакеты:

apt-get install postgrey

Редактируем файл /etc/postfix/main.cf
Меняем строчку

mynetworks =

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

mynetworks = 127.0.0.1/32 192.168.0.1/24

Если у вас включена sasl-аутентификация (а она должна быть), то у вас в этом файле должны присутствовать все следующие строчки:

default_transport = smtp
smtp_sasl_path = smtpd
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

Если вдруг она у вас не используется, то все строки с опциями, в названии которых содержится «sasl» можно закомментировать.
Теперь в том же файле необходимо добавить следующее:

smtpd_recipient_restrictions = 
	permit_sasl_authenticated,
	reject_sender_login_mismatch,
	reject_unknown_sender_domain,
	reject_unknown_hostname,
	reject_unknown_client,
	reject_invalid_hostname,
	reject_unverified_sender,
	reject_non_fqdn_sender,
	reject_non_fqdn_recipient,
	reject_unauth_destination,
	reject_unauth_pipelining,
	reject_unlisted_recipient,
	reject_authenticated_sender_login_mismatch,
	check_policy_service inet:127.0.0.1:10023

Сначала у нас все письма будут верифицироваться, и если они проходят все указанные проверки, то будут передаваться на обработку postgrey, что и указывается в последней строчке. Postgrey запишет в свою базу данное сообщение и если оно придет повторно через определенный интервал времени, как происходит с хорошими письмами, то оно будет передано дальше по цепочке и в итоге может попасть к получателю.
Сохраняем файл и перезапускаем сервис postfix

service postfix restart

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

[wysija_form id=»2″]