Відображати кількість повідомлень у черзі поштових служб Linux


12

Чи є проста команда дізнатись поточну кількість повідомлень у черзі електронної пошти Linux? mailqскидає багатослівний список, але це не зручно для швидкого огляду.

Я використовую Ubuntu та postfix.


1
Який агент переказу пошти ви використовуєте?
Барт Сільверстрім

як сказав Барт, скажи нам, що ти використовуєш MTA, щоб ми могли дати тобі більш конкретний і правильний підхід.
Prix

sendmail, вибачте.
dmp

Впевнений, що це sendmail, а не поштовий індекс? Тільки переконуюсь…
Барт Сільверстрім

хороший улов, його постфікс не sendmail.
dmp

Відповіді:


25

Якщо ви просто хочете дізнатися кількість повідомлень, що сидять у відкладеній черзі, то наступне має отримати швидку відповідь:

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

Є три інші черги. Докладні відомості див. У розділі http://www.porcupine.org/postfix/queueing.html .


1
в моєму випадку це було так: find /var/spool/mqueue -type f | wc -lі це find /var/spool/mqueue-rx -type f | wc -lяк я маю дві черги і не використовую постфікс.
Jeroen Wiert Pluimers

13

Ви можете фільтрувати вихід і відображати лише останній рядок:

mailq | tail -n 1

2
Це гарна ідея, але черга є великою, тому результат потрібно тривалий час. Що-небудь швидше ..?
dmp

Якщо черга дійсно велика, може виникнути інша проблема (якщо ви не Інтернет-провайдер або сервіс хостингу пошти). У вас не повинно бути резервної копії настільки величезної, що вам доведеться почекати кілька хвилин, щоб отримати ці результати ...?
Барт Сільверстрім

Я впевнений, що є ще одне питання, але це піде в іншому питанні;)
dmp

3

Як пов’язаний із цим питання, ви також можете отримати кількість повідомлень у вашій поштовій скриньці, що зберігаються у форматі mbox, змінивши пропозицію Брайана Шоултера за допомогою команди "mail --headers". Наприклад, у мене .bashrc-файл є такий рядок:

if [ -s /var/mail/$(whoami) ] ; then echo -e "\nYou have $(ls -s -h /var/mail/$(whoami) | cut -d" " -f 1) of mail.  Number of messages: $(mail --file /var/mail/$(whoami) --headers | wc -l) ($(mail --file /var/mail/$(whoami) --headers | sed '/^>* *[0-9]/d' | wc -l) unread)" ; fi

1

Це є

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

хороша ідея, але вона не працює, якщо мій агент Zabbix не працює як корінь. Тому я цим користувався

NUM=`mailq | grep -E "Requests" | awk '{print $5}'`; if [ -z "$NUM" ]; then echo "0"; else echo $NUM; fi

для мого власного UserParameter.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.