Назад | Перейти на главную страницу

В Exim'е отклоняется ли спам RBL перед сканированием SpamAssassin?

Недавно я боролся со спамом на нашем почтовом сервере. В частности, одна учетная запись забивалась входящим спамом. Использование памяти SpamAssassin - одна из наших проблем.

Что я сделал, так это включил RBL в Exim. Теперь я вижу много уведомлений об отклонении в журнале eximʻa, основанных на различных RBL, и это хорошо.

Однако, когда я запускаю Eximstats, числа кажутся такими же, как и до включения RBL. Я предполагаю, потому что электронное письмо все еще каким-то образом зарегистрировано до отказа. Это то, что происходит, или мне что-то еще не хватает?

Кто-нибудь знает, отклоняются ли эти электронные письма до их обработки SpamAssassin? Или кто-нибудь знает, как я смогу узнать? Есть ли стандартный способ генерировать статистику SpamAssassin, подобную Eximstats, чтобы я мог сравнивать числа?

Спасибо за ваше время и любые советы.

Редактировать: Вот раздел ACL моего файла конфигурации Exim

######################################################################
#                               ACLs                                 #
######################################################################

begin acl

# ACL that is used after the RCPT command
check_recipient:

# to block certain wellknown exploits, Deny for local domains if
# local parts begin with a dot or contain @ % ! / |
  deny  domains       = +local_domains
        local_parts   = ^[.] : ^.*[@%!/|]

# to restrict port 587 to authenticated users only
# see also daemon_smtp_ports above
accept  hosts = +auth_relay_hosts
        condition = ${if eq {$interface_port}{587} {yes}{no}}
        endpass
        message = relay not permitted, authentication required
        authenticated = *

# allow local users to send outgoing messages using slashes
# and vertical bars in their local parts.
# Block outgoing local parts that begin with a dot, slash, or vertical
# bar but allows them within the local part.
# The sequence \..\ is barred. The usage of @ % and ! is barred as
# before. The motivation is to prevent your users (or their virii)
# from mounting certain kinds of attacks on remote sites.
  deny  domains       = !+local_domains
        local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

# local source whitelist
# accept if the source is local SMTP (i.e. not over TCP/IP).
# Test for this by testing for an empty sending host field.
  accept  hosts = :

# sender domains whitelist
# accept if sender domain is in whitelist
  accept  sender_domains = +whitelist_domains

# sender hosts whitelist
# accept if sender host is in whitelist
  accept  hosts = +whitelist_hosts
  accept  hosts = +whitelist_hosts_ip

# envelope senders whitelist
# accept if envelope sender is in whitelist
  accept  senders = +whitelist_senders

# accept mail to postmaster in any local domain, regardless of source
  accept  local_parts = postmaster
          domains     = +local_domains

# accept mail to abuse in any local domain, regardless of source
  accept  local_parts = abuse
          domains     = +local_domains

# accept mail to hostmaster in any local domain, regardless of source
  accept  local_parts = hostmaster
          domains     =+local_domains

# OPTIONAL MODIFICATIONS:
# If the page you're using to notify senders of blocked email of how
# to get their address unblocked will use a web form to send you email so
# you'll know to unblock those senders, then you may leave these lines
# commented out.  However, if you'll be telling your senders of blocked
# email to send an email to errors@yourdomain.com, then you should
# replace "errors" with the left side of the email address you'll be
# using, and "example.com" with the right side of the email address and
# then uncomment the second two lines, leaving the first one commented.
# Doing this will mean anyone can send email to this specific address,
# even if they're at a blocked domain, and even if your domain is using
# blocklists.

# accept mail to errors@example.com, regardless of source
#   accept  local_parts = errors
#           domains     = example.com

# deny so-called "legal" spammers"
  deny message = Email blocked by LBL - to unblock see http://www.example.com/
       # only for domains that do want to be tested against RBLs
       domains = +use_rbl_domains
       sender_domains = +blacklist_domains

# deny using hostname in bad_sender_hosts blacklist
  deny message = Email blocked by BSHL - to unblock see http://www.example.com/
       # only for domains that do want to be tested against RBLs
       domains = +use_rbl_domains
       hosts = +bad_sender_hosts

# deny using IP in bad_sender_hosts blacklist
  deny message = Email blocked by BSHL - to unblock see http://www.example.com/
       # only for domains that do want to be tested against RBLs
       domains = +use_rbl_domains
       hosts = +bad_sender_hosts_ip

# deny using email address in blacklist_senders
  deny message = Email blocked by BSAL - to unblock see http://www.example.com/
       domains = +use_rbl_domains
       senders = +blacklist_senders

# By default we do NOT require sender verification.
# Sender verification denies unless sender address can be verified:
# If you want to require sender verification, i.e., that the sending
# address is routable and mail can be delivered to it, then
# uncomment the next line. If you do not want to require sender
# verification, leave the line commented out

