Eu uso o postfix para fazer a entrega final de um sistema de correio que escrevi. Portanto, esta instalação do postfix só aceita mensagens minhas e é devolvida. Quando a fila do postfix está vazia, ela pode aceitar uma correspondência em 5 ms ou mais. Quando a fila tem cerca de 150 mil a 200 mil mensagens, a velocidade de transferência de mim para o postfix é muito lenta, como 50 a 100, às vezes 500 ms.
Tenho tempos de registro em cada parte da conversa SMTP, para poder ver para onde está indo o tempo. Parte disso ocorre quando estou aguardando uma resposta do comando RCPT TO, mas a grande maioria das vezes desaparece depois que envio o ponto final, antes de receber a resposta "250 ok na fila como ...".
Estou pensando que talvez o atraso do RCPT TO esteja em uma pesquisa de DNS, mas isso não me ajuda com o tempo de fila. Eu mantenho um soquete TCP aberto para todos os e-mails que estou enviando e RSET a conversa para cada e-mail, para que não perca tempo fazendo e interrompendo conexões TCP, tudo está esperando o postfix colocar a mensagem na fila.
Tudo o que li sobre o ajuste de desempenho do postfix tem a ver com gerenciamento de filas e envio de e-mails para este e aquele domínio aqui e ali. Mas estou preocupado em obter o postfix apenas para aceitar o e-mail rapidamente.
Existe alguma maneira de descobrir o que o postfix está fazendo com todo esse tempo ou existe uma maneira de torná-lo mais rápido? A fila /var/spool/postfix está no disco local, então não posso tornar isso mais rápido.
Alguma sugestão?
Responder1
Defina o seguinte emmain.cf
hash_queue_depth = 3
hash_queue_names = deferred, defer, incoming, active
Isso produz subdiretórios nas filas de entrada e ativas para que os diretórios simples não contenham todos os e-mails de uma vez. Eles agora são colocados em subdiretórios.
Mas observe: ter de 150 mil a 200 mil mensagens aguardando entrega mostra um entendimento errado e incrível de um envio equilibrado de e-mails. Isso me parece spam...
Responder2
Uma das soluções foi ter um servidor de correio secundário que tratasse de todos os bounces que estavam à espera de serem entregues, esta foi a melhor solução para manter o email real a funcionar.
Responder3
Esta é uma pergunta muito antiga, mas a tecnologia não mudou muito/as respostas existentes não são muito úteis.
Quando a fila tem cerca de 150 mil a 200 mil mensagens, a velocidade de transferência de mim para o postfix é muito lenta
Pela forma como esta questão é apresentada, parece que o OP está se referindo aoativoqueue aqui (o Postfix tem várias filas). E o Postfix está fazendo exatamente o que deveria fazer para evitar engasgos. A fila ativa é onde estão todas as coisas inteligentes com agendamento de entrega. Quando fica muito grande, o agendamento se torna o gargalo.
Quando você encontrar problemas de desempenho relacionados à carga, é uma boa ideia verificar as métricas de carga, CPU e io para ver se há um gargalo de hardware.
Onde você estiver operando uma retransmissão somente de envio, reduzir in_flow_delay aqui reduzirá a limitação de clientes. Mas você precisa manter baixo o tamanho da fila ativa. Limitar a taxa na qual as mensagens são passadas da fila de entrada para a fila ativa pode ajudar aqui. Mas a melhor solução é retirar as coisas da fila ativa com mais rapidez. A melhor coisa que você pode fazer aqui é um bom gerenciamento de reputação, DNS rápido e, se possível, distribuir o envio por vários endereços IP. A redução da frequência de novas tentativas também ajudará na taxa de preenchimento da fila ativa e nos provedores que limitam a aceitação com base na frequência das tentativas de conexão.
SPF, DMARC e DKIM (configurados corretamente) devem ser considerados essenciais.
Como todo mundo inventa seus próprios mecanismos para lidar com spam, sempre haverá exceções - para as quais você precisará configurar transportes personalizados.