Author Topic: Задержка при отправке писма через sendmail  (Read 5832 times)

0 Members and 1 Guest are viewing this topic.

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Подскажите почему может происходить задержка при отпрвке письма через sendmail?

делаю простой тест:

[root]#(\
echo "From: $mail1";\
echo "To: $mail2";\
echo "Subject: Test message";\
echo "Message-ID:";\
echo "MIME-Version: 1.0";\
echo "Content-Type: text/plain; charset=us-ascii";\
echo "See message text";
) | /usr/lib/sendmail -t || exit 1

Происходит задержка секунд так 10-15. Почему? И где глянуть, может какие то ошибки. Раньше такого не было.

Offline Unit

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1263
  • Karma: +9/-1
/var/log/maillog ?

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: Vtec
Происходит задержка секунд так 10-15. Почему? И где глянуть, может какие то ошибки. Раньше такого не было.
что в логах?
обычно, большинство задержек происходит из-за плохой настройки resolver-library (resolv.conf, host.conf, nsswitch.conf, DNS, nscd, LDAP и все, что используется для резолвинга).

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
в логах только отправка пишется ошибок нет.

Aug 24 11:45:19 localhost sendmail[18193]: l7O4inGf018193: from=<apache@localhost>, size=303, class=0, nrcpts=1, msgid=<200708240444.l7O4idNZ018182@localhost>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Aug 24 11:45:19 localhost sendmail[18182]: l7O4idNZ018182: [email protected], ctladdr=apache (48/48), delay=00:00:40, xdelay=00:00:30, mailer=relay, pri=30088, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (l7O4inGf018193 Message accepted for delivery)
Aug 24 11:45:39 localhost sendmail[18237]: l7O4inGf018193: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=00:00:30, xdelay=00:00:20, mailer=esmtp, pri=120303, relay=sms.beemail.ru. [217.118.84.56], dsn=2.0.0, stat=Sent (Ok)
Aug 24 11:54:52 localhost sendmail[18909]: l7O4sgNc018909: from=apache, size=478, class=0, nrcpts=1, msgid=<200708240454.l7O4sgNc018909@localhost>, bodytype=8BITMIME, relay=apache@localhost
Aug 24 11:55:23 localhost sendmail[18927]: l7O4sqF2018927: from=<apache@localhost>, size=663, class=0, nrcpts=1, msgid=<200708240454.l7O4sgNc018909@localhost>, bodytype=8BITMIME, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Aug 24 11:55:23 localhost sendmail[18909]: l7O4sgNc018909: [email protected], ctladdr=apache (48/48), delay=00:00:41, xdelay=00:00:31, mailer=relay, pri=30478, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (l7O4sqF2018927 Message accepted for delivery)
Aug 24 11:55:36 localhost sendmail[19002]: l7O4tQm5019002: from=apache, size=88, class=0, nrcpts=1, msgid=<200708240455.l7O4tQm5019002@localhost>, relay=apache@localhost
Aug 24 11:55:53 localhost sendmail[18993]: l7O4sqF2018927: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=00:00:41, xdelay=00:00:20, mailer=esmtp, pri=120663, relay=mx1.mail2000.ru. [195.208.172.44], dsn=4.0.0, stat=Deferred: Connection refused by mx1.mail2000.ru.
Aug 24 11:56:01 localhost sendmail[18966]: l7O4Hi7u016232: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=00:37:57, xdelay=00:00:26, mailer=esmtp, pri=210661, relay=imx1.rambler.ru. [81.19.88.6], dsn=4.0.0, stat=Deferred: 450 <apache@localhost>: Sender address rejected: unverified address: connect to localhost[83.172.32.34]: Operation timed out
Aug 24 11:56:05 localhost sendmail[18966]: l7M93rk4003979: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=1+19:51:52, xdelay=00:00:04, mailer=esmtp, pri=4170660, relay=imx1.rambler.ru. [81.19.88.6], dsn=4.0.0, stat=Deferred: 450 <apache@localhost>: Sender address rejected: unverified address: connect to localhost[83.172.32.34]: Operation timed out
Aug 24 11:56:06 localhost sendmail[18966]: l7JB0wVr014129: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=4+17:54:48, xdelay=00:00:01, mailer=esmtp, pri=10470675, relay=imx1.rambler.ru. [81.19.88.6], dsn=4.0.0, stat=Deferred: 450 <apache@localhost>: Sender address rejected: unverified address: connect to localhost[83.172.32.34]: Operation timed out
Aug 24 11:56:06 localhost sendmail[19023]: l7O4ta0n019023: from=<apache@localhost>, size=303, class=0, nrcpts=1, msgid=<200708240455.l7O4tQm5019002@localhost>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Aug 24 11:56:06 localhost sendmail[19002]: l7O4tQm5019002: [email protected], ctladdr=apache (48/48), delay=00:00:40, xdelay=00:00:30, mailer=relay, pri=30088, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (l7O4ta0n019023 Message accepted for delivery)
Aug 24 11:56:43 localhost sendmail[19086]: l7O4ta0n019023: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=00:00:47, xdelay=00:00:37, mailer=esmtp, pri=120303, relay=sms.beemail.ru. [217.118.84.56], dsn=2.0.0, stat=Sent (Ok)
Aug 24 12:01:14 localhost sendmail[19491]: l7O514ta019491: from=apache, size=88, class=0, nrcpts=1, msgid=<200708240501.l7O514ta019491@localhost>, relay=apache@localhost
Aug 24 12:01:44 localhost sendmail[19498]: l7O51EPW019498: from=<apache@localhost>, size=303, class=0, nrcpts=1, msgid=<200708240501.l7O514ta019491@localhost>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Aug 24 12:01:44 localhost sendmail[19491]: l7O514ta019491: [email protected], ctladdr=apache (48/48), delay=00:00:40, xdelay=00:00:30, mailer=relay, pri=30088, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (l7O51EPW019498 Message accepted for delivery)
Aug 24 12:02:09 localhost sendmail[19534]: l7O51EPW019498: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=00:00:35, xdelay=00:00:25, mailer=esmtp, pri=120303, relay=sms.beemail.ru. [217.118.84.56], dsn=2.0.0, stat=Sent (Ok)
Aug 24 12:16:56 localhost sendmail[20532]: l7O5GuJQ020532: from=apache, size=88, class=0, nrcpts=1, msgid=<200708240516.l7O5GuJQ020532@localhost>, relay=apache@localhost
Aug 24 12:17:16 localhost sendmail[20533]: l7O5GuTm020533: from=<apache@localhost>, size=303, class=0, nrcpts=1, msgid=<200708240516.l7O5GuJQ020532@localhost>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Aug 24 12:17:16 localhost sendmail[20532]: l7O5GuJQ020532: [email protected], ctladdr=apache (48/48), delay=00:00:20, xdelay=00:00:20, mailer=relay, pri=30088, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (l7O5GuTm020533 Message accepted for delivery)
Aug 24 12:17:41 localhost sendmail[20545]: l7O5GuTm020533: to=<[email protected]>, ctladdr=<apache@localhost> (48/48), delay=00:00:25, xdelay=00:00:25, mailer=esmtp, pri=120303, relay=sms.beemail.ru. [217.118.84.56], dsn=2.0.0, stat=Sent (Ok)



