Я заметил проблему с журналами 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 по какой-то причине (что может произойти во время ротации журнала).