问题:sendmail 默认日志记录配置不记录我需要的每条消息身份验证信息(即我想知道哪个用户/身份验证方法用于某个消息 ID)。根据这个条目的提示,我得到了以下 cf 行:
LOCAL_CONFIG
Klog syslog
# This works
HSubject: $>+LogSubject
# this does not
HX-Authost: ${mail_host}
HX-Authost: $>+LogAuthAuthor
LOCAL_RULESETS
SLogSubject
R$* $: $(log Subject: $1 authenticated-by: $&{auth_type}, $&{auth_authen}, $&{auth_ssf}, $&{auth_author}, $&{mail_mailer}, $&{mail_host}, $&{mail_addr} $) $1
SLogAuthAuthor
R$* $: $(log Authenticated-by: $1 $&{auth_type}, $&{auth_authen}, $&{auth_ssf}, $&{auth_author}, $&{mail_mailer}, $&{mail_host}, $&{mail_addr} $) $1
第一个产生(在邮件日志中):
sendmail[10814]: r2DEJl9P010814: Subject:the Subject.authenticated by:PLAIN,auser,0,,esmtp,example.com.,[email protected]
第二:
sendmail[10814]: r2DEJl9P010814: Authenticated-by:example.com.,,,,esmtp,example.com.,[email protected]
因此,当第二条规则触发时,{auth_xxxx} 宏似乎确实是空的……但事实并非如此。事实上,如果我将它们放在 H 行,我可以记录它们:
HX-Authost: ${mail_host} ${auth_type} ${auth_authen} ${auth_ssf} ${auth_author}
HX-Authost: $>+LogAuthAuthor1
除了我不想这样做,因为我会在我只想记录它的地方发送授权信息。事实上,整个解决方案是土狼丑陋的,更不用说可怕的笨拙了,我欢迎一个更好的解决方案(一个不以“更改 MTA”开头的解决方案——我对 sendmail 非常满意)
请注意,将 LogLevel 提高到 10 及以上(如建议的那样)似乎不会削减它,因为每个会话(即登录时)都会记录一次身份验证信息,而我想要的是在消息上下文中拥有它。
干杯,阿尔夫
您可以在
check_eoh
(标题末尾)或check_data
规则集中(在 smtp 数据命令之后)创建您想要的日志条目。[$: 之前应该有一个制表符]
check_data gets as input
number_of_recipients
, check_eoh gets as inputnumber_of_headers $| total_headers_bytes
check_mail
会是一个更好的地方,但FEATURE(delay_checks)
让它变得更加棘手。更改 LogLevel 以满足您的需求,例如
http://answers.google.com/answers/threadview?id=398644 问:sendmail 认证用户的日志记录。
简而言之:将 LogLevel 增加到 14
sendmail 分发状态中的 RELEASE_NOTES 文件: