我有一个 Web 服务器,它以批处理作业的形式向 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 默认模式:
Sendmail.cf:
DeliveryMode=background
提交.cf:
DeliveryMode=i
- 用于
sendmail.cf/mc
从中继发送邮件(到互联网)和sumbit.cf/mc
接收邮件(从我的网络服务器)。 - 将外发投递模式改为排队是否合理?如果我这么做了,外发电子邮件流程会是什么样的?
- 如果这是正确的做法,有人能向我展示此更改的示例 mc 配置吗?如果不是,针对这些限制有什么建议?
答案1
凯尔,
** 我绝不是一个 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