0

Управление почтовой очередью в postfix

Cлучилась ситуация когда надо почистить почтовую очередь postfix. Оставлю на память заметку.

Просмотреть текущую очередь:
# mailq

1FD9D42E5B     6499 Tue Oct 21 12:41:19  
        (connect to mail.meil.ru[188.212.201.14]:25: Connection timed out)
                                     

CF60C42E4F     6531 Tue Oct 21 13:32:30  
         (connect to yandeks.ru[195.161.119.224]:25: Connection timed out)
                                     

0141B42E4E     6519 Tue Oct 21 11:50:34  
            (connect to eandex.ru[79.174.72.151]:25: Connection timed out)
                                     

A71F842E3C     6471 Tue Oct 21 13:16:57  
            (connect to 148.240.4.32[148.240.4.32]:25: Connection refused)
                                     

A248C42E5E     6503 Tue Oct 21 12:41:19  
            (connect to 148.240.4.32[148.240.4.32]:25: Connection refused)
                                     

Для того что бы форсировать отправку сообщений, висящих в очереди можно выполнить:
# postfix flush

Приведенная команда отправляет сообщения из очереди на доставку, но кроме этого можно инициировать постановку сообщений в очередь доставки заново:
# postsuper -r ALL

Если нужно очистить очередь сообщений достаточно выполнить:
# postsuper -d ALL

Кроме того, можно удалить все сообщения из определенной очереди, например:
# postsuper -d [hold|incoming|active|deferred]

А так же удалить определенное сообщение из очереди:
# postuser -d A71F842E3C

Отсюда вытекает возможность удалить из очереди сообщения от определенного отправителя:
# mailq | awk ' /^[0-9A-F][0-9A-F]*.*$/ {print $1}'|tr -d '*'| xargs -rn1 postsuper -d

По аналогии по получателю тоже можно очистить:
# mailq | grep -B 2 " *$" | awk ' /^[0-9A-F][0-9A-F].*$/ {print $1}' | tr -d '*'| xargs -rn1 postsuper -d

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.