Menampilkan jumlah pesan dalam antrian surat linux

12

Apakah ada perintah sederhana untuk mengetahui jumlah pesan saat ini dalam antrian surat linux? mailqmembuang daftar verbose, tetapi tidak nyaman untuk ikhtisar cepat.

Saya menggunakan Ubuntu dan postfix.

dmp
sumber
1
Apa agen transfer surat yang Anda gunakan?
Bart Silverstrim
seperti kata bart, beri tahu kami apa yang MTA Anda gunakan sehingga kami dapat memberikan Anda pendekatan yang lebih spesifik dan benar.
Prix
sendmail, maaf.
dmp
Yakin itu sendmail, bukan postfix? Hanya memastikan ...
Bart Silverstrim
tangkapan yang bagus, postfix-nya bukan sendmail.
dmp

Jawaban:

25

Jika Anda hanya ingin mengetahui jumlah pesan yang duduk di antrian yang ditangguhkan, maka yang berikut ini akan memberi Anda jawaban cepat:

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

Ada tiga antrian lainnya. Lihat http://www.porcupine.org/postfix/queueing.html untuk detailnya.

Brian Showalter
sumber
1
dalam kasus saya ini adalah ini: find /var/spool/mqueue -type f | wc -ldan ini find /var/spool/mqueue-rx -type f | wc -lkarena saya memiliki dua antrian dan tidak menggunakan postfix.
Jeroen Wiert Pluimers
13

Anda bisa memfilter output dan hanya menampilkan baris terakhir:

mailq | tail -n 1
Martin
sumber
2
Itu ide yang bagus, tapi antriannya besar, jadi butuh waktu lama untuk mengembalikan hasilnya. Ada yang lebih cepat ..?
dmp
Jika antriannya benar-benar masif, mungkin ada masalah lain (kecuali Anda ISP atau layanan hosting surat). Anda seharusnya tidak memiliki cadangan yang begitu besar sehingga Anda harus menunggu beberapa menit untuk hasil ini ...?
Bart Silverstrim
Saya yakin ada masalah lain, tetapi itu akan muncul pertanyaan lain;)
dmp
3

Sebagai masalah terkait, Anda juga dapat memperoleh jumlah pesan di kotak surat Anda yang disimpan dalam format mbox, dengan memodifikasi saran Brian Showalter menggunakan perintah "mail - headers." Misalnya, saya memiliki baris ini di file .bashrc saya:

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
sumber
1

Ini adalah

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

ide yang bagus, tetapi tidak berfungsi jika Zabbix-Agent saya tidak berjalan sebagai root. Jadi saya menggunakan ini

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

untuk UserParameter saya sendiri.

Mareg
sumber