Как стать автором
Обновить

Защита пользователей почтового сервера от спаммеров — несколько шагов, которые помогут вам отослать спаммеров подальше

Время на прочтение6 мин
Количество просмотров28K
image

Здравствуйте, Хабровчане!

Хочу внести свою лепту в общую историю борьбы со спаммерами.
Все вы прекрасно знаете (ощущали), как противно бывает, когда ваш почтовый ящик завален кучей писем, содержащих всякий хлам, а по-простому спам. Я не говорю о бесплатных сервисах, я говорю о корпоративной почте.

Наверное многие сталкивались с тем, что ваши сотрудники ИТ-отделов не могли справиться с этой задачей или справлялись, но при этом к вам вообще переставала приходить почта.

Могу сказать одно — «При настройке защиты вашего сервера от спама, будьте в сотню раз осторожней, чем с младенцем!» — иначе получите очень интересные результаты… :)

Поведаю вам о важных настройках почтового сервера для значительного уменьшения количества приходящего спама. Почему я говорю об «уменьшении»?
Ответ очевиден — невозможно защитить почтовый сервер на 100% от спама из-за недремлющих спаммеров — каждый день они стараются придумывать все новые варианты обхода наших с вами защит.

Данные рекомендации я буду рассматривать на базе Linux сервера с установленным postfix.
В данном случае, какой дистрибутив Linux у вас стоит — не важно.

Каждый уважающий себя ит-шник, который настраивал почтовый сервер знает о прямой и обратной зоне.
Я до сих пор иногда сталкиваюсь с почтовыми серверами которые не прописаны в данных зонах. Практически в 99% случаях такие сервера будут считаться спаммерскими. Почему?
Потому что самый распространенный способ рассылать спам — это рассылка от не существующих серверов и, следовательно, не прописанных в DNS. Для того, чтобы ваш сервер не считали спаммерским нужно сделать две вещи:
1. В прямой зоне DNS прописать ip-адрес своего почтового сервера. Прямую зону можете обслуживать вы сами, ваш хостинг-провайдер или провайдер интернет-услуг.
2. В обратной зоне DNS вы также должны прописать ваш почтовый сервер. В данном случае вы должны попросить внести такую запись вашего провайдера интернет-услуг (достаточно письменной просьбы).

Если у вас эти два условия выполняются, то в 99% случаях ваш почтовый сервер не будут считать спаммерским.
Иногда это не так — если ваш IP-адрес сервера случайно или намеренно попал в черный список спам-листов, вам придется разбираться с этим своими силами...

Теперь поговорим о нашей с вами защите.
У Posfix имеется конфигурационный файл настроек, в который мы и будем прописывать наши дополнительные проверки на спам. Файл называется main.cf. Данные настройки будем добавлять в существующие блоки.

Приступим:
1. Данный параметр заставляет сервер принимать почту только от «здоровающихся» серверов. Многие спаммеры не любят пересылать строку «helo»
smtpd_helo_required = yes

2. В данной секции рассматриваются правила приема почты нашим сервером
smtpd_recipient_restrictions =

Параметр разрешающий аутентификацию по логину-паролю(если SSL у вас не настроен — уберите этот параметр, иначе логины и пароли ваших пользователей пойдут в «открытом виде»)
permit_sasl_authenticated,

Параметр указывающий postfix получать почту от определенных ip адресов (как я и говорил раньше — есть сервера, которые не прописаны в прямой/обратной зонах и их не хотят прописывать или некому). Не забудьте после добавления ip-адресов выполнить команду "#postmap /etc/postfix/access", иначе postfix не будет обрабатывать файл
check_client_access hash:/etc/postfix/access,

Иногда встречаются пользователи, которые хотят получать спам… :)
Данное правило указывает на файл, в котором содержаться адреса почтовых ящиков, на которые мы по-любому будем получать почту. Не забудьте про postmap.
check_recipient_access hash:/etc/postfix/recipient_access,

Если имя сервера отправляющей стороны не правильное — говорим «до свидание!»
reject_invalid_hostname,

Если имя сервера отправляющей стороны не соответствует FQDN — отстреливаем таких
reject_non_fqdn_hostname,

Если имя отправителя не соответствует FQDN — отстреливаем
reject_non_fqdn_sender,

Если имя получателя не соответствует FQDN — отстреливаем
reject_non_fqdn_recipient,

Проверяем домен на записи типа A и MX в DNS — если нет, то отстреливаем
reject_unknown_sender_domain,

В документации postfix сказано «блокирует почту от несуществующих доменов»
reject_unknown_recipient_domain,

Разрешаем получать письма от адресов, которые перечислены в параметре mynetworks (в данном параметре указываете адреса своих пользователей, почтовых серверов)
permit_mynetworks,

