Postfix занимает 60-90мс в очереди электронной почты - нормально?


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 мс на каждое отправленное вами электронное письмо? Или у меня просто есть необоснованные ожидания? Я ожидаю, что локальный постфиксный сервер поставит в очередь электронную почту примерно через 20 мс, максимум!


3
Включена ли фильтрация, например проверка SPF, поиск обратного DNS или Ident? Используете SMTP или MSP?
Крис С

Ответы:


12

Это звучит нормально. Если вы запускаете несколько соединений параллельно, отправляя почту, вы все равно получаете 90 мс на почту? Это позволит вам легко поднять ставку, чтобы вы могли отправлять почту.

Я знаю, что другие MTA (sendmail) будут использовать fsync (), чтобы гарантировать, что принятая почта передается на диск перед отправкой ответа 250, чтобы не сбрасывать электронную почту, если в системе происходит сбой после приема почты. postfix, вероятно, делает то же самое.

Вы можете проверить это, временно поместив каталог спулинга почты в tmpfs и посмотрев, сколько времени займет прием почты.

Другие вещи, которые он может делать во время этого окна 90 мс: сканирование на вирусы, проверка черного списка и т. Д. Но вы, вероятно, знаете, были ли они настроены.


6

Лучшие практики Postfix говорят, что вы должны выполнить большую часть фильтрации до начальной очереди, чтобы избежать:

  1. тратить ресурсы на сообщения, которые вы не должны принимать в первую очередь;
  2. избегайте отправки сообщений об ошибках обратно (поэтому тратите ресурсы на исходное письмо и сообщение об ошибке);
  3. избегать отправки сообщений об ошибках неправильным получателям.

Таким образом, время ожидания не оптимизировано для экономии ресурсов. Если вы отключите все проверки в smtpd_recipient_restrictionspostfix'ах, main.cfвы, вероятно, получите более быстрые очереди за счет большего количества ошибок и получения большего количества (неправильных) сообщений об ошибках для пользователей. Это было бы вполне приемлемо, если бы это был только выходной сервер для приложения, например.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.