cat resolv.conf
search ru
nameserver 83.172.32.17
nameserver 83.172.33.18

cat host.conf
order hosts,bind

 cat nsswitch.conf
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
#       nisplus or nis+         Use NIS+ (NIS version 3)
#       nis or yp               Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       db                      Use the local database (.db) files
#       compat                  Use NIS on compat mode
#       hesiod                  Use Hesiod for user lookups
#       [NOTFOUND=return]       Stop searching if not found so far
#

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis

passwd:     files
shadow:     files
group:      files

#hosts:     db files nisplus nis dns
hosts:      files dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files    

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus


#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       db                      Use the local database (.db) files
#       compat                  Use NIS on compat mode
#       hesiod                  Use Hesiod for user lookups
#       [NOTFOUND=return]       Stop searching if not found so far
#

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis

passwd:     files
shadow:     files
group:      files

#hosts:     db files nisplus nis dns
hosts:      files dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files    

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus

впринципе эти файлы не трогались.
« Last Edit: August 24, 2007, 12:38:21 by Vtec »

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: Vtec
cat resolv.conf
search ru
nameserver 83.172.32.17
nameserver 83.172.33.18
бросилось в глаза "search ru". Если нет своего домена, то поиск во внешнем лучше не делать, ибо задержки в этом случае весьма вероятны. Лучше убрать эту строку.
man resolv.conf:
Quote
search Список  для  поиска  имен  машин.   Список обычно определяется из локального имени домена; по умолчанию он содержит
              только имя локального домена. В списке может быть задано несколько доменов, которые должны  следовать  за  ключевым
              словом  search  и  отделяться  друг  от  друга  пробелами или табуляциями.  В большинстве случаев, если в запросе к
              резолверу задано короткое имя машины (без доменной части), то к нему будет поочередно добавляться каждый  домен  из
              заданного  списка,  пока  не  будет  найдено полное совпадающее имя машины.  Заметим, что данный процесс может быть
              медленным, и станет генерировать ощутимый сетевой траффик,  если  серверы,  обслуживающие  перечисленные  в  списке
              домены,  не  являются  локальными,  а  также что запросы вернут ошибку тайм-аута, если сервер для одного из доменов
              недоступен.
