Postfix - как повторить доставку почты в очереди?


95

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

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

Например: postqueue -p: дайте мне список писем

Затем я попробовал postqueue -f (со страницы man: очистить очередь: попытаться доставить всю почту в очереди.). Это, конечно, очистило очередь, но письма не были доставлены ...


Кажется, что -f сбрасывается, а -q - очередь (отправка очереди)
erm3nda

1
нет postqueue -q. Существует sendmail -qподдержка синтаксиса sendmail, поэтому postfix может полностью заменить sendmail, но это синоним. Это разные буквы jsut, потому что postfix выбрал другие, чем sendmail.
Йоханнес Х.

Извините еще раз, комментарий в тот же день :), так что оба не правы.
erm3nda

Ответы:


113

Согласно postqueue (1) вы можете просто запустить, postqueue -fчтобы очистить вашу почтовую очередь. Если письма не доставляются после очистки очереди, а вместо этого ставятся в очередь, вы можете проверить журналы почты на наличие ошибок.

Взглянуть на postsuper (1) также может быть полезно. Возможно, сообщения находятся в режиме ожидания и должны быть освобождены в первую очередь.


36

postqueue -fдолжно сработать. Если это не так, у этого есть веская причина для этого. Проверьте логи. Также pfqueue - очень полезная команда для проверки почтового спула.


16

sendmail -q немедленно повторяет доставку всех писем в очереди.


Разве это не то же самое, что запуск postqueue -f?
Далибор Филус

2
@ НУЖНО, это так. Из документации : -q Попытка доставки всей почты в очереди. Это реализуется путем выполнения команды postqueue (1).
The Wabbit

Я не проверял это, но, кажется, -f - это сброс, а -q - это очередь. Один пытается отправить, а другой просто очищает очередь. Лучше попробовать доставить, я думаю.
erm3nda

1
@ erm3nda Вы должны сначала хотя бы проверить страницы справочника. Со postqueueстраницы man: «-f Очистить очередь: попытаться доставить всю почту в очереди. Этот параметр реализует традиционную команду« sendmail -q », связавшись с демоном Postfix qmgr (8)». => они синонимы и делают то же самое. "
Йоханнес Х.

@JohannesH. Дох ... извини, ты прав насчет того, что я должен это прочитать. Спасибо за исправление.
erm3nda

4

postqueue -s domain.tldдолжно привести к тому, что резервный ретранслятор сбрасывает всю электронную почту для вашего сайта. Настройка по умолчанию для postfix включает очистку на уровне сайта для всех доменов в relay_domains. postqueue -fбудет делать это тоже, но также будет выталкивать почту для внешних сайтов, т.е. она делает больше, чем вам нужно.

Как вы определяете, что почта не была доставлена? Они все еще находятся на резервном хосте или были отправлены на главный хост, а затем потерялись?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.