The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
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, 15:19 , 10-Апр-07 (1)
    я так понимаю вот это то, что вы вставляете для фильтрации спама, и после этого перестаёт работать?..
    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]+-                                                                                                            

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру