postfix impiega 60-90 ms per accodare le e-mail - normale?


8

Stiamo riscontrando alcuni (forse?) Strani ritardi nell'invio di singole e-mail al nostro server Postfix locale.

Per aiutare a diagnosticare il problema, ho scritto un piccolo programma di test che invia 5 e-mail:

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)

Scontando l'handshaking nella prima e-mail, sono circa 90 ms per e-mail. Questi tempi sono stati inoltre confermati da un'altra app di test scritta da qualcun altro che utilizza un codice di codice diverso, quindi sembra essere correlato al server.

Ho attivato la registrazione dettagliata e vedo che il ritardo è tra la fine del messaggio \r\n\r\ne la ricezione:

[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

Gli intervalli di tempo raccontano la storia (scontando l'handshaking richiesto per l'e-mail iniziale) - ogni e-mail è in attesa di circa 60-90 millisecondi per il postfix in coda!

Questo sembra ... eccessivo ... per me. È "normale" che Postfix impieghi 60-90 ms per ogni e-mail inviata? O ho solo aspettative irragionevoli? Mi aspetto che il server Postfix locale metta in coda l'e-mail in circa 20 ms, al massimo!


3
Il filtro è attivato, ad esempio controllo SPF, ricerca DNS inverso o Ident? Usi SMTP o MSP?
Chris S,

Risposte:


12

Sembra normale. Se si eseguono più connessioni in parallelo inviando posta, si ottengono comunque 90 ms per posta? Ciò ti consentirà di aumentare facilmente la tua percentuale di invio di posta.

So che altri MTA (sendmail) faranno fsync () per garantire che la posta accettata venga impegnata sul disco prima di rispedire la risposta 250, in modo che l'e-mail non venga eliminata se il sistema si arresta in modo anomalo dopo aver accettato la posta. probabilmente anche Postfix.

È possibile verificarlo inserendo temporaneamente la directory di spool della posta in tmpfs e vedendo quanto tempo impiega ad accettare la posta.

Altre cose che potrebbero fare durante quella finestra di 90ms sono: scansione dei virus, controllo della lista nera, ecc. Ma probabilmente sapresti se sono stati configurati.


6

Le best practice di Postfix dicono che dovresti fare la maggior parte dei filtri prima della coda iniziale per evitare:

  1. sprecare risorse in messaggi che non dovresti accettare in primo luogo;
  2. evitare di rispedire i messaggi di errore (quindi spendendo le risorse per l'e-mail originale e il messaggio di errore);
  3. evitando di inviare messaggi di errore a destinatari errati.

Pertanto, il tempo di accodamento non è ottimizzato per risparmiare risorse. Se disabiliti tutti i check in smtpd_recipient_restrictionsdi Postfix, main.cfpuoi probabilmente ottenere una coda più veloce al costo di più errori e di ricevere più messaggi (errati) di errore per gli utenti. Sarebbe perfettamente accettabile se fosse solo il server di uscita per un'applicazione, per esempio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.