Защита от посылки smtp-команд до момента выяснения, поддерживает ли такие команды postfix
reject_unauth_pipelining,

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

Ниже перечислены правила проверки хостов (почтовиков, которые шлют нам почту) на содержание их в блэк-листах. Данный список у меня работает уже около года периодически убираю мертвого или добавляю нового
reject_rbl_client zombie.dnsbl.sorbs.net,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client multihop.dsbl.org,
reject_rbl_client work.rsbs.express.ru,
reject_rbl_client dnsbl.sorbs.net,


И на закуску делаем проверку с помощью PostGrey.
Остановимся на данном правиле по подробнее. Данная утилитка представляет собой сервис проверки почтовых серверов через серые списки, которые сама ведет.
Принцип работы следующий — почтовик стучится к нам в гости, postgrey смотрит свой список и не находит там стучащегося сервера. Далее он заносит этот сервак в серый список, а стучащему серваку сообщает, что «сервис пока не доступен, ты в сером списке, попробуй позже».

Далее происходит следующее:
— если почтовик хороший, то он повторно пришлет письмо (в этом случае postgrey его пропустит, а после 5-ти принятых от этого сервера писем, запишет в белый список).
— если спамер, то он, в 99,9% не будет повторно ломиться и отсылать письмо (в этом случае спам не придет, а ссылка убьется)
— если спамер настойчив, то postgrey занесет его в черный список, так как postgrey использует задержку в 5 минут. Если в течении этого времени стучащийся ломанется к нам в гости, то его пошлют подальше и запишут в черный список.

Вы можете задать вопрос: «А это нормально, что письма могут ходить с задержкой?»
Ответ: «Нормально, так как posgrey работает на основе RFC. Если сервак чистый, то на второй попытке письмо придет, а после 5-го письма он перейдет в белый лист.»
Также существует возможность добавить явно чистые почтовики — достаточно их прописать в файле.

Установка (у меня Fedora 9) проста — #yum install postgrey

Настройка еще проще:
postgrey_whitelist_clients — файл с указанием почтовиков, от которых принимаем почту всегда
postgrey_whitelist_recipients — файл с указанием получателей, для которых почту принимаем всегда

В файле postgrey_whitelist_clients желательно убить все записи, они сгенерированы разработчиком и, честно говоря, они нам не нужны. Добавьте только те почтовики, которым доверяете.

Я на начальном этапе добавил вот эти:
mail.ru
yandex.ru
rambler.ru
gmail.com
beeline.ru
post.ru
pochta.ru
hotmail.com
hotmail.ru
yahoo.com
hotbox.ru
masterhost.ru
nic.ru
list.ru
bk.ru
inbox.ru
job.ru


Остается только запустить postgrey как сервис:
# chkconfig postgrey on
# service postgrey start


дальше, если у пользователей возникнут проблемы, можно добавлять в этот файл и другие сервера.
check_policy_service unix:postgrey/socket,

Если почтовый сервер прошел все проверки — тогда милости просим!
permit

3. Этот блок для проверки секции SMTP DATA команд. Обычно стандартный блок, если хотите
узнать про правила в этом блоке, то вам сюда
smtpd_data_restrictions =
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit


4. Этот блок (как вы уже догадались) для проверки исходящей почты или пересылаемой через нас почты.
На уже описанных правилах я останавливаться не буду — описывать буду незнакомые.
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_client_access hash:/etc/postfix/access,
check_recipient_access hash:/etc/postfix/recipient_access,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,


Правило проверки соответствия ip и имени клиента
reject_unknown_client_hostname,

reject_unknown_sender_domain,
reject_unknown_hostname,
reject_rbl_client zombie.dnsbl.sorbs.net,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client multihop.dsbl.org,
reject_rbl_client work.rsbs.express.ru,
reject_rbl_client dnsbl.sorbs.net,
reject_rhsbl_sender dsn.rfc-ignorant.org
permit


Здесь как видите нет проверки с помощью Postgrey — она и не нужна. В противном случае, вы не сможете отсылать почту.

Данная конфигурация мне помогла и помогает до сих пор:
После установки почтового сервера общее число попыток прислать письмо на мой домен — 150.000 в сутки, с каждой неделей это число уменьшается за счет отработки правил (мой сервак потихоньку забывают спаммеры). На сегодняшний день это число уже около 15.000 в сутки. Я доволен результатом.


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

Удачи!

P.S. И не забудьте после всех манипуляций перезагрузить postfix или перечитать его конфиг.
P.P.S. Сильно не бейте — все-таки первый пост
Теги:
Хабы:
Всего голосов 52: ↑41 и ↓11+30
Комментарии72

Публикации

Истории

Ближайшие события