Existem vários parâmetros de ajuste do sendmail que podem afetar a tentativa de entrega inicial. Dê uma olhada no Ajuste do Sendmail .
Eu tenho um aplicativo da Web PHP que está usando SMTP para enviar o sendmail em localhost
para enviar email.
Eu gostaria que o sendmail aceitasse a solicitação de e-mail imediatamente e a enfileirasse para enviá-la mais tarde, já que não quero que os encadeamentos de solicitação voltados ao usuário sejam bloqueados nos e-mails.
O Sendmail é instalado com as configurações padrão nos servidores web do RHEL.
Às vezes, sendmail
está bloqueando por muito tempo após o envio do comando MAIL
- às vezes levando 60 ou 90 segundos para aceitar o e-mail. O tempo gasto é geralmente muito próximo de 60 ou 90 segundos, o que me faz pensar que isso é algum tipo de tempo limite.
Procurei nos registros do sendmail e há muitos e-mails "adiados", mas nada que pareça responsável por esse atraso.
sendmail
? sendmail
para sempre aceitar o email imediatamente e enfileirar o email para envio posterior? Atualização: Não tenho certeza, mas parece que isso pode estar vinculado a aol.com
endereços. Eu suspeito strongmente que sendmail
está fazendo algum tipo de verificação de endereço de recebimento de bloqueio no estágio de aceitação de e-mail para envio. Como posso desativar isso, para que sendmail
não bloqueie meus threads de interface do usuário?
Atualização 2: Isso só parece acontecer em horários de pico. Talvez eu esteja ficando sem sendmail
tópicos ou algo assim? Como posso verificar isso?
Existem vários parâmetros de ajuste do sendmail que podem afetar a tentativa de entrega inicial. Dê uma olhada no Ajuste do Sendmail .
Não consegui consertar sendmail
, então escrevi uma fila de camada de aplicativo para armazenar e-mails antes que eles fossem para sendmail
, o que nega esse problema para mim.
Os emails são enfileirados no disco pelos threads de solicitação da Web e, em seguida, um único thread de segundo plano (por servidor da Web) passa os emails para sendmail
dessa fila.
Eu adicionei log extra, e sendmail
ainda está bloqueando ocasionalmente ao receber e-mails (agora apenas por 5-15 segundos). Eu pensei que sendmail
foi projetado para aceitar todos os e-mails imediatamente, sem bloqueá-los, e depois tentar entregá-los ao destinatário final em segundo plano em sua própria fila.
A frequência de e-mails lentos é agora muito menor. Gostaria de saber se parte do problema é que sendmail
estava ficando sem threads "receber".
Na minha configuração original, todos os threads de manipulação de solicitações PHP passariam seus emails para sendmail
(via SMTP) assim que uma ação do usuário fizesse com que um email fosse enviado. Nos horários de pico, isso deve ter significado que sendmail
estava recebendo muitos e-mails em paralelo. Ocasionalmente, estava bloqueando por 60 a 90 segundos (o que foi desastroso para o desempenho do meu aplicativo).
Agora que adicionei essa fila de camada de aplicativo, que canaliza e-mails para sendmail
em no máximo um segmento, sendmail
parece ser capaz de lidar bem (na maioria das vezes) com o mesmo volume de e-mails sem bloqueando em tudo. Ocasionalmente, ele bloqueia, o que o torna inadequado como uma camada de enfileiramento de e-mail.
Tags performance sendmail