Назад | Перейти на главную страницу

Postfix регистрирует недостающую информацию о статусе доставки (сообщение postfix / smtp)

Я заметил проблему с журналами postfix, что информация о состоянии доставки некоторых писем отсутствует. Проблема затрагивает около 1% писем.

«Здоровый» журнал:

<server># grep 8EB992EFBB44 postfix_log/mail04.log
Jun  5 03:09:29 mail04 postfix/smtpd[8537]: 8EB992EFBB44: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx]
Jun  5 03:09:29 mail04 postfix/cleanup[34349]: 8EB992EFBB44: message-id=<20120605010929.123.456@xxx.xxx.xxx>
Jun  5 03:12:02 mail04 postfix/qmgr[76377]: 8EB992EFBB44: from=<xxx@xxx.xxx>, size=48845, nrcpt=1 (queue active)
Jun  5 03:15:12 mail04 postfix/smtp[35058]: 8EB992EFBB44: to=<foo@baz.com>, relay=mx.baz.com[xxx.xxx.xxx.xxx]:25, conn_use=70, delay=343, delays=153/190/0/0.24, dsn=2.0.0, status=sent (250 ok)
Jun  5 03:15:12 mail04 postfix/qmgr[76377]: 8EB992EFBB44: removed

«Битый» журнал:

<server># grep F3C362EF37CA postfix_log/mail04.log
Jun  5 04:03:27 mail04 postfix/smtpd[39666]: F3C362EF37CA: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx]
Jun  5 04:03:27 mail04 postfix/cleanup[41287]: F3C362EF37CA: message-id=<20120605020327.449.100@xxx.xxx.xxx>
Jun  5 04:03:28 mail04 postfix/qmgr[76377]: F3C362EF37CA: from=<xxx@xxx.xxx>, size=48892, nrcpt=1 (queue active)
** here should be a log line from postfix/smtp but there is none **
Jun  5 04:03:29 mail04 postfix/qmgr[76377]: F3C362EF37CA: removed

Исходная информация:

система: FreeBSD xxx.xxx.xxx 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64

Postfix устанавливается внутри тюрьмы. Журналы находятся на одной машине, каталог журналов монтируется через nullfs. На сайте наблюдаются скачки большой нагрузки, из-за которых диски (локальные) работают на 100%.

Обновить

Журнал обновляется ежедневно, текущий размер ~ 500 МБ.

Я провел тест, поставив в очередь 99000 сообщений в одно и то же место назначения (чтобы исключить проблемы с dns / network / mx). Сообщения 5715 не имеют записи DSN. Время очереди сообщений с ошибками распределяется равномерно по времени, я не вижу проблем с привязкой по времени.

Некоторые недоставленные письма:

  envelopeid  |       processed_time
--------------+----------------------------
 8D7652EF3BAE | 2012-06-06 13:19:11.072715
 DD53A2EF3C5C | 2012-06-06 13:33:24.374783
 8C52F2EF4E3F | 2012-06-06 13:39:15.810616
 BBC572EF525C | 2012-06-06 13:44:22.762812
 E95822EF54D1 | 2012-06-06 13:52:01.134533
 839DD2EF4FBB | 2012-06-06 14:13:48.511236
 017EE2EF6234 | 2012-06-06 15:04:48.618963

Это всего лишь несколько вариантов, такие записи недоставленных писем происходят почти каждую секунду.

<server># egrep '(8D7652EF3BAE|BBC572EF525C|017EE2EF6234)' mail04.log
Jun  6 13:19:10 mail04 postfix/smtpd[20350]: 8D7652EF3BAE: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx]
Jun  6 13:19:10 mail04 postfix/cleanup[21024]: 8D7652EF3BAE: message-id=<20120606111910.674@xxx.xxx.xxx>
Jun  6 13:19:10 mail04 postfix/qmgr[7939]: 8D7652EF3BAE: from=<xxx@xxx.xxx.xxx>, size=63718, nrcpt=1 (queue active)
Jun  6 13:19:11 mail04 postfix/qmgr[7939]: 8D7652EF3BAE: removed
Jun  6 13:44:22 mail04 postfix/smtpd[20346]: BBC572EF525C: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx]
Jun  6 13:44:22 mail04 postfix/cleanup[24811]: BBC572EF525C: message-id=<20120606114422.674@xxx.xxx.xxx>
Jun  6 13:44:22 mail04 postfix/qmgr[7939]: BBC572EF525C: from=<xxx@xxx.xxx.xxx>, size=63758, nrcpt=1 (queue active)
Jun  6 15:04:49 mail04 postfix/smtpd[20344]: 017EE2EF6234: client=xxx.xxx.xxx[xxx.xxx.xxx.xxx]
Jun  6 15:04:49 mail04 postfix/cleanup[35585]: 017EE2EF6234: message-id=<20120606130448.674@xxx.xxx.xxx>
Jun  6 15:04:49 mail04 postfix/qmgr[7939]: 017EE2EF6234: from=<xxx@xxx.xxx.xxx>, size=63706, nrcpt=1 (queue active)
<server>#
<server># find /var/spool/postfix/active/ -type f -print | wc -l
       1
<server>#

ВАЖНО: как вы можете видеть выше, некоторые электронные письма не имеют removed линия.

Какая это версия постфикса?

Вы пробовали настроить системный журнал?
Если диск находится на уровне или близком к своей емкости ввода-вывода, системные журналы могут задерживаться дольше, чем вы ожидаете.

Кроме того, что такое mail04.log? Насколько это велико ? Вы уверены, что все это сообщение было записано в этот файл?

Отправьте журналы удаленно, используя удаленный системный журнал UDP или (лучше) TCP, и убедитесь, что сообщение отсутствует во всех журналах.

Если какие-либо процессы Postfix настроены в $config_directory/master.cf для запуска в chroot jail вам необходимо настроить syslogd для прослушивания $queue_directory/dev/log в дополнение к умолчанию /dev/log сокет (чтобы chrooted процессы имели доступ к /dev/log внутри chroot). Если вы этого не сделаете, сначала все будет работать, но ведение журнала из chrooted процессов прерывается при перезапуске syslogd по какой-то причине (что может произойти во время ротации журнала).