Фильтрация спама — одна из основных задач, которые обязательно надо решать на почтовых серверах, работающих в сети Интернет. И одного средства бывает обычно недостаточно, поэтому лучше всего использовать сразу несколько механизмов защиты, которые будут работать совместно, последовательно работая над чистотой ваших почтовых ящиков. Все эти программы, — 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″]