![在 sendmail 中记录身份验证信息 - 后续操作](https://linux22.com/image/617646/%E5%9C%A8%20sendmail%20%E4%B8%AD%E8%AE%B0%E5%BD%95%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E4%BF%A1%E6%81%AF%20-%20%E5%90%8E%E7%BB%AD%E6%93%8D%E4%BD%9C.png)
我想记录每个 SMTP 事务中的消息 ID、客户端 IP 地址和经过身份验证的发件人,就像这里讨论的那样:
我已经实施了该解决方案,但是,它记录了所有交易,而不仅仅是使用身份验证的交易。我更愿意只记录使用身份验证的条目。
我的目标是能够通过日志分析检测钓鱼电子邮件帐户。
我想保留的条目如下所示:
Sep 23 06:31:40 mail sm-mta[20443]: r8NDVdM3020443: Authenticated-by:LOGIN,username,0,,[192.168.1.10]
我想跳过的条目缺少机制和用户名(,,,,):
Sep 23 06:31:44 mail sm-mta[20475]: r8NDVh3m020475: Authenticated-by:,,,,messagent.computerdealernews.com.
我主要想找的是消息 ID、身份验证用户名和发件人的 IP 地址,它们都在同一行。它似乎没有正确的 IP 地址。
如果您能给我提供与此相关的任何参考信息,那将会很有帮助。
工作配置
这个配置打印出了我想要的内容。
Scheck_data
R$* $: <$&{auth_authen}> $1
R<$+> $* $: <$1> $2 $(log Authenticated-by: $&{auth_type}, $&{auth_authen}, $&{client_addr}, $&{f} $)
R<$*> $* $: $2
谢谢。
答案1
以下代码仅当 ${auth_authen} 不为空时才生成日志条目。
警告:在 $ 前放置制表符 (\t):[我做不到]
LOCAL_RULESETS
Scheck_data
R$* $: <$&{auth_authen}> $1
R<$+> $* $: <$1> $2 $(log Authenticated-by: $&{auth_type}, $&{auth_authen}, $&{auth_ssf}, $&{auth_author}, $&{mail_mailer}, $&{mail_host}, $&{mail_addr} $)
R<$*> $* $: $2