Tomsk Sysadmins Forum
Unix => Администрирование => Topic started by: Vtec on August 24, 2007, 02:40:18
-
Подскажите почему может происходить задержка при отпрвке письма через 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. Почему? И где глянуть, может какие то ошибки. Раньше такого не было.
-
/var/log/maillog ?
-
Происходит задержка секунд так 10-15. Почему? И где глянуть, может какие то ошибки. Раньше такого не было.
что в логах?
обычно, большинство задержек происходит из-за плохой настройки resolver-library (resolv.conf, host.conf, nsswitch.conf, DNS, nscd, LDAP и все, что используется для резолвинга).
-
в логах только отправка пишется ошибок нет.
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
впринципе эти файлы не трогались.
-
cat resolv.conf
search ru
nameserver 83.172.32.17
nameserver 83.172.33.18
бросилось в глаза "search ru". Если нет своего домена, то поиск во внешнем лучше не делать, ибо задержки в этом случае весьма вероятны. Лучше убрать эту строку.
man resolv.conf:
search Список для поиска имен машин. Список обычно определяется из локального имени домена; по умолчанию он содержит
только имя локального домена. В списке может быть задано несколько доменов, которые должны следовать за ключевым
словом search и отделяться друг от друга пробелами или табуляциями. В большинстве случаев, если в запросе к
резолверу задано короткое имя машины (без доменной части), то к нему будет поочередно добавляться каждый домен из
заданного списка, пока не будет найдено полное совпадающее имя машины. Заметим, что данный процесс может быть
медленным, и станет генерировать ощутимый сетевой траффик, если серверы, обслуживающие перечисленные в списке
домены, не являются локальными, а также что запросы вернут ошибку тайм-аута, если сервер для одного из доменов
недоступен.
идем дальше
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 ...) то можно без опаски переносить команды на новую строку без экранирования конца строки и без точек с запятой. Ваш скрипт будет выглядеть читабельнее, как минимум.
-
бросилось в глаза "search ru". Если нет своего домена, то поиск во внешнем лучше не делать, ибо задержки в этом случае весьма вероятны. Лучше убрать эту строку
домен есть, 2-го уровня. А если я уберу эту строку, хуже будет?
если вы не пользуете NIS+ (что скорее всего так), то лучше все его явное или неявное употребление исключить. В данном случае подозрение вызывает "aliases", как потенциальная зацепка sendmail'a. И хотя маня об этом говорит, что "в настоящий момент не используется", я бы не искушал судьбу. Кто знает, когда этот момент закончится?
Не использую, чтобы исключить хватит закоментирование этих строк?
и еще один момент. В вашем сообщении заголовок не отделяется от тела письма пустой строкой, что может вызвать "размышления" sendmail'а на тему "как это понимать", поскольку является отступлением от RFC822.
ну и шашечки... если вы используете группировку команд скобками (echo ...) то можно без опаски переносить команды на новую строку без экранирования конца строки и без точек с запятой. Ваш скрипт будет выглядеть читабельнее, как минимум.
Это я вообще ради эксперемента взял. Вообще началось с того, что через сайт началась задержка, думал что php. Решил напрямую из попробывать отослать, результат тот же... есть задержка
В логах есть delay=00:00:51
Это время потраченное на отправку? Если да, то это ведь ненормально?!
-
домен есть, 2-го уровня. А если я уберу эту строку, хуже будет?
если есть свой домен, и он обслуживается вашим собственным DNS-сервером, то его и укажите!
если нет, убирайте.
Не использую, чтобы исключить хватит закоментирование этих строк?
для аккуратности, лучше из этих строк убрать "nisplus", а там где не было альтернатив закомментируйте.
Это я вообще ради эксперемента взял. Вообще началось с того, что через сайт началась задержка, думал что php. Решил напрямую из попробывать отослать, результат тот же... есть задержка
То есть раньше задержек не было?
Что происходило на сервере между "до" и "после"?
Применяются ли фильтры (milter'ы)?
В логах есть delay=00:00:51
Это время потраченное на отправку? Если да, то это ведь ненормально?!
"delay" - общее время доставки письма,
"xdelay" - время транзакции для данного получателя.
Продолжительность более нескольких секунд должна вызывать подозрение админа...
Формат записи: "DD+HH:MM:SS" (для xdelay часть DD отсутствует). Большие значения обычно обусловлены проблемами с доставкой, такими как проблемы связи с MTA назначения (включая проблемы с DNS и иже с ним), либо проблемами локальных доставщиков почты (procmail и пр.).
-
Народ ничего не дела, встало на место. Сейчас задержек нет, букввально за секунду отправляется.
Может со стороны провайдера что было?
-
Народ ничего не дела, встало на место. Сейчас задержек нет, букввально за секунду отправляется.
Может со стороны провайдера что было?
вероятно, ваш кеширующий named все-таки закешировал-таки зону ru, что и ускорило процесс. Все-таки DNS лучше оптимизировать.
-
Да ну нету у меня днс.