Страница 1 из 1

Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-12 16:20:02
Гость
Exim очень долго думает при начальном коннекте и на команде RCPT TO. Я так понимаю это dns проверки. Где в конфигах(у меня split, уже запутался в этих файлах) лежат эти настройки? Не хочется чтоб письмо по 5 минут шло на незагруженный сервак. Опции

Код: Выделить всё

rfc1413_hosts =
rfc1413_query_timeout = 2s
Поставил, однако кстати после команды update-exim в файле
/var/lib/exim4/config.autogenerated
Опция

Код: Выделить всё

rfc1413_hosts = *
остается вот такой

Спасибо за помощь

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-13 10:21:32
princeps
Гость писал(а): Я так понимаю это dns проверки.
Вовсе не обязательно, это может быть специальная задержка для борьбы со спамерами. Покажи строчку из лога по поводу приёма письма.

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-13 12:30:20
info9216
Если подключаться telnet'ом, то сам коннект занимает секунд 20-30, и надолго думает на команде RCPT TO

Вот лог одного письма

Код: Выделить всё

2010-10-13 13:16:56 dnslists domain "# bl.spamcop.net" contains strange characters - is this right?
2010-10-13 13:16:56 dnslists domain "# sbl.spamhaus.org" contains strange characters - is this right?
2010-10-13 13:16:56 dnslists domain "# sbl-xbl.spamhaus.org" contains strange characters - is this right?
2010-10-13 13:17:37 1P5xSr-00009O-1A SA: Debug: SAEximRunCond expand returned: '1 '
2010-10-13 13:17:37 1P5xSr-00009O-1A SA: Debug: check succeeded, running spamc
2010-10-13 13:17:46 1P5xSr-00009O-1A SA: Action: scanned but message isn't spam: score=2.2 required=5.0 (scanned in 9/9 secs | Message-Id: AANLkTi=jVsDGjs3dt6OY8r10G+hkLt7Uu-aQQcrkrpXr@mail.gmail.com). From <***@gmail.com> (host=mail-wy0-f175.google.com [74.125.82.175]) for ***@havin.ru
2010-10-13 13:17:46 1P5xSr-00009O-1A <= ****@gmail.com H=mail-wy0-f175.google.com [74.125.82.175] P=esmtp S=2001 id=AANLkTi=jVsDGjs3dt6OY8r10G+hkLt7Uu-aQQcrkrpXr@mail.gmail.com from <****@gmail.com> for ***@havin.ru
2010-10-13 13:18:26 1P5xTe-00009m-Gs SA: Debug: SAEximRunCond expand returned: '1 '
2010-10-13 13:18:26 1P5xTe-00009m-Gs SA: Debug: check succeeded, running spamc
2010-10-13 13:18:35 1P5xTe-00009m-Gs SA: Action: scanned but message isn't spam: score=2.2 required=5.0 (scanned in 9/9 secs | Message-Id: AANLkTi=jVsDGjs3dt6OY8r10G+hkLt7Uu-aQQcrkrpXr@mail.gmail.com). From <info9216@gmail.com> (local) for ****@havin.ru
2010-10-13 13:18:35 1P5xTe-00009m-Gs <= ****@gmail.com U=Debian-exim P=spam-scanned S=2199 id=AANLkTi=jVsDGjs3dt6OY8r10G+hkLt7Uu-aQQcrkrpXr@mail.gmail.com from <****@gmail.com> for ****@arshavin.us
2010-10-13 13:19:15 1P5xTe-00009m-Gs => egor (****@havin.ru) <****@havin.ru> R=localuser T=local_delivery
2010-10-13 13:19:15 1P5xTe-00009m-Gs Completed
2010-10-13 13:19:15 1P5xSr-00009O-1A => ***** <****@havin.ru> R=spamcheck_router T=spamcheck
2010-10-13 13:19:15 1P5xSr-00009O-1A Completed

Само сканирование спамассасином, насколько я понял, занимает не так много времени. Письма идут 2-3 минуты. Хотелось бы чтобы шли не более 30 сек. Можно как-нибудь сделать?я просто в конфиге не очень понял, так можно задавать макросы(разные проверки dns) а где эти макросы активируются, я так и не понял(я имею ввиду ifdef конструкции)

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 10:55:14
posix
Поищи в конфиге стороки вида: "delay ="
Случаем проверка существования почту (sender/callout..) не включена ли?

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 12:52:24
info9216
Вот файл 30_exim4-config_check_rcpt
Я так понимаю только в нем проверки осуществляются?

