我正在使用 GNU Mailman 和 Postfix 来运行邮件列表,并且想要监控外发邮件的传递情况,即:对于从列表发送的每封邮件,检查是否答复了 250(OK)消息,如果没有,则向我报告。
现在,我正在做一个快速而粗糙的事情:
# cat /var/log/syslog | grep "smtp.*to=.*" | grep -v 250
有没有一种干净的方法来监控 smtpd 的输出?
答案1
没有办法干净地监控已发送的邮件。您只能从 postfix 的邮件日志中 grep 详细信息。
以下是一个例子:
log='logfile of postfix'
grep "status=sent" $log | \
egrep -ve 'postfix/(cleanup|pickup|master|qmgr|smtpd|local|pipe)'
并且还避免日志dkim
等。如果您需要邮件数量,那么请wc -l
在最后进行管道传输。
答案2
怎么样:
multitail -eX "smtp.*to=<(.*)>.*sent.*250" './bin/received' -f /var/log/maillog
./bin/received 是一个 shell 脚本,它获取目标电子邮件地址作为参数并对其执行一些操作。
答案3
尝试这个
cat /var/log/maillog |grep -v "relay=local" |grep "relay=" |grep "status=sent"
你会在这里找到非常有用的信息http://en.redinskala.com/postfix-maillog-interpretation/
答案4
我正在用这个观察谁通过我的服务器发送电子邮件:
tail -f /var/log/mail.log | grep 'sasl'
它显示发送者的经过身份验证的用户是谁。