Estamos viendo algunos (¿quizás?) Retrasos extraños al enviar correos electrónicos individuales a nuestro servidor Postfix local.
Para ayudar a diagnosticar el problema, escribí un pequeño programa de prueba que envía 5 correos electrónicos:
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)
Descontando el apretón de manos en el primer correo electrónico, eso es aproximadamente 90ms por correo electrónico. Estos tiempos también se han corroborado con otra aplicación de prueba escrita por otra persona que usa una ruta de código diferente, por lo que parece estar relacionada con el servidor.
Encendí el registro detallado y puedo ver que la demora es entre el final del mensaje \r\n\r\n
y la recepció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
Los intervalos de tiempo cuentan la historia (descontando el apretón de manos requerido para el correo electrónico inicial): ¡cada correo electrónico espera entre 60 y 90 milisegundos para que Postfix se ponga en cola!
Esto parece ... excesivo ... para mí. ¿Es "normal" que Postfix demore entre 60 y 90 ms por cada correo electrónico que lo envíe? ¿O simplemente tengo expectativas irrazonables? ¡Esperaría que el servidor de postfix local ponga en cola el correo electrónico en aproximadamente 20 ms, como máximo!
Respuestas:
Eso suena normal. Si ejecuta varias conexiones en paralelo al enviar correo, ¿aún obtiene 90ms por correo? Esto le permitirá aumentar fácilmente su tasa de envío de correo.
Sé que otros MTA (sendmail) fsync () para garantizar que el correo aceptado se confirme en el disco antes de enviar la respuesta 250, de modo que el correo electrónico no se caiga si el sistema falla después de aceptar el correo. postfix probablemente también lo haga.
Puede probar esto colocando el directorio de spool de correo en tmpfs temporalmente y viendo cuánto tiempo lleva aceptar correo.
Otras cosas que podría estar haciendo durante esa ventana de 90 ms son: detección de virus, verificación de listas negras, etc. Pero probablemente sabría si estaban configuradas.
fuente
Las mejores prácticas de Postfix dicen que debe hacer la mayor parte del filtrado antes de la cola inicial para evitar:
Por lo tanto, el tiempo de espera no está optimizado para ahorrar recursos. Si deshabilita todas las comprobaciones en
smtpd_recipient_restrictions
postfix,main.cf
probablemente pueda obtener una cola más rápida a costa de más errores y obtener más mensajes de error (incorrectos) para los usuarios. Eso sería perfectamente aceptable si es solo el servidor de salida para una aplicación, por ejemplo.fuente