#require verify = sender

# deny using .spamhaus
  deny message = Email blocked by SPAMHAUS - to unblock see http://www.example.com/
       # only for domains that do want to be tested against RBLs
       domains = +use_rbl_domains
       dnslists = sbl.spamhaus.org

# deny using ordb
#  deny message = Email blocked by ORDB - to unblock see http://www.example.com/
#       # only for domains that do want to be tested against RBLs
#       domains = +use_rbl_domains
#       dnslists = relays.ordb.org

# deny using sorbs smtp list
  deny message = Email blocked by SORBS - to unblock see http://www.example.com/
       # only for domains that do want to be tested against RBLs
       domains = +use_rbl_domains
       dnslists = dnsbl.sorbs.net=127.0.0.5

# Next deny stuff from more "fuzzy" blacklists
# but do bypass all checking for whitelisted host names
# and for authenticated users

# deny using spamcop
  deny message = Email blocked by SPAMCOP - to unblock see http://www.example.com/
       hosts = !+relay_hosts
       domains = +use_rbl_domains
       !authenticated = *
       dnslists = bl.spamcop.net

# deny using njabl
  deny message = Email blocked by NJABL - to unblock see http://www.example.com/
       hosts = !+relay_hosts
       domains = +use_rbl_domains
       !authenticated = *
       dnslists = dnsbl.njabl.org

# deny using cbl
  deny message = Email blocked by CBL - to unblock see http://www.example.com/
       hosts = !+relay_hosts
       domains = +use_rbl_domains
       !authenticated = *
       dnslists = cbl.abuseat.org

# deny using all other sorbs ip-based blocklist besides smtp list
  deny message = Email blocked by SORBS - to unblock see http://www.example.com/
       hosts = !+relay_hosts
       domains = +use_rbl_domains
       !authenticated = *
       dnslists = dnsbl.sorbs.net!=127.0.0.6

# deny using sorbs name based list
  deny message = Email blocked by SORBS - to unblock see http://www.example.com/
       domains =+use_rbl_domains
       # rhsbl list is name based
       dnslists = rhsbl.sorbs.net/$sender_address_domain

# accept if address is in a local domain as long as recipient can be verified
  accept  domains = +local_domains
          endpass
      message = "Unknown User"
          verify = recipient

# accept if address is in a domain for which we relay as long as recipient
# can be verified
  accept  domains = +relay_domains
          endpass
          verify=recipient

# accept if message comes for a host for which we are an outgoing relay
# recipient verification is omitted because many MUA clients don't cope
# well with SMTP error responses. If you are actually relaying from MTAs
# then you should probably add recipient verify here

  accept  hosts = +relay_hosts
  accept  hosts = +auth_relay_hosts
          endpass
          message = authentication required
          authenticated = *
  deny    message = relay not permitted

# default at end of acl causes a "deny", but line below will give
# an explicit error message:
  deny    message = relay not permitted

# ACL that is used after the DATA command
check_message:
  accept

Проверьте свои /var/log/syslog для spamd вывод; по крайней мере, в нашей конфигурации SpamAssassin регистрирует каждый ID сообщения, который он проверил, и соответствующий результат в системном журнале.

Что я сделал, так это включил RBL в Exim. Теперь я вижу много уведомлений об отклонении в журнале eximʻa, основанных на различных RBL, и это хорошо.

Нет, это не так :/

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

Моя компания использует два почтовых ретранслятора, которые передают почту примерно 600000 пользователей; несколько из этих учетных записей взламываются каждую неделю и начинают рассылать спам. Мы отслеживаем наши журналы, чтобы идентифицировать эти учетные записи как можно скорее, а затем отключаем их, но иногда наши серверы неизбежно попадают в один или два черных списка. Поэтому я считаю, что отклонение писем только потому, что отправляющий MTA указан в единственном черном списке, является серьезной ошибкой.

Все наши ~ 800 серверов используют SpamAssassin для выявления спама, и ни один из них не отклоняет письма с подозрением на спам. Вместо этого спам-сообщения сортируются в папки нежелательной почты с помощью скриптов сита, чтобы пользователи могли решать сами. Одна запись в черном списке обычно приводит к более высокому баллу SpamAssassin, но, если с почтой все в порядке, она будет доставлена ​​нормально.

SpamAssasin (обычно) вызывается из DATA ACL, а RBL из RCPT TO ACL - перед DATA.

Отклонение exim'a по RBL в RCTP TO: в таких строфах конфигурации

deny message = <msg>
  <additional conditions>
  dnslists = <RBL service address>

но у вас пустой DATA ACL (см. ниже) - это все ваши настройки ACL?

# ACL that is used after the DATA command
check_message:
  accept

Я предполагаю, что вы используете exim-sa, если у вас нет строки «spam =» где-нибудь в ваших ACL.

Посмотрите на другой (рекомендуемый) способ вызова SA в Exim документы, раздел 41.3.