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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

Подскажите, где убрать задержку при коннеккте к 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 = *
остается вот такой

Спасибо за помощь
Последний раз редактировалось Alex Keda 2010-10-13 7:23:26, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2010-10-13 10:21:32

Гость писал(а): Я так понимаю это dns проверки.
Вовсе не обязательно, это может быть специальная задержка для борьбы со спамерами. Покажи строчку из лога по поводу приёма письма.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

info9216
рядовой
Сообщения: 10
Зарегистрирован: 2010-10-12 16:11:37

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

Непрочитанное сообщение info9216 » 2010-10-13 12:30:20

Если подключаться 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 конструкции)

posix
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-06-10 15:33:56

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

Непрочитанное сообщение posix » 2010-10-14 10:55:14

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

info9216
рядовой
Сообщения: 10
Зарегистрирован: 2010-10-12 16:11:37

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

Непрочитанное сообщение info9216 » 2010-10-14 12:52:24

Вот файл 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

posix
проходил мимо
Сообщения: 5
Зарегистрирован: 2010-06-10 15:33:56

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

Непрочитанное сообщение posix » 2010-10-14 14:50:35

Попробуй отключить часть проверок:

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

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
разница времени даст возможность выявить "долгий" фильтр

info9216
рядовой
Сообщения: 10
Зарегистрирован: 2010-10-12 16:11:37

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

Непрочитанное сообщение info9216 » 2010-10-14 15:10:53

Под "отключить" я правильно понимаю просто закомментировать? я вот этот момент не очень понял из доков.
Т.е. я комментирую, потом делаю

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

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 конфигурация?

info9216
рядовой
Сообщения: 10
Зарегистрирован: 2010-10-12 16:11:37

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

Непрочитанное сообщение info9216 » 2010-10-14 15:25:49

Да, как оказалось у меня не Split. Менять параметры надо в exim4.conf.template. Я убрал все проверки, вроде стало чуть побыстрее, но все равно долго

info9216
рядовой
Сообщения: 10
Зарегистрирован: 2010-10-12 16:11:37

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

Непрочитанное сообщение info9216 » 2010-10-14 15:52:01

Ничего не понимаю. если я вручную делаю 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

info9216
рядовой
Сообщения: 10
Зарегистрирован: 2010-10-12 16:11:37

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

Непрочитанное сообщение info9216 » 2010-10-15 12:51:31

Письма начинают быстро уходить, если убрать 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 - айпи роутера сетки.
все равно долго идёт коннект