привет всем!!!
Помогите, на работе стоит 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
я так понимаю вот это то, что вы вставляете для фильтрации спама, и после этого перестаёт работать?..
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]+->
>#**************************************************************************************
>