postfix需要60-90ms的时间将电子邮件排队-正常吗?


8

将个别电子邮件提交到本地Postfix服务器时,我们看到一些(也许是?)奇怪的延迟。

为了帮助诊断问题,我编写了一个小测试程序,该程序发送5封电子邮件:

get smtp 1ms   (  1 ms)
email 0 677ms  (676 ms)
email 1 802ms  (125 ms)
email 2 890ms  ( 88 ms)
email 3 973ms  ( 83 ms)
email 4 1088ms (115 ms)

减去第一封电子邮件中的握手时间,每封电子邮件大约90毫秒。这些计时还与其他人使用不同的代码路径编写的另一个测试应用程序所证实,因此它似乎与服务器相关。

我打开了详细的日志记录,可以看到延迟在消息结束\r\n\r\n和接收之间:

[16:31:29.95] [SEND] \r\n.\r\n
[16:31:30.05] [RECV] 250 2.0.0 Ok: queued as B128E1E063\r\n

[16:31:30.08] [SEND] \r\n.\r\n
[16:31:30.17] [RECV] 250 2.0.0 Ok: queued as 4A7DE1E06E\r\n

[16:31:30.19] [SEND] \r\n.\r\n
[16:31:30.27] [RECV] 250 2.0.0 Ok: queued as 68ACC1E072\r\n

[16:31:30.28] [SEND] \r\n.\r\n
[16:31:30.34] [RECV] 250 2.0.0 Ok: queued as 7EFFE1E079\r\n

[16:31:30.39] [SEND] \r\n.\r\n
[16:31:30.45] [RECV] 250 2.0.0 Ok: queued as 9793C1E07A\r\n

时间间隔讲述了故事(折扣了初始电子邮件所需的握手时间)-每封电子邮件等待约60-90毫秒的后缀才能排队!

对我来说,这似乎太过分了。发送给您的每封电子邮件都需要60-90毫秒,这对于Postfix是“正常的”吗?还是我只是有不合理的期望?我希望本地postfix服务器在大约20毫秒之内将电子邮件排队,顶!


3
您是否启用了过滤功能,例如检查SPF,查找反向DNS或Ident?使用SMTP还是MSP?
克里斯·S

Answers:


12

听起来很正常。如果您在并行提交邮件时运行多个连接,那么每个邮件仍然获得90毫秒的时间吗?这将使您轻松提高提交邮件的速度。

我知道其他MTA(sendmail)将在发送回250响应之前fsync()来确保已接受的邮件已提交到磁盘,因此,如果系统在接受邮件后崩溃,则不会丢失电子邮件。后缀可能也是如此。

您可以通过将邮件假脱机目录临时放置到tmpfs上并查看接受邮件需要多长时间来进行测试。

在90毫秒的窗口内,它可能还会执行其他操作:病毒扫描,黑名单检查等。但是您可能会知道它们是否已配置。


6

Postfix最佳实践表明,您应该在初始队列之前执行大多数过滤操作,以避免:

  1. 首先浪费您不应该接受的消息中的资源;
  2. 避免发回错误消息(因此将资源用于原始电子邮件和错误消息);
  3. 避免将错误消息发送给错误的收件人。

因此,没有优化排队时间以节省资源。如果禁用smtpd_recipient_restrictions后缀中的所有检查,main.cf则可能会获得更快的排队速度,但代价是更多的错误以及向用户发送更多(错误)错误消息的代价。例如,如果它仅是应用程序的出口服务器,那将是完全可以接受的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.