URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 73410
[ Назад ]

Исходное сообщение
"debian+exim"

Отправлено kovalsky , 10-Апр-07 13:40 
привет всем!!!
Помогите, на работе стоит Debian + почтовик Exim задача прикрутить к почтавику спам фильтры.
Правлю конфиг перегружаю почтавик спама меньше но почта не уходит хотя письма получаю,возвращаю конфиг старый на место спам валит и почта отправляется. Помогите понять в чем дело....................
привожу плавленый конфиг и рабочий

begin acl

# This access control list is used for every RCPT command in an incoming
# SMTP message. The tests are run in order until the address is either
# accepted or denied.

acl_check_rcpt:

  # Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by
  # testing for an empty sending host field.

  accept  hosts = :

  # Deny if the local part contains @ or % or / or | or !. These are rarely
  # found in genuine local parts, but are often tried by people looking to
  # circumvent relaying restrictions.

  # Also deny if the local part starts with a dot. Empty components aren't
  # strictly legal in RFC 2822, but Exim allows them because this is common.
  # However, actually starting with a dot may cause trouble if the local part
  # is used as a file name (e.g. for a mailing list).

  deny    local_parts   = ^.*[@%!/|] : ^\\.

  # Accept mail to postmaster in any local domain, regardless of the source,
  # and without verifying the sender.

# accept  local_parts   = postmaster
#          domains       = +local_domains

  # Deny unless the sender address can be verified.

  require verify        = sender
#****************************spam******************************************************

  deny     condition     = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
    
  deny  condition     = ${if eq{$sender_helo_name}{}{yes}{no}}
      
          
  deny  condition     = ${if math{$sender_host_name}{bezeqint\\.net|net\\.il|adsl|dialup|pool|peer|dhcp|c|cpe|}{yes}{no}}
#**************************************************************************************  

  #############################################################################
  # There are no checks on DNS "black" lists because the domains that contain
  # these lists are changing all the time. However, here are two examples of
  # how you could get Exim to perform a DNS black list lookup at this point.
  # The first one denies, while the second just warns.
  #
    deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain
            dnslists      = opm.blitzed.org : \
                            proxies.blackholes.easynet.nl : \
                            cbl.abuseat.org : \
                            bl.spamcop.net : \
                            bl.csma.biz : \
                            dynablock.njabl.org : \
                            opm.blitzed.org : \
                            sbl.spamhaus.org
  #
  # warn    message       = X-Warning: $sender_host_address is in a black list at $dnslist_domain
  #         log_message   = found in $dnslist_domain
  #         dnslists      = black.list.example
  #############################################################################

  # Accept if the address is in a local domain, but only if the recipient can
  # be verified. Otherwise deny. The "endpass" line is the border between
  # passing on to the next ACL statement (if tests above it fail) or denying
  # access (if tests below it fail).

  warn
      set acl_m0 = 25s
      

  # Accept if the address is in a domain for which we are relaying, but again,
  # only if the recipient can be verified.

#  accept  domains       = +relay_to_domains
#          endpass
#          message       = unrouteable address
#          verify        = recipient

  # If control reaches this point, the domain is neither in +local_domains
  # nor in +relay_to_domains.

  # Accept if the message comes from one of the hosts for which we are an
  # outgoing relay. Recipient verification is omitted here, because in many
  # cases the clients are dumb MUAs that don't cope well with SMTP error
  # responses. If you are actually relaying out from MTAs, you should probably
  # add recipient verification here.
  # Accept if the message arrived over an authenticated connection, from
  # any host. Again, these messages are usually from MUAs, so recipient
  # verification is omitted.

  accept  authenticated = *

  # Reaching the end of the ACL causes a "deny", but we might as well give
  # an explicit message.

  deny    message       = relay not permitted



Содержание

Сообщения в этом обсуждении
"debian+exim"
Отправлено bass , 10-Апр-07 15:19 
я так понимаю вот это то, что вы вставляете для фильтрации спама, и после этого перестаёт работать?..
1. попробуйте понять что у вас тут происходит
2. обратите внимание на необходимость проверки доверенных сетей, хостов и доменов.
3. accept  authenticated = *  нужно использовать с умом
4. очень важна очерёдность правил.
5. логируйте всё.
6. убедительная просьба постить конфиги без строк начинающихся с #
>#****************************spam******************************************************
>
>  deny  condition     = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
>
тут вы отбрасываете всех, кто в helo представился в цифрах.
если у вас недостроенная сеть, особенно с windows клиентами, то под то что вы запрещаете оная и попадает.
не рассматривая побочные варианты лучше замените на
deny  condition  = ${if match {$sender_helo_name}{^\[[0-9.]+\]}{1}{0}}                                                  
message = Accept only FQDN HELO
log_message  = HELO $sender_helo_name not FQDN

хотя проще включить соответствующую опцию

к сведению, по умолчанию настроенный windows xp в helo поставит 127.0.0.1

>  deny  condition     = ${if eq{$sender_helo_name}{}{yes}{no}}
>
ну тут просто пустой helo, нормально. не забываем про пункт 5.

>
>
>  deny  condition     = ${if math{$sender_host_name}{bezeqint\\.net|net\\.il|adsl|dialup|pool|peer|dhcp|c|cpe|}{yes}{no}}
тут я не понял что вы хотели сказать вот этим "\\." но со временем разберётесь как грамотнее.
посмотрите как правильно делать синтаксис:
deny  condition  = ${if match {$sender_helo_name}\                                                                      
                    {\N^(127\.0\.0\.1|\.arpa|\.local|localhost(\.localdomain)?)$\N}\                                    
                    {yes}{no}}                                                                                          
        message  = Bad HELO: A remote host can't be $sender_helo_name\n\                                                
                   Please see RFC 2821 section 4.1.1.1                                                                  
    log_message  = HELO Is Invalid $sender_helo_name
                        
если условия по спискам, то списки лучше выделить в файл, пример:
deny  condition  = ${lookup {$sender_helo_name}nwildlsearch{CONFDIR/blacklist_dial}{1}{0}}                              
        message  = HELO From Dialup Networks.\n\                                                                        
                   Dialup Mail Users Must Use ISP MTA.                                                                        
    log_message  = HELO From Dialup Networks $sender_helo_name
где blacklist_dial примерно с такими строками:
^ip[0-9a-f]{8}                                                                                                        
^ppp[0-9]+-                                                                                                            

>
>#**************************************************************************************
>