【问题标题】:How can I monitor outgoing email from Unix and Sendmail?如何监控来自 Unix 和 Sendmail 的外发电子邮件?
【发布时间】:2009-07-13 00:42:01
【问题描述】:
我正在运行一个 FreeBSD 服务器,我收到了一条警告,说我的服务器已经发送了垃圾邮件。我没有将它设置为开放中继,并且我已经自定义了 sendmail 配置。我想知道谁在发送什么电子邮件以及他们的用户名、电子邮件主题行以及他们发送了多少邮件的摘要。我想在日志上运行类似于处理 Apache 服务器日志时的报告。
我有什么选择?
【问题讨论】:
标签:
unix
email
sendmail
freebsd
【解决方案1】:
一个想法是将 sendmail 别名为自定义脚本,它只是在以通常方式调用 sendmail 之前将 sendmail 参数放在日志末尾。
【解决方案2】:
您还可以通过执行以下命令来监控对write 和read 函数的所有系统调用:
ps auxw | grep sendmail | awk '{print"-p " $2}' | xargs strace -s 256 -f 2>&1 | grep -E $'@|(([0-9]+\.){3}[0-9]+)' | tee -a "/var/log/sendmail-logs.log"
这将使您可以直接访问信息,我认为您无法深入。
【解决方案3】:
你能提供一些示例日志吗?我认为最好的办法是使用 grep 或 cut 来查看它们,以获取也发送的源/目标。此外,一旦您拥有正确的正则表达式,您就可以编写一个 Perl 脚本来自动化它。这将是最好的选择。
【解决方案4】:
如果 FreeBSD 有默认配置,您只有一种方式来处理输出邮件,请在 /etc/mail 中检查通过您的 sendmail 系统发送的内容。
所有输出邮件必须由/var/log/maillog记录