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

Коррумпированная очередь Postfix: как с ней работать

Сервер postfix иногда помещает почту в поврежденную очередь. Эти сообщения никогда не проверяются из-за ошибки в файле (я вижу «неверный тип записи: 43 в содержимом сообщения»). В документации я вижу: «Нечитаемые или поврежденные файлы очереди перемещаются сюда для проверки».

ХОРОШО. Я могу прочитать их с помощью postcat, но что мне делать после этого? Могу ли я удалить их без ошибок? Что мне сделать, чтобы вернуть их в очередь отправки? Я нашел куда-то переместить файлы в maildrop, но ничего не происходит.

Спасибо !

Дом

Это довольно странное поведение, я никогда не видел, чтобы postfix делал это, у вас либо очень старый постфикс, либо у вас где-то должна быть какая-то аппаратная проблема, например, повреждение памяти или повреждение жесткого диска.

Чтобы вернуть свое электронное письмо в очередь, проще всего сделать это с помощью postcat и немного awk, что-то вроде (но YMMV):

postcat -q <m-id>  |
awk 'BEGIN {data=0}
     /^*** HEADER EXTRACTED/ {data=0;print "."; print "quit"}
     data==1 {if ($0 == ".") { $0 = ".."}; print}
     /^*** MESSAGE CONTENTS/ {data=1; print "DATA"}
     data==0 && /^sender:/ {print "HELO myfqdn\nMAIL FROM: " $2}
     data==0 && /^original_recipient: / {print "RCPT TO: " $2}' |
sendmail -bs

Я получил поврежденные сообщения после ручного редактирования ошибочных сообщений с помощью vim. Чтобы исправить это, мне пришлось отредактировать файлы с помощью шестнадцатеричного редактора. октета. Вкратце, первая строка сообщения содержит 5 значений ascii. Первое и последнее значение - длина сообщения, второе значение - длина конверта. Не уверен насчет других значений.

Каждой записи предшествует 1-байтовый тип записи и 1-байтовая длина записи. Оба эти значения являются двоичными и при необходимости должны быть изменены с помощью шестнадцатеричного редактора.

Вы можете использовать различные параметры в postcat, чтобы определить, есть ли какие-либо ошибки.

    postcat <msgid>
    postcat -b <msgid>
    postcat -e <msgid>
    postcat -v <msgid>

Чтобы повторно отправить сообщение, мне пришлось добавить «HELO myfqdn \ n» непосредственно перед «MAIL FROM:»

Вы можете указать номер версии постфикса? Что это за раздача?

(Тем не менее, скорее всего, это указывает на проблему с оборудованием.)

РЕДАКТИРОВАТЬ: тогда его повреждение файловой системы и / или проблема с памятью. Попробуйте запустить memtest.