Sendmail sobre SMTP está estrangulando meu script PHP… Como faço para que ele se comporte?

1

Aqui está a situação: Eu tenho um servidor Redhat Linux com PHP 5.2 e sendmail padrão que estamos usando para enviar e-mail para uma lista de 10.000 endereços de e-mail. Temos um script bastante simples que usa o PHPMailer e se conecta via SMTP ao daemon sendmail de escuta.

Sempre que esse script for executado, ele eventualmente chegará ao ponto em que ele começará a executar a sujeira lentamente. Ele será iniciado rapidamente, mas depois será reduzido para enviar apenas um e-mail a cada poucos minutos. Quando eu reinicio o script, ele corre rápido novamente por um tempo.

Em cima do servidor sendmail, adicionei algumas configurações no script para tentar corrigir o problema de limitação:

define('confMAX_QUEUE_RUN_SIZE','0')dnl
define('confBAD_RCPT_THROTTLE', '0')dnl
define('confCONNECTION_RATE_THROTTLE', '0')dnl

Até agora, não tenho certeza da melhor maneira de corrigir o problema, ou mesmo de solucionar o problema. O arquivo / var / log / maillog realmente não tem nenhuma informação útil.

Nós temos essa instância do sendmail atrás de um firewall, então não precisamos nos preocupar com a segurança ... apenas abra-a e deixe o fluxo de e-mails!

    
por The How-To Geek 22.02.2010 / 19:54

2 respostas

1

Você não deveria estar se conectando ao SMTP remoto pelo script, mas sim ao host local usando o sendmail (ou melhor, o postfix). O Sendmail deve cuidar de entregar as mensagens. Se você precisa ter certeza de que todas as mensagens saem através de uma máquina de gateway específica, configure o sendmail com o smarthost correto.

O motivo pelo qual você quer fazer isso é que enviar e-mails é muito mais complexo do que você pensa inicialmente, e o sendmail (ou melhor, o postfix) é construído para lidar com todos os detalhes como gerenciamento de filas.

Quanto ao que está acontecendo no próprio servidor de email, você verificou a carga e outros fatores nesse servidor? Pode estar sobrecarregado depois que você enviou tantas mensagens para ele, e é legitimamente lento por causa disso. Verifique coisas como 'top', 'netstat -n', etc ...

    
por 22.02.2010 / 21:47
0

Você pode tentar aumentar a verbosidade do log no sendmail. Isso pode lhe dar mais algumas pistas.

Você pode precisar determinar se a latência está vindo do lado do PHP ou do lado do sendmail.

Quando ele ficar lento, execute um netstat e veja quais portas estão abertas.

Verifique novamente o DNS. Certifique-se de que seu servidor possa resolver rapidamente nomes de domínio. Muitas vezes, eu executo um servidor DNS de cache localmente ao enviar grandes volumes de e-mail.

Eu não usei o PHPMailer dessa maneira, mas consegui apenas chamar o / usr / sbin / sendmail por meio de um script PHP, como ver mais de 600 mensagens / minuto em hardware modesto.

    
por 22.02.2010 / 21:17