批处理邮件作业的 Sendmail 调优

Kyl*_*ndt 5 email linux sendmail

我有一个网络服务器,可以将电子邮件作为批处理作业发送到 sendmail 中继服务器。电子邮件需要尽快被中继发送邮件服务器接受,但是,它们不需要非常快地出去(被中继)。

我在尝试连接到中继服务器的网络服务器上时不时地看到几个超时。目前的负载大约是每秒 30 封电子邮件,持续几分钟。

sendmail 调优指南中有很多sendmail 调优选项。

我现在关注的是交付模式:

交付方式

sendmail 可以运行多种传递模式,由 DeliveryMode (d) 配置选项设置。这些模式指定邮件的传送速度。合法模式有:

i 交互(同步)交付 b 在后台(异步)交付 q 仅队列(不交付) d 延迟交付尝试(不交付) 存在权衡。模式 i 为发件人提供最快的反馈,但可能会减慢某些邮件发送速度,而且几乎没有必要。模式 b 传递迅速,但如果您的邮件程序需要很长时间传递消息,则可能会导致大量进程。模式 q 最大限度地减少了机器上的负载,但意味着交付可能会延迟最多队列间隔。模式 d 与模式 q 相同,除了它还阻止在初始队列阶段工作的映射中查找,包括 -D 标志;它适用于“按需拨号”站点,在这些站点中,DNS 查找可能会花费大量金钱。一些简单的错误信息(例如,SMTP 协议期间未知的主机)将使用此模式延迟。模式 b 是通常的默认值。如果您在模式 q(仅队列)、d(延迟)或 b(在后台发送)下运行,sendmail 在最初收到邮件时将不会扩展别名并跟随 .forward 文件。这加快了对 RCPT 命令的响应。SMTP 服务器不应使用模式 i。

我目前有 CentOS 默认模式:

发送邮件.cf:

DeliveryMode=background
Run Code Online (Sandbox Code Playgroud)

提交.cf:

DeliveryMode=i
Run Code Online (Sandbox Code Playgroud)
  • 就是sendmail.cf/mc传出的电子邮件中继(到intertubes),并sumbit.cf/mc传入EAMIL(从我的网络服务器)。
  • 将传出交付模式更改为排队是否有意义?如果我这样做了,出站电子邮件流的行为会是什么样的?
  • 如果这是正确的做法,任何人都可以向我展示此更改的示例 mc 配置吗?如果不是,对这些限制有什么建议?

Jef*_*ach 2

凯尔,

** 我绝不是 sendmail 专家 **

在您的用例中,sendmail 需要尽快接受/排队消息是关键(批处理?)。如果还没有,请查看 sendmail 选项:QueueLA 和 RefuseLA - 队列负载平均和拒绝负载平均。如果您真的在轰炸 sendmail,您的平均负载将很快达到顶峰,并且您将遇到 RefuseLA,这可能是超时问题的一部分。您可能想要增加 RefuseLA(如果还没有的话)。

为了防止 sendmail 一次执行过多操作(接收和发送),请降低 QueueLA。较低的 QueueLA 值将使 sendmail 进入仅队列模式,因此 sendmail 将专注于排队工作并保存传输/发送工作以供以后使用。低 QueueLA 和高 RefuseLA 将导致系统排队大量邮件(磁盘空间),然后在负载低于 QueueLA 后开始发送邮件。

对于正常的 sendmail 配置,值得注意的是 QueueLA 不应该比 RefuseLA 低很多,并且可能应该稍微高一些。

传递模式“q”是低 QueueLA 设置的极端版本​​,您必须以某种方式启动传递命令才能开始出站消息传输。

资源: http: //www.brandonhutchinson.com/QueueLA_and_RefuseLA.html