Afficher le nombre de messages dans la file d'attente de messagerie Linux

12

Existe-t-il une commande simple pour connaître le nombre actuel de messages dans la file d'attente de messagerie Linux? mailqvide une liste détaillée, mais ce n'est pas pratique pour un aperçu rapide.

J'utilise Ubuntu et postfix.

dmp
la source
1
Quel agent de transfert de courrier utilisez-vous?
Bart Silverstrim
comme Bart l'a dit, dites-nous quel MTA vous utilisez afin que nous puissions vous donner une approche plus précise et correcte.
Prix
sendmail, désolé.
dmp
Bien sûr, c'est sendmail, pas postfix? Je m'assure juste ...
Bart Silverstrim
bonne prise, son suffixe n'est pas sendmail.
dmp

Réponses:

25

Si vous souhaitez simplement connaître le nombre de messages se trouvant dans la file d'attente différée, les éléments suivants devraient vous fournir une réponse rapide:

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

Il y a trois autres files d'attente. Voir http://www.porcupine.org/postfix/queueing.html pour plus de détails.

Brian Showalter
la source
1
dans mon cas, c'était ceci: find /var/spool/mqueue -type f | wc -let cela find /var/spool/mqueue-rx -type f | wc -lcar j'ai deux files d'attente et n'utilise pas de suffixe.
Jeroen Wiert Pluimers
13

Vous pouvez filtrer la sortie et afficher uniquement la dernière ligne:

mailq | tail -n 1
Martin
la source
2
C'est une bonne idée, mais la file d'attente est énorme, il faut donc beaucoup de temps pour retourner un résultat. Quelque chose de plus rapide ..?
dmp
Si la file d'attente est vraiment très volumineuse, il peut y avoir un autre problème (sauf si vous êtes un FAI ou un service d'hébergement de messagerie). Vous ne devriez pas avoir une sauvegarde si énorme que vous devez attendre quelques minutes pour ces résultats ...?
Bart Silverstrim
Je suis sûr qu'il y a un autre problème, mais cela viendra dans une autre question;)
dmp
3

Par ailleurs, vous pouvez également obtenir le nombre de messages de votre boîte aux lettres stockés au format mbox, en modifiant la suggestion de Brian Showalter à l'aide de la commande «mail --headers». Par exemple, j'ai cette ligne dans mon fichier .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
la source
1

C'est

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

bonne idée, mais cela ne fonctionne pas si mon Zabbix-Agent n'est pas exécuté en tant que root. J'ai donc utilisé ça

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

pour mon propre UserParameter.

Mareg
la source