идем дальше
Quote
cat nsswitch.conf
passwd:     files
shadow:     files
group:      files

hosts:      files dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus

впринципе эти файлы не трогались.
если вы не пользуете NIS+ (что скорее всего так), то лучше все его явное или неявное употребление исключить. В данном случае подозрение вызывает "aliases", как потенциальная зацепка sendmail'a. И хотя маня об этом говорит, что "в настоящий момент не используется", я бы не искушал судьбу. Кто знает, когда этот момент закончится?

и еще один момент. В вашем сообщении заголовок не отделяется от тела письма пустой строкой, что может вызвать "размышления" sendmail'а на тему "как это понимать", поскольку является отступлением от RFC822.

ну и шашечки... если вы используете группировку команд скобками (echo ...) то можно без опаски переносить команды на новую строку без экранирования конца строки и без точек с запятой. Ваш скрипт будет выглядеть читабельнее, как минимум.

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Quote
бросилось в глаза "search ru". Если нет своего домена, то поиск во внешнем лучше не делать, ибо задержки в этом случае весьма вероятны. Лучше убрать эту строку

домен есть, 2-го уровня. А если я уберу эту строку, хуже будет?

Quote
если вы не пользуете NIS+ (что скорее всего так), то лучше все его явное или неявное употребление исключить. В данном случае подозрение вызывает "aliases", как потенциальная зацепка sendmail'a. И хотя маня об этом говорит, что "в настоящий момент не используется", я бы не искушал судьбу. Кто знает, когда этот момент закончится?

Не использую, чтобы исключить хватит закоментирование этих строк?

Quote
и еще один момент. В вашем сообщении заголовок не отделяется от тела письма пустой строкой, что может вызвать "размышления" sendmail'а на тему "как это понимать", поскольку является отступлением от RFC822.

ну и шашечки... если вы используете группировку команд скобками (echo ...) то можно без опаски переносить команды на новую строку без экранирования конца строки и без точек с запятой. Ваш скрипт будет выглядеть читабельнее, как минимум.

Это я вообще ради эксперемента взял. Вообще началось с того, что через сайт началась задержка, думал что php. Решил напрямую из попробывать отослать, результат тот же... есть задержка

В логах есть delay=00:00:51
Это время потраченное на отправку? Если да, то это ведь ненормально?!

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: Vtec
домен есть, 2-го уровня. А если я уберу эту строку, хуже будет?
если есть свой домен, и он обслуживается вашим собственным DNS-сервером, то его и укажите!
если нет, убирайте.
Quote
Не использую, чтобы исключить хватит закоментирование этих строк?
для аккуратности, лучше из этих строк убрать "nisplus", а там где не было альтернатив закомментируйте.
Quote
Это я вообще ради эксперемента взял. Вообще началось с того, что через сайт началась задержка, думал что php. Решил напрямую из попробывать отослать, результат тот же... есть задержка
То есть раньше задержек не было?
Что происходило на сервере между "до" и "после"?
Применяются ли фильтры (milter'ы)?

Quote from: Vtec
В логах есть delay=00:00:51
Это время потраченное на отправку? Если да, то это ведь ненормально?!
"delay" - общее время доставки письма,
"xdelay" - время транзакции для данного получателя.
Продолжительность более нескольких секунд должна вызывать подозрение админа...
Формат записи: "DD+HH:MM:SS" (для xdelay часть DD отсутствует). Большие значения обычно обусловлены проблемами с доставкой, такими как проблемы связи с MTA назначения (включая проблемы с DNS  и иже с ним), либо проблемами локальных доставщиков почты (procmail и пр.).

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Задержка при отправке писма через sendmail
« Reply #7 on: September 08, 2007, 13:28:35 »
Народ ничего не дела, встало на место. Сейчас задержек нет, букввально за секунду отправляется.
Может со стороны провайдера что было?

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Задержка при отправке писма через sendmail
« Reply #8 on: September 09, 2007, 09:39:34 »
Quote from: Vtec
Народ ничего не дела, встало на место. Сейчас задержек нет, букввально за секунду отправляется.
Может со стороны провайдера что было?
вероятно, ваш кеширующий named все-таки закешировал-таки зону ru, что и ускорило процесс. Все-таки DNS лучше оптимизировать.

Offline Vtec

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Задержка при отправке писма через sendmail
« Reply #9 on: September 12, 2007, 00:13:10 »
Да ну нету у меня днс.