Configuração do Exim para grandes filas de mensagens de saída

2

Eu tenho uma configuração padrão do Exim para emails de entrada e saída. Recentemente, nossa equipe de desenvolvimento montou um aplicativo PHP que nos permite enviar e-mails em massa para nossos clientes. O aplicativo PHP usa bibliotecas PEAR padrão para iniciar uma conexão SMTP com o host local (o aplicativo e o servidor de correio estão na mesma caixa). A idéia aqui é que o aplicativo enviará aproximadamente 10.000 e-mails em um período de tempo muito curto (60 segundos ou mais) que o Exim manterá em sua fila para entrega.

O problema vem em que, depois de cerca de 50 e-mails, o Exim pára de aceitar e-mails e registra o seguinte erro no arquivo exim_main.log:

SMTP command timeout on connection from localhost [127.0.0.1]

Será que isso ocorre porque o Exim imediatamente começa a entregar as mensagens e depois para de aceitar novas conexões de entrada? Eu pensei que aumentar os limites de SMTP pode ser o problema aqui, mas mesmo depois de definir novos valores no arquivo exim.conf para o seguinte, eu ainda recebo o mesmo problema:

queue_run_max = 5000
smtp_accept_max = 5000
smtp_accept_queue = 5000

Isso levanta duas questões:

  1. Como resolvo isso?
  2. Qual é a melhor maneira de configurar o Exim para aceitar uma grande quantidade de emails na fila em um período de tempo muito curto, mas depois distribuí-los gradualmente uma vez que tudo esteja na fila? Eu vi algumas pessoas executarem daemons Exim separados para mensagens recebidas e enviadas; esta é uma boa solução?
por Richard Keller 26.04.2011 / 00:41

1 resposta

4

Por padrão, o exim tenta entregar um email imediatamente para tentar evitá-lo.

Se não for possível entregá-lo imediatamente, ele entra no diretório de spool.

By default all these message files are held in a single directory called input inside the general Exim spool directory. Some operating systems do not perform very well if the number of files in a directory gets large; to improve performance in such cases, the split_spool_directory option can be used. This causes Exim to split up the input files into 62 sub-directories whose names are single letters or digits. When this is done, the queue is processed one sub-directory at a time instead of all at once, which can improve overall performance even when there are not enough files in each directory to affect file system performance.

Existem opções que controlam se o Exim tentará sua entrega imediata ou não:

  • queue_only_load - fila de entrada se for alta
  • queue_only_load_latch - não reavalie o carregamento de cada mensagem
  • queue_run_max - máximo de corredores de filas simultâneas

e, mais importante:

  • queue_only - sem entrega imediata

Todas essas configurações estão detalhadas no Manual de especificação do Exim

    
por 26.04.2011 / 00:50