Linuxメールキューのメッセージ数を表示する


12

Linuxメールキューの現在のメッセージ数を確認する簡単なコマンドはありますか?mailq詳細なリストをダンプしますが、簡単な概要には不便です。

Ubuntuとpostfixを使用しています。


1
どのメール転送エージェントを使用していますか?
バートシルバース

バートが言ったように、使用しているMTAを教えてください。そうすれば、より具体的で正しいアプローチを提供できます。
グランプリ

sendmail、ごめんなさい。
dmp

確かに、ポストフィックスではなくsendmailですか?ただ、...を確認すること
バートSilverstrim

良いキャッチ、そのポストフィックスはsendmailではありません。
dmp

回答:


25

遅延キューにあるメッセージの数だけを知りたい場合は、次のようにして簡単に答えが得られます。

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

他に3つのキューがあります。詳細については、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は、2つのキューがあり、postfixを使用しないためです。
Jeroen Wiert Pluimers

13

出力をフィルタリングし、最後の行のみを表示できます。

mailq | tail -n 1

2
これはいい考えですが、キューは膨大であるため、結果を返すには長い時間がかかります。より速いもの..?
dmp

キューが非常に大きい場合は、別の問題が発生している可能性があります(ISPまたはメールホスティングサービスでない限り)。これらの結果を数分待たなければならないほど大きなバックアップは必要ありません...?
バートシルバース

私は別の問題があると確信していますが、それは別の質問に来ます;)
dmp

3

関連事項として、コマンド「mail --headers」を使用してBrian Showalterの提案を変更することにより、mbox形式で保存されたメールボックス内のメッセージ数を取得することもできます。たとえば、.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-Agentがルートとして実行されていないと機能しません。だから私はこれを使った

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

自分のUserParameterの場合。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.