我们在 F5 负载平衡器后面有 sendmail 服务器。负载平衡器不断打开/关闭到每个邮件服务器的连接,以查看它是否正在应答。这意味着我们的 syslog 文件中充满了类似的行:
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,但如果需要修复此问题会更新。
负载平衡器通常具有相当少的脚本协议测试,仅足以确认可能的正确操作,但经常忽略协议细节,或者不执行任何有用的操作,这正是 sendmail 抱怨的。SMTP 默认是发送
HELO
然后QUIT
(检查每个响应代码)。这是一条 LogLevel > 5 消息,默认为 LogLevel 9,因此您可以
.cf
在添加到以下内容后重新创建.mc
:-O LogLevel=5
或通过在 sendmail 命令行上添加来临时覆盖它。不利的一面是 6-9 级以上的许多其他(约 140 条)消息也将被抑制。只有一种记录在案的情况是该特定消息被抑制 - 当一个连接无论如何都会通过配置(访问映射或 TCP 包装器)被拒绝时。但是,我能想到的每种情况都涉及记录拒绝错误......(更糟糕的是,有些人可能会向问候语返回错误,
HELO
这会导致 F5 将服务标记为关闭)。标准中没有可配置的项目
SMTP_monitor
,但作为一种解决方法,您可以设置一个备用 SMTP 监控脚本,F5 的 devcentral 上的这个示例(需要注册才能查看源代码)显示了它是如何使用Expect完成的:https://devcentral.f5.com/codeshare/smtp-scripted-monitor
该示例在您几乎肯定不想要的每个探针上发送一封电子邮件;-) 而是尝试这样的事情:
并根据需要进行调整。如果您的 sendmail 很挑剔(
PrivacyOptions
可能会阻止VRFY
//EXPN
)ETRN
,那么要么修改预期的代码,要么使用MAIL
thenRSET
: