在 sendmail 中记录身份验证信息

在 sendmail 中记录身份验证信息

问题: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 及以上(如已建议的那样)似乎行不通,因为身份验证信息每个会话(即登录时)只记录一次,而我想要的是将其放在消息上下文中。

干杯,阿尔夫

答案1

check_eoh您可以在(标题末尾)或check_data规则集(smtp 数据命令之后)中创建所需的日志条目。

LOCAL_RULESETS
Scheck_data
R$*    $: $(log Authenticated-by: $&{auth_type}, $&{auth_authen}, $&{auth_ssf}, $&{auth_author}, $&{mail_mailer}, $&{mail_host}, $&{mail_addr} $) $1

[$ 前应有一个 TAB:]
check_data 作为输入number_of_recipients,check_eoh 作为输入number_of_headers $| total_headers_bytes

check_mail会是一个更好的地方,但FEATURE(delay_checks)会使情况变得更加棘手。

答案2

更改 LogLevel 以满足您的需求,例如

define(`confLOG_LEVEL', `14')dnl

http://answers.google.com/answers/threadview?id=398644 问:sendmail 认证用户的日志。

简而言之:将 LogLevel 增加到 14


sendmail 分发中的 RELEASE_NOTES 文件指出:

8.10.0/8.10.0   2000/03/01
[...]
  Log basic information about authenticated connections at LogLevel 10 or higher.

相关内容