Борьба с почтовым спамом

From SysadminWiki.ru
Jump to: navigation, search

Общая информация

Проверить спамерскую активность в своей сети можно командой tcpdump на почтовом сервере:

# tcpdump port 25

чтобы просмотреть трафик пользователя:

# tcpdump host 10.0.0.10

по умолчанию прослушивается интерфейс eth0. Для прослушивания другого интерфейса указываем его в параметре i:

# tcpdump host 10.0.0.10 -i eth1


Средства Postfix

Правила на время установления соединения

Можно добавить ограничения средствами самого Postfix ещё во время соединения (hand shake). Эти правила позволят немного снизить входящий трафик, так как неудовлетворящие правилам сообщения не будут приняты. Вот описания правил из официальной документации:

# These restrictions apply in the context of the SMTP HELO command.
smtpd_helo_required = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
   permit_mynetworks,
   check_helo_access hash:/etc/postfix/helo_access,
   permit

Файл helo_access может выглядеть так:

64.170.162.98 REJECT Get lost - you're lying about who you are
mail.mydomain.ru REJECT Get lost - you're lying about who you are

Первая строка откидывает тех, кто пытается нас убедить, что у него наш ip адрес (при настройке не забудьте заменить на свой!), вторая - тех кто представляется нашим же DNS именем. Вот ещё несколько ограничений в контексте команды RCPT TO:

smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unknown_recipient_domain,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname


Фильтр для темы сообщения

Будем отсеивать все сообщения содержащие в теме письма определённые слова. Для этого добавим в /etc/postfix/main.cf:

header_checks = regexp:/etc/postfix/header_checks

и создадим (или добавляем в существующий) файл /etc/postfix/header_checks, в котором пропишем правило отсева сообщений в теме которых содержаться слова: sex, viagra, seduce, naked:

/^Subject.*(sex|viagra|seduce|naked)/ FILTER REJECT:


Спам фильтры

Можно воспользоваться различными спам-фильтрами как, например, spamassassin.

Добавить адрес и/или домен в белый список можно в файле /etc/spamassassin/local.cf в конце в формате:

whitelist_from postmaster@domain1.ru
whitelist_from *@domain2.ru


Статьи в помощь:


Механизм серых списков

Можно использовать механизм серых списков (grey listing). Принцип его работы - временный отказ в принятии почты в надежде, что спамеры не будут повторять отправку. Не очень хороший способ, поскольку замедляет доставку почты и увеличивает трафик самого Интернета, так как почтовые сервера вынуждены отправлять одно сообщение несколько раз, но трафик от провайдера уменьшиться на величину объёма отказанных писем. Пока этот способ довольно действенен.

Postgrey - одно из таких приложений.


Статьи в помощь:


Списки блокировок

В Интернете есть несколько специальных сервисов ведущих учёт спамеров. Можно подключить их списки к своему почтовому серверу.

Вот несколько сервисов:

Смотреть также статью: Списки блокировки спамеров.


Sender Policy Framework (SPF)

Механизм SPF позволяет добавить в DNS текстовую запись, описывающую более детально специфику работы почтового сервера, указать ограничения, снижающие спамерскую активность.

Пример SPF записи в DNS:

example.org. IN TXT "v=spf1 +a +mx -all"
  • v=spf1 -- определяет используемую версию SPF. Далее следует перечисление механизмов верификации
  • +a -- разрешает приём писем от всех IP-адресов, перечисленных в A-записи DNS для example.org
  • +mx -- разрешает приём писем, если отправляющий IP указан в одной из MX-записей DNS для example.org
  • -all -- не принимать сообщения, не прошедшие верификацию


Подробнее:


См. также

  • http://spamlinks.net -- Набор ссылок на многочисленные инструменты борьбы со спамом и проверки уязвимости собственной системы.