====== Очереди ======

===== Посмотреть очередь =====

<code bash>mailq</code>

или:

<code bash>postqueue -p</code>

===== Принудительно запустить отправку из очереди =====

<code bash>mailq -q</code>

или: 

<code bash>postqueue -f</code>

===== Очистить очередь =====

1. Удалить все сообщения:

<code bash>postsuper -d ALL</code>

2. Удалить определенное письмо из очереди:

<code bash>postsuper -d <идентификатор письма></code>

* идентификатор письма можно увидеть командой mailq.

3. Очистить очередь по отправителю:

<code bash>postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /spammer@email\.com/ { print $1 }' | tr -d '*!' | postsuper -d -</code>

* в данном примере мы удалим все письма от spammer@email.com.

===== Количество писем в очереди =====

Команда mailq в конце выдает общее количество сообщений в очереди, например:

<code bash>-- 23 Kbytes in 18 Requests.</code>

* в данном примере в очереди находится 18 сообщений общим объемом 23 Кбайт.

Также, очередь можно посмотреть командами:

<code bash>find /var/spool/postfix/deferred -type f | wc -l

find /var/spool/postfix/active -type f | wc -l

find /var/spool/postfix/incoming -type f | wc -l

find /var/spool/postfix/defer -type f | wc -l</code>

* данные каталоги являются местом, где временно хранятся письма очереди.

===== Перезапустить очередь =====

<code bash>postsuper -r ALL</code>

Если не помогло, поочередно:

<code bash>postfix stop

postsuper -r ALL

postfix start</code>

===== Настройка очереди =====

Задать периодичность повторной отправки сообщений:

<code bash>postconf -e "queue_run_delay = 5m"</code>

Задать время, на которое будет отложена отправка сообщений, которые не были отправлены по причине временных неисправностей (например, принимающий сервер не отвечает или просит повторить запрос позже):

<code bash>postconf -e "minimal_backoff_time = 10m"</code>

Задать максимальное время для отправки сообщений, которые не были отправлены по причине временных неисправностей:

<code bash>postconf -e "maximal_backoff_time = 15m"</code>

Выставить время жизни для сообщения в очереди:

<code bash>postconf -e "maximal_queue_lifetime = 1d"</code>

После внесения изменений необходимо перезапустить postfix:

<code bash>service postfix restart || systemctl restart postfix</code>

===== Информация о конкретном сообщении =====

<code bash>postcat -q <идентификатор></code>

* показывает параметры сообщения и причину, по которой письмо еще не отправлено.