我在澳大利亚的一家 ISP 工作。最近,一个用户帐户被盗用并发送垃圾邮件。我如何读取 mailq 中的邮件内容以找到被盗用的经过身份验证的用户。我知道如何在 Postfix 中执行此操作,但在 sendmail 中找不到方法。运行 CentOS。
提前致谢。苦苦挣扎的网络运营商。
答案1
Sendmail 会在尝试发送邮件之前将邮件保存在队列中以确保安全。操作队列的命令是mailq
。
根据设计,队列是非常短暂的,通常在这种情况下您应该依赖您的日志文件,其中还包含有关已传递且不再可以在队列中找到的消息的信息,而不是扫描队列中存在的/剩余的少数消息。
(如果您的邮件日志目前不完全包含您需要的信息这个答案可能会感兴趣。以供将来参考)
队列中的每条消息都存储在目录 /var/spool/clientmqueue 和 mqueue 中,作为几个文件,其命名如下:第一个字母代表“类型和状态”,第二个字母为“f”,其余的是您在日志和 mailq 输出中看到的 sendmail 队列 ID。
第一个字母通常是以下之一:
d邮件正文
问邮件正常时包含路由信息和标头的邮件信封
问当消息由于某种原因被放弃时重命名“q”文件
H当邮件被保留(被邮件过滤器隔离)时重命名“q”文件
吨临时文件
X送货尝试记录
如果你正在寻找身份验证信息:质量文件由一系列行组成,每行都以目的代码字母开头,其中 AAUTH=
包含命令参数提供的信息"MAIL FROM:"
,或者$f@$j
是否已直接调用 sendmail。
有关其他字段的构成的更多信息质量文件这里。
因此grep ^A /var/spool/mqueu/qf*
将列出经过验证的发件人。