在linux邮件队列中显示消息数


12

是否有一个简单的命令来查找linux邮件队列中的当前消息数?mailq转储出冗长的列表,但是快速浏览并不方便。

我正在使用Ubuntu和postfix。


1
您正在使用什么邮件传输代理?
巴特·

就像巴特所说的那样,请告诉我们您使用的MTA是什么,以便我们为您提供更具体和正确的方法。
Prix

sendmail,对不起。
dmp 2010年

确定是sendmail,而不是postfix?只需确保...
Bart Silverstrim 2010年

很好,它的后缀不是sendmail。
dmp

Answers:



13

您可以过滤输出并仅显示最后一行:

mailq | tail -n 1

2
这是个不错的主意,但是队列很大,因此返回结果要花很长时间。任何更快的..?
dmp

如果队列真的非常大,则可能还有另一个问题(除非您是ISP或邮件托管服务)。您不应该拥有如此庞大的备份,以至于必须等待几分钟才能获得这些结果...?
巴特·

我敢肯定还有另一个问题,但这会带来另一个问题;)
dmp 2010年

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没有以root身份运行,那将不起作用。所以我用这个

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

为我自己的UserParameter。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.