Exibir o número de mensagens na fila de emails linux

12

Existe um comando simples para descobrir o número atual de mensagens na fila de emails linux? mailqdespeja uma lista detalhada, mas não é conveniente para uma visão geral rápida.

Estou usando o Ubuntu e postfix.

dmp
fonte
1
Qual agente de transferência de correio você está usando?
Bart Silverstrim
como o bart disse, diga-nos o que o MTA você está usando, para que possamos oferecer uma abordagem mais específica e correta.
Prix
sendmail, desculpe.
quer
Claro que é sendmail, não postfix? Basta ter certeza que ...
Bart Silverstrim
boa captura, seu postfix não é sendmail.
DMP

Respostas:

25

Se você deseja apenas saber o número de mensagens na fila adiada, o seguinte deve fornecer uma resposta rápida:

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

Existem outras três filas. Consulte http://www.porcupine.org/postfix/queueing.html para obter detalhes.

Brian Showalter
fonte
1
no meu caso, era o seguinte: find /var/spool/mqueue -type f | wc -le isso find /var/spool/mqueue-rx -type f | wc -lcomo eu tenho duas filas e não uso o postfix.
Jeroen Wiert Pluimers
13

Você pode filtrar a saída e exibir apenas a última linha:

mailq | tail -n 1
Martin
fonte
2
É uma boa idéia, mas a fila é enorme, por isso leva muito tempo para retornar um resultado. Algo mais rápido ..?
quer
Se a fila for realmente muito grande, pode haver outro problema (a menos que você seja um ISP ou serviço de hospedagem de email). Você não deve ter um backup tão grande que espere alguns minutos por esses resultados ...?
Bart Silverstrim
Eu tenho certeza que há uma outra questão, mas que virá em outra pergunta;)
DMP
3

Como assunto relacionado, você também pode obter o número de mensagens em sua caixa postal armazenadas no formato mbox, modificando a sugestão de Brian Showalter usando o comando "mail --headers". Por exemplo, eu tenho essa linha no meu arquivo .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
Greg Marks
fonte
1

Isto é

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

boa ideia, mas não funcionará se meu Zabbix-Agent não for executado como raiz. Então eu usei isso

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

para o meu próprio UserParameter.

Mareg
fonte