Como limpar a fila postfix um e-mail de cada vez?

3

Às vezes, os e-mails ficam presos na minha fila de postfix, o servidor distante dizendo "Muitas conexões, diminuem a velocidade". Eu já configurei meu postfix para domínios específicos para enviar apenas um e-mail por segundo, mas às vezes parece insuficiente.

Eu sei de postqueue -f , mas ele envia todos os e-mails ao mesmo tempo e os e-mails ficam na fila com o mesmo status.

Eu gostaria de liberar a fila de um postfix com um e-mail de cada vez, digamos um e-mail a cada segundo (ou 2 ou mais).

    
por vincent.m 29.01.2016 / 12:44

1 resposta

4

É possível liberar um e-mail específico, em vez de toda a fila. Se você fizer isso para cada mensagem, com um intervalo de dois segundos entre as mensagens, isso deve fazer o que você pede.

Primeiro, você precisa encontrar os IDs de fila dos e-mails na fila. Você pode obter isso usando o comando postqueue -p . Aqui está um exemplo de saída:

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
6777D6E1E      3517 Mon Jan 25 03:03:02  [email protected]
                                         [email protected]

69F6471CA      2820 Tue Jan 26 03:24:17  [email protected]
                                         [email protected]

O que você precisa está na primeira coluna. Você pode obter todos os IDs por meio de algumas linhas através de grep e cut, assim:

[jenny@sameen ~]$ postqueue -p | grep -v ^- | grep -v "(" | cut -d' ' -f1 |grep -e [[:alnum:]]
6777D6E1E
69F6471CA

Agora que você sabe como chegar aos IDs, você pode jogá-los em um loop bash com um pouco de sono:

[jenny@sameen ~]$ for ID in 'postqueue -p | grep -v ^- | grep -v "(" | cut -d' ' -f1 |grep -e [[:alnum:]] '; do postqueue -i $ID; sleep 2; done
    
por 29.01.2016 / 16:06