我刚刚设置了自己的 Exim SMTP 服务器来发送电子邮件
但是当我发送时事通讯时,我遇到了一些奇怪的事情。很多时候,当我通过 Exim 发送邮件时,邮件在实际发送后延迟长达一个小时?
假设我发送邮件09:41
。邮件已发送,但收件人在10:25
.. 收到,但邮件上的时间戳仍然是09:41
这是为什么??
发送邮件时,它们都在同一个“保持活动”的 SMTP (TCP) 连接中发送(在几分钟内发送了大约 1000 封邮件)
然后很多人将看不到我的邮件,因为它在旧邮件和已读邮件之间结束,因为当邮件到达收件箱时,时间戳已经过了一小时
日志
2019-10-16 09:41:21 1iKdvt-0002cc-8A <= [email protected] H=smtp.example.com (example.com) [2a01:4f8:140:43a1::2] P=esmtpsa X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 CV=no A=plain_server:example S=6921 [email protected]
2019-10-16 09:41:21 1iKdvt-0002cc-8A no immediate delivery: more than 10 messages received in one connection
如何立即发送电子邮件而不是将它们放入队列中?
您的问题不是您的本地队列。您的问题是系统上两个队列运行之间的设置时间。
Exim 作为 MTA 没有真正好的队列管理;它只是看起来每次运行时都尽可能地发送出去,仅此而已。
查看 Exim 用于在进程列表中运行的参数,例如:
进出口-q30m
这意味着队列运行每半小时自动发生一次。某些发行版可能不使用此参数,而是将其放入 cron 作业中。
邮件将首先进入队列。这是理智的,实际上需要它(例如,在您可以发送消息之前,您不想因为灰名单而阻止整个线程)。
您可以做的是更改配置,以便立即为这些消息读取队列。添加(或更改现有值):
这将排队(并尽快发送)每个连接最多 20 条消息。现在对你的限制是 10。