Question Postfix a besoin de 60 à 90 ms pour faire la queue, normalement?


Nous constatons parfois (peut-être?) Des retards étranges lors de l'envoi d'e-mails individuels à notre serveur Postfix local.

Pour aider à diagnostiquer le problème, j'ai écrit un petit programme de test qui envoie 5 courriels:

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)

Réduire la poignée de main dans le premier e-mail, ce qui représente environ 90 ms par e-mail. Ces timings ont également été corroborés par une autre application de test écrite par une autre personne utilisant un chemin de code différent, ce qui semble donc être lié au serveur.

J'ai activé la journalisation détaillée et je peux voir que le délai est entre la fin du message \r\n\r\n et le recevoir:

[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

Les intervalles de temps racontent l’histoire (réduction de la négociation requise pour l’e-mail initial) - chaque e-mail attend environ 60 à 90 millisecondes pour que postfix soit mis en attente!

Cela semble .. excessif .. pour moi. Est-il "normal" pour postfix de prendre 60-90 ms pour chaque email que vous envoyez? Ou dois-je simplement avoir des attentes déraisonnables? Je m'attendrais à ce que le serveur postfix local mette le courrier en file d'attente en 20 ms environ en tête!


8
2018-06-11 01:46


origine


Avez-vous activé le filtrage, tel que la vérification de SPF, la recherche de DNS inversé ou Ident? Vous utilisez SMTP ou MSP? - Chris S


Réponses:


Cela semble normal. Si vous exécutez plusieurs connexions en parallèle pour l'envoi de courrier, obtenez-vous toujours 90 ms par courrier? Cela vous permettra d'augmenter facilement votre taux que vous pouvez envoyer du courrier.

Je sais que d'autres MTA (sendmail) utiliseront fsync () pour s'assurer que le courrier accepté est enregistré sur le disque avant de renvoyer la réponse 250, afin que le courrier ne soit pas perdu si le système se bloque après l'avoir accepté. Postfix le fait probablement aussi.

Vous pouvez tester ceci en plaçant le répertoire de spool de courrier sur tmpfs temporairement et en voyant le temps nécessaire pour accepter le courrier.

Autres choses que ça pourrait faire pendant cette fenêtre de 90 ms sont: analyse antivirus, vérification de la liste noire, etc. Mais vous saurez probablement si elles ont été configurées.


12
2018-06-11 02:00





Les meilleures pratiques de Postfix stipulent que vous devriez effectuer la plupart du filtrage avant la file d'attente initiale pour éviter:

  1. gaspillage de ressources en messages que vous ne devriez pas accepter en premier lieu;
  2. éviter de renvoyer des messages d'erreur (par conséquent, dépenser les ressources pour le courrier électronique d'origine et le message d'erreur);
  3. éviter d'envoyer des messages d'erreur à des destinataires incorrects.

Ainsi, le temps de mise en file d'attente n'est pas optimisé pour économiser des ressources. Si vous désactivez toutes les vérifications dans smtpd_recipient_restrictions dans postfix main.cf vous pouvez probablement obtenir une file d'attente plus rapide au prix de davantage d'erreurs et du nombre de messages d'erreur (erronés) destinés aux utilisateurs. Ce serait parfaitement acceptable s'il ne s'agit que du serveur de sortie d'une application, par exemple.


6
2018-06-11 09:20