Smtp
Exim - 投遞郵件緩慢
我剛剛設置了自己的 Exim SMTP 伺服器來發送電子郵件
但是當我發送時事通訊時,我遇到了一些奇怪的事情。很多時候,當我通過 Exim 發送郵件時,郵件在實際發送後延遲長達一個小時?
假設我發送郵件
09:41
。郵件已發送,但收件人在10:25
.. 收到,但郵件上的時間戳仍然是09:41
這是為什麼??
發送郵件時,它們都在同一個“保持活動”的 SMTP (TCP) 連接中發送(在幾分鐘內發送了大約 1000 封郵件)
然後很多人將看不到我的郵件,因為它在舊郵件和已讀郵件之間結束,因為當郵件到達收件箱時,時間戳已經過了一小時
日誌
2019-10-16 09:41:21 1iKdvt-0002cc-8A <= newsletter@example.com 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 id=W7EVMeu2x4beoTgU8bfdbVw3B2xdt2sVtEOQEcQb7E@example.com 2019-10-16 09:41:21 1iKdvt-0002cc-8A no immediate delivery: more than 10 messages received in one connection
如何立即發送電子郵件而不是將它們放入隊列中?
郵件將首先進入隊列。這是理智的,實際上需要它(例如,在您可以發送消息之前,您不想因為灰名單而阻止整個執行緒)。
您可以做的是更改配置,以便立即為這些消息讀取隊列。添加(或更改現有值):
smtp_accept_queue_per_connection=20
這將排隊(並儘快發送)每個連接最多 20 條消息。現在對你的限制是 10。
您的問題不是您的本地隊列。您的問題是系統上兩個隊列執行之間的設置時間。
Exim 作為 MTA 沒有真正好的隊列管理;它只是看起來每次執行時都盡可能地發送出去,僅此而已。
查看 Exim 用於在程序列表中執行的參數,例如:
進出口-q30m
這意味著隊列執行每半小時自動發生一次。某些發行版可能不使用此參數,而是將其放入 cron 作業中。