使 sendmail 不记录“未发出 MAIL/EXPN/VRFY/ETRN”消息?

使 sendmail 不记录“未发出 MAIL/EXPN/VRFY/ETRN”消息?

我们在 F5 负载均衡器后面有 sendmail 服务器。负载均衡器不断打开/关闭与每个邮件服务器的连接以查看它是否正在应答。这意味着我们的系统日志文件中充满了以下行:

9 月 19 日 11:13:29 mailserver-X sm-mta[12643]: w8JGDTmi012643: lb5a [10.11.12.13] 在连接到 MTA 期间未发出 MAIL/EXPN/VRFY/ETRN

9 月 19 日 11:13:29 mailserver-X sm-mta[12819]: w8JGDSLk0012819: lb5b [10.11.12.14] 在连接到 MTA 期间未发出 MAIL/EXPN/VRFY/ETRN

有没有办法让sendmail静静地忽略这些?

目前正在运行 sendmail-8.14.5,但如果需要修复此问题,将会进行更新。

答案1

负载均衡器通常具有相当少的脚本化协议测试,足以确认可能的正确操作,但经常忽略协议细节,或者不执行任何有用的操作,这正是 sendmail 所抱怨的。 SMTP 默认值就是发送 HELO然后QUIT(检查每个的响应代码)。

这是一条 LogLevel > 5 消息,默认值为 LogLevel 9,因此您可以.cf在添加到以下内容后重新创建.mc

define(`confLOG_level',`5')

-O LogLevel=5或者通过在 sendmail 命令行上添加来临时覆盖它。缺点是 6-9 级的许多其他(约 140 条)消息也将被抑制。

只有一种记录在案的场景会抑制该特定消息 - 当连接无论如何都会通过配置(访问映射或 TCP 包装器)被拒绝时。然而,我能想到的每个场景都涉及记录拒绝错误......(更糟糕的是,有些可能会向问候语返回错误HELO,这将导致 F5 将服务标记为下降)。

标准中没有可配置项SMTP_monitor,但作为解决方法,您可以设置一个备用 SMTP 监控脚本,F5 的 devcentral 上的这个示例(需要注册才能查看源代码)展示了如何使用预计:

https://devcentral.f5.com/codeshare/smtp-scripted-monitor

该示例在每个探测器上发送一封电子邮件,您几乎肯定不希望这样做;-) 而是尝试这样的事情:

expect "220"                 ;# must wait for SMTP banner 
send "HELO mydomain.com\r\n" ;# EHLO is better
expect "250"
send "VRFY postmaster\r\n"   ;# some non-NOP command
expect "250"
send "QUIT\r\n"              ;# clean exit
expect "221"

并根据需要进行调整。如果你的 sendmail 很挑剔(PrivacyOptions可能会阻止VRFY// ) EXPNETRN那么要么修改预期的代码,要么使用MAILthen RSET

 ....
 send "MAIL from:<[email protected]>\r\n"  
 expect "250"
 send "RSET\r\n"
 expect "250"
 send "QUIT\r\n"
 expect "221"

相关内容