Estamos vendo alguns atrasos (talvez?) Estranhos ao enviar emails individuais para o servidor Postfix local.
Para ajudar a diagnosticar o problema, escrevi um pequeno programa de teste que envia 5 e-mails:
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 o aperto de mão no primeiro email, isso é cerca de 90ms por email. Esses horários também foram corroborados com outro aplicativo de teste escrito por outra pessoa que usa um caminho de código diferente, portanto parece estar relacionado ao servidor.
Ativei o log detalhado e posso ver que o atraso está entre o final da mensagem \r\n\r\n
e o recebimento:
[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
Os intervalos de tempo contam a história (descontando o handshake necessário para o email inicial) - cada email aguarda cerca de 60 a 90 milissegundos para que o postfix fique na fila!
Isso parece .. excessivo .. para mim. É "normal" que o postfix leve de 60 a 90 ms para cada e-mail enviado? Ou apenas tenho expectativas irracionais? Eu esperaria que o servidor postfix local enfileirasse o email em cerca de 20ms, no máximo !
Respostas:
Isso parece normal. Se você executar várias conexões em envio paralelo de e-mail, ainda receberá 90ms por e-mail? Isso permitirá que você aumente facilmente sua taxa de envio de e-mails.
Eu sei que outros MTAs (sendmail) fsync () para garantir que o email aceito seja confirmado no disco antes de enviar de volta a resposta 250, para que o email não seja descartado se o sistema travar após a aceitação do email. o postfix provavelmente também funciona.
Você pode testar isso colocando o diretório de spool de email no tmpfs temporariamente e vendo quanto tempo leva para aceitar o email.
Outras coisas que poderia estar fazendo durante essa janela de 90ms são: verificação de vírus, verificação de lista negra, etc. Mas você provavelmente saberia se eles estavam configurados.
fonte
As práticas recomendadas do Postfix dizem que você deve fazer a maior parte da filtragem antes da fila inicial para evitar:
Portanto, o tempo de espera na fila não é otimizado para economizar recursos. Se você desabilitar todas as verificações no
smtpd_recipient_restrictions
postfix,main.cf
provavelmente poderá obter filas mais rápidas com o custo de mais erros e receber mais mensagens de erro (erradas) para os usuários. Isso seria perfeitamente aceitável se for apenas o servidor de saída de um aplicativo, por exemplo.fonte