Sendmail lento para aceitar e-mails

4

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.

  1. Como posso diagnosticar o que está a abrandar sendmail ?
  2. Como posso configurar 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?

    
por Rich 08.11.2013 / 15:22

2 respostas

1

Existem vários parâmetros de ajuste do sendmail que podem afetar a tentativa de entrega inicial. Dê uma olhada no Ajuste do Sendmail .

    
por 08.11.2013 / 18:14
0

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.

    
por 21.11.2013 / 10:39