Nous constatons des retards (peut-être?) Étranges lors de la soumission 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éduction de la négociation dans le premier e-mail, soit environ 90 ms par e-mail. Ces horaires ont également été corroborés par une autre application de test écrite par quelqu'un d'autre utilisant un chemin de code différent, il semble donc être lié au serveur.
J'ai activé la journalisation détaillée et je peux voir que le délai se situe entre la fin du message \r\n\r\n
et la réception:
[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 (actualisation de la prise de contact requise pour l'e-mail initial) - chaque e-mail attend environ 60 à 90 millisecondes pour que postfix fasse la queue!
Cela me semble .. excessif .. Est-il "normal" que postfix prenne 60 à 90 ms pour chaque e-mail que vous lui envoyez? Ou ai-je simplement des attentes déraisonnables? Je m'attendrais à ce que le serveur local de suffixe place la file d'attente dans environ 20 ms, en haut!
Réponses:
Cela semble normal. Si vous exécutez plusieurs connexions en envoyant du courrier en parallèle, obtenez-vous toujours 90 ms par courrier? Cela vous permettra d'augmenter facilement votre taux que vous pouvez envoyer par courrier.
Je sais que d'autres MTA (sendmail) fsync () pour s'assurer que le courrier accepté est validé sur le disque avant de renvoyer la réponse 250, afin que le courrier électronique ne soit pas supprimé si le système se bloque après avoir accepté le courrier. postfix le fait probablement aussi.
Vous pouvez tester cela en plaçant temporairement le répertoire du spool mail sur tmpfs et en voyant combien de temps il faut pour accepter le courrier.
D'autres choses que cela pourrait faire pendant cette fenêtre de 90 ms sont: la recherche de virus, la vérification des listes noires, etc. Mais vous savez probablement s'ils ont été configurés.
la source
Les meilleures pratiques de Postfix indiquent que vous devez effectuer la plupart du filtrage avant la file d'attente initiale pour éviter:
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
Postfix,main.cf
vous pouvez probablement obtenir une mise en file d'attente plus rapide au prix de plus d'erreurs et de recevoir plus de (mauvais) messages d'erreur pour les utilisateurs. Ce serait parfaitement acceptable s'il ne s'agit que du serveur de sortie d'une application, par exemple.la source