Отображение количества сообщений в почтовой очереди Linux


12

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

Я использую Ubuntu и Postfix.


1
Какой агент пересылки почты вы используете?
Барт Сильверстрим

Как сказал Барт, расскажите нам, какой MTA вы используете, чтобы мы могли дать вам более конкретное и правильное решение.
Prix

sendmail, извините.
dmp

Конечно, это sendmail, а не postfix? Просто убедившись ...
Барт Сильверстрим

хороший улов, его постфикс не 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как у меня есть две очереди и я не использую постфикс.
Йерун 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-агент не запущен от имени пользователя root. Так что я использовал это

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.