tag: #N/S/Well #N/T/Linux #N/T/Tool/Util #N/T/Public 2021-04-05 01:05 Source: , Related: [[% Postfix]], [[%postqueue]] Docs: https://www.opennet.ru/man.shtml?topic=mailq&category=1&russian=4 ## Описание Mailq распечатывает сводку почтовых сообщений, поставленных в очередь для будущей доставки. [[Работа с очередью сообщений в Postfix]] ## Шаблон ```bash mailq [-Ac] [-q...] [-v] ``` ## Примеры: ##### Посмотреть очередь ```bash mailq ``` ### Шпаргалки: ##### Посмотреть количество писем в очереди Команда mailq в конце выдает общее количество сообщений в очереди, например: ```bash -- 23 Kbytes in 18 Requests. ``` в данном примере в очереди находится 18 сообщений общим объемом 23 Кбайт. ##### Попытаться доставить всю почту в очереди ```bash mailq -q ``` Это реализуется путем выполнения команды [[%postqueue]] ![[%postqueue#Принудительно отправить одно сообщение из очереди по id]] #### АНАЛИЗ НЕДОСТАВЛЕННЫХ ПИСЕМ ##### Сортировка получателей в очереди ```bash mailq | grep -v '^ *(' | awk 'NR % 3 == 0 {print}' |sort -h|uniq -c |sort -h ``` ##### Сортировка ДОМЕНОВ получателей в очереди ```bash mailq | grep -v '^ *(' | awk -F "@" 'NR % 3 == 0 {print $2}' |sort -h|uniq -c |sort -h ``` ##### Сортировка отправителей в очереди ```bash mailq | egrep "[A-Z0-9]{10}"  |awk '{print $7}' |sort -h|uniq -c |sort -h ``` или ```bash mailq|grep ^[A-F0-9] |cut -c 42-80| sort | uniq -c| sort -n ``` ##### Cортировка ДОМЕНОВ ??? в очереди ```bash mailq | egrep "[A-Z0-9]{10}"  |awk '{print $7}' | awk -F "@" '{print $2}'|sort -h|uniq -c |sort -h ``` ##### Сортировка почты по домену отправителя ``` mailq | egrep '\w{2,3}.*\d*:\d*.*@.*\..*' --color|awk '{print $7}'|cut -d@ -f2|sort|uniq -c ``` с помощью [[%postcat]] ##### ```bash for MAILQID in $(mailq |grep [email protected] |awk '{print $1}'); do postcat -hq $MAILQID |grep "^To: "; done ``` ##### Формируем список айдишников, писем с ошибками на отправку ```bash mailq |grep MAILER-DAEMON |awk '{print $1}' > /tmp/mailer-demon-mails ``` ##### Какие ТЕМЫ в очереди на отпавку ```bash while read LINE; do postcat -hq $LINE |grep "Subject"; done < /tmp/mailer-demon-mails | uniq -c ``` ##### Какие ПОЛУЧАТЕЛИ в очереди ```bash while read LINE; do postcat -hq $LINE |grep "To: "; done < /tmp/mailer-demon-mails |sort |uniq -c |sort -h ``` ##### Какие ДОМЕНЫ в очереди на отрправку ```bash while read LINE; do postcat -hq $LINE |grep "To: " | awk -F "@" '{print $2}'; done < /tmp/mailer-demon-mails |sort |uniq -c |sort -h ``` ##### Кому недоставлена почта ```bash while read LINE; do postcat -bq $LINE |grep ">: user unknown"; done < /tmp/mailer-demon-mails |sort -h |uniq -c |sort -h ``` ##### Sort by from address : ```bash mailq | awk '/^[0-9,A-F]/ {print $7}' | sort | uniq -c | sort -n ``` #### Удаление писем из очереди ##### To remove all mails sent by [[email protected]](mailto:[email protected]) from the queue : ```bash mailq| grep '^[A-Z0-9]'|grep [email protected] |cut -f1 -d' ' |tr -d \*|postsuper -d - ``` ##### To remove all mails being sent using the From address “[[email protected]](mailto:[email protected])” : ```bash mailq| grep '^[A-Z0-9]' | grep [email protected] | cut -d ' ' -f 1 | postsuper -d - ``` с помощью [[%postsuper]] ##### Удалить все письма из очереди с сообщениями об ошибке от mailer daemon (убирая возможные звездочки из mailq id) ```bash mailq |grep MAILER-DAEMON |awk '{print $1}' | sed 's/*//' | postsuper -d - ``` ##### Удалить все письма из очереди на определенный домен или пользователя (убирая возможные звездочки из mailq id) ```bash mailq | grep -v "Queue ID" | while read line; do if [ "1" != `echo $line | wc -m` ]; then echo -n " "$line; else echo""; fi ; done | grep "Connection frequency limited" | grep '@news.ubisoft.com' | awk '{print $1}' | sed 's/*//' | postsuper -d - ``` С помощью [[%postqueue]] ##### Удаление всех писем в очереди для конкретного домена ```bash postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } [/@example\.com/](mailto:/@example\.com/) { print $1 }' | tr -d '*!' | postsuper -d - ``` ##### Удалить все письма в очереди От: определенного адреса ```bash postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /username@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d - ``` ##### To remove all mails sent by the domain [adminlogs.info](http://www.adminlogs.info/) from the queue :  ```bash mailq| grep '^[A-Z0-9]'|grep @adminlogs.info|cut -f1 -d' ' |tr -d \*|postsuper -d - ``` ## Используемые или важные ключи. Также, очередь можно посмотреть командами: ```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 ``` данные каталоги являются местом, где временно хранятся письма очереди. ### Файлы