Код: Выделить всё

acl_check_rcpt:

  accept
    hosts = :

  .ifdef CHECK_RCPT_LOCAL_LOCALPARTS
  deny
    domains = +local_domains
    local_parts = CHECK_RCPT_LOCAL_LOCALPARTS
    message = restricted characters in address
  .endif


  .ifdef CHECK_RCPT_REMOTE_LOCALPARTS
  deny
    domains = !+local_domains
    local_parts = CHECK_RCPT_REMOTE_LOCALPARTS
    message = restricted characters in address
  .endif


  accept
    .ifndef CHECK_RCPT_POSTMASTER
    local_parts = postmaster
    .else
    local_parts = CHECK_RCPT_POSTMASTER
    .endif
    domains = +local_domains : +relay_to_domains


  .ifdef CHECK_RCPT_VERIFY_SENDER
  deny
    message = Sender verification failed
    !acl = acl_local_deny_exceptions
  .endif

  deny
    !acl = acl_local_deny_exceptions
    senders = ${if exists{CONFDIR/local_sender_callout}\
                         {CONFDIR/local_sender_callout}\
                   {}}
    !verify = sender/callout

  accept
    hosts = +relay_from_hosts
    control = submission/sender_retain


  accept
    authenticated = *
    control = submission/sender_retain

  require
    message = relay not permitted
    domains = +local_domains : +relay_to_domains

  require
    verify = recipient

  deny
    !acl = acl_local_deny_exceptions
    recipients = ${if exists{CONFDIR/local_rcpt_callout}\
                            {CONFDIR/local_rcpt_callout}\
                      {}}
    !verify = recipient/callout

  deny
    message = sender envelope address $sender_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
    !acl = acl_local_deny_exceptions
    senders = ${if exists{CONFDIR/local_sender_blacklist}\
                   {CONFDIR/local_sender_blacklist}\
                   {}}

  deny
    message = sender IP address $sender_host_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
    !acl = acl_local_deny_exceptions
    hosts = ${if exists{CONFDIR/local_host_blacklist}\
                 {CONFDIR/local_host_blacklist}\
                 {}}


  .ifdef CHECK_RCPT_REVERSE_DNS
  warn
    message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address (${if eq{$host_lookup_failed}{1}{failed}{deferred}})
     condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}\
                      {yes}{no}}
  .endif

  .ifdef CHECK_RCPT_SPF
  deny
    message = [SPF] $sender_host_address is not allowed to send mail from ${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}.  \
              Please see http://www.openspf.org/Why?scope=${if def:sender_address_domain {mfrom}{helo}};identity=${if def:sender_address_domain {$sender_address}{$sender_helo_name}};ip=$sender_host_address
    log_message = SPF check failed.
    !acl = acl_local_deny_exceptions
    condition = ${run{/usr/bin/spfquery --ip \"$sender_host_address\" --mail-from \"$sender_address\" --helo \"$sender_helo_name\"}\
                     {no}{${if eq {$runrc}{1}{yes}{no}}}}

  defer
    message = Temporary DNS error while checking SPF record.  Try again later.
    condition = ${if eq {$runrc}{5}{yes}{no}}

  warn
    message = Received-SPF: ${if eq {$runrc}{0}{pass}{${if eq {$runrc}{2}{softfail}\
                                 {${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
    condition = ${if <={$runrc}{6}{yes}{no}}

  warn
    log_message = Unexpected error in SPF check.
    condition = ${if >{$runrc}{6}{yes}{no}}

  warn
    message = X-SPF-Guess: ${run{/usr/bin/spfquery --ip \"$sender_host_address\" --mail-from \"$sender_address\" \ --helo \"$sender_helo_name\" --guess true}\
                                {pass}{${if eq {$runrc}{2}{softfail}{${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}\
                                {${if eq {$runrc}{6}{none}{error}}}}}}}}}}
    condition = ${if <={$runrc}{6}{yes}{no}}

  defer
    message = Temporary DNS error while checking SPF record.  Try again later.
    condition = ${if eq {$runrc}{5}{yes}{no}}
  .endif

  .ifdef CHECK_RCPT_IP_DNSBLS
  warn
    message = X-Warning: $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    log_message = $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    dnslists = CHECK_RCPT_IP_DNSBLS
  .endif

  .ifdef CHECK_RCPT_DOMAIN_DNSBLS
  warn
    message = X-Warning: $sender_address_domain is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    log_message = $sender_address_domain is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    !senders = ${if exists{CONFDIR/local_domain_dnsbl_whitelist}\
                    {CONFDIR/local_domain_dnsbl_whitelist}\
                    {}}
    dnslists = CHECK_RCPT_DOMAIN_DNSBLS
  .endif

  .ifdef CHECK_RCPT_LOCAL_ACL_FILE
  .include CHECK_RCPT_LOCAL_ACL_FILE
  .endif


  accept
    domains = +relay_to_domains
    endpass
    verify = recipient

  accept

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 14:50:35
posix
Попробуй отключить часть проверок:

Код: Выделить всё

deny
    !acl = acl_local_deny_exceptions
    senders = ${if exists{CONFDIR/local_sender_callout}\
                         {CONFDIR/local_sender_callout}\
                   {}}
    !verify = sender/callout


deny
    !acl = acl_local_deny_exceptions
    recipients = ${if exists{CONFDIR/local_rcpt_callout}\
                            {CONFDIR/local_rcpt_callout}\
                      {}}
    !verify = recipient/callout
Также перед каждой проверкой можно включить логирование:

Код: Выделить всё

warn log_message   = имя фильтра time $tod_full
разница времени даст возможность выявить "долгий" фильтр

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 15:10:53
info9216
Под "отключить" я правильно понимаю просто закомментировать? я вот этот момент не очень понял из доков.
Т.е. я комментирую, потом делаю

Код: Выделить всё

update-exim4.conf
Потом

Код: Выделить всё

/etc/init.d/exim4 restart
Но почему-то если я делаю

Код: Выделить всё

cat /var/lib/exim4/config.autogenerated | grep verify
то количество строк не меняется. Еще в файле /etc/exim4/update-exim4.conf.conf

Код: Выделить всё

dc_eximconfig_configtype='local'
dc_other_hostnames='gagarin.local.net.local.net'
dc_local_interfaces='127.0.0.1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
dc_use_split_config='false' - это значит у меня все-таки не split конфигурация?

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 15:25:49
info9216
Да, как оказалось у меня не Split. Менять параметры надо в exim4.conf.template. Я убрал все проверки, вроде стало чуть побыстрее, но все равно долго

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 15:52:01
info9216
Ничего не понимаю. если я вручную делаю Smtp сессию, через telnet, то письмо почти сразу падает в ящик. Оно конечно помачается как спам, но тем не менее

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-14 22:05:22
Барабан
info9216 писал(а):Ничего не понимаю. если я вручную делаю Smtp сессию, через telnet, то письмо почти сразу падает в ящик. Оно конечно помачается как спам, но тем не менее
значит на "своих" проверки мягкие и проблем нет

Код: Выделить всё

rfc1413_query_timeout  = 0s
явно отключаеться именно так, см доку

зы: http://www.bog.pp.ru/work/exim.html#debug

Re: Подскажите, где убрать задержку при коннеккте к exim'y

Добавлено: 2010-10-15 12:51:31
info9216
Письма начинают быстро уходить, если убрать host_lookup = *

Но говорят что это не есть хорошо. Мне бы сделать что-то вроде white-list для сетки(офис), из которой шлют письма, при этом чтоб не проверялся dns.

У меня начало конфига идёт вот так

Код: Выделить всё

begin acl
        acl_check_rcpt:

                accept  authenticated = *
                                condition     = ${if eq{${extract{5}{:}{${lookup{$authenticated_id}lsearch{/etc/exim4/passwd}}}}}{no} {yes}{no}}
                                condition     = ${if eq{${extract{3}{:}{${lookup{${domain:$authenticated_id}}lsearch{/etc/exim4/domains}}}}}{no} {yes}{no}}

                                control       = submission/domain=

        accept  hosts = net-lsearch;/etc/exim4/whitelist : +own_hosts
Т.е. я поставил авторизованных пользователей первыми в списке, и еще own_hosts - айпи роутера сетки.
все равно долго идёт коннект