Pesquisar neste blog

terça-feira, 18 de novembro de 2008

Gerenciando as filas do postfix

Olá pessoal, mais uma vez, eu aqui.
Para os usuários do MTA Postfix que querem aprender um pouco mais sobre como gerenciar as filas de emails ai vão algumas dicas então.

Para quem recebe uma grande demanda de emails diariamente ou até mesmo rastrear o envio ou recebimento de um email é sempre bom saber como fazer isso. O postfix conta com alguns utilitários em sua instalação que nos ajuda a fazer estas tarefas, também é claro que existem outras ferramentas do nosso próprio linux que podem nos auxiliar.

Em primeiro lugar vamos ver onde ficam as pastas das filas:

No meu caso que estou utilizando a distribuição baseada no redhat, o CentOS 4.6 a licalização dos diretórios ficam em:

/var/spool/postfix

Dentro desta pasta existem inúmeros diretórios, vamos ver alguns importantes:

incoming - Esta file contém todos os emails novos que entram na fila do postfix. Eles são armazenados pelo processo cleanup.
active - Esta file contém todos os e-mails que foram abertos pelo gerenciador da fila para entrega.
deferred - Esta fila armazena todos os emails que por algum motivo não puderam ser entregues aos seus receptores.
corrupt - As mensagens que não podem ser lidas ou danificadas são colocadas nesta fila.
hold - Esta fila é usada pelos administradores para por mensagens em espera até que alguém especifique que ela deva ser liberdada. Esta fila é muito usada por programas de checagem de mensagens, como o MailScanner, Clamav, etc... antes de serem entregues para o usuário.


Bom, agora que já aprendemos um pouco sobre a função de cada pasta vamos nos deter nos aplicativos para controlar as mensagens.

Na instalação do postfix já vem com vários aplicativos que iremos detalhar seu uso abaixo:

postqueue - Postfix Queue Control
postsuper - Postfix Superintendent
qshape - Print Postfix queue domain and age distribuition


Postfix Queue Control

postqueue -p -> comando usado para verificar a fila de emails

postqueue -f -> comando usado para dar um flush, ou seja, tenta entregar todos os emails da fila.
postqueue -s dominio -> comando usado para iniciar a entrega imediata de mensagens de um determinado domínio.

postqueue -v -> Habilita modo verbose para debug.




Postfix Superintendent

postsuper -h queue_id -> comando usado para colocar uma mensagem em espera.

postsuper -H queue_id -> Comando usado para tirar uma mensagem da espera.

postsuper -p -> comando usado para dar um purge nos arquivos temporários.

postsuper -d queue_id -> comando usado para deletar uma mensagem da fila.

postsuper -r queue_id -> comando usado para enfileirar novamente as mensagens.

postsuper -s -> comando usado para checar a estrutura e reparar caso haja erros.

postsuper -v -> Habilita modo verbose para debug.


Print Postfix queue domain and age distribuition

Por último temos o comando qshape, podemos usá-lo para ver as filas.

qshape active -> mostra o conteúdo da fila active.
qshape incoming -> mostra o conteúdo da fila incoming.
qshape hold -> mostra o conteúdo da fila hold.
qshape deferred -> mostra o conteúdo da fila deferred.
qshape -s -> mostra os domínios de destino.



Exemplo de filtros

Com o auxílio do comando find podemos fazer uma busca nas filas por um determinado email e depois apagá-lo com mostra o comando abaixo:

# find /var/spool/postfix -type f | xargs -n 1000 grep -l email@dominio.com.br | sed 's/.*\///g' | postsuper -d -

Para tirarmos da fila de espera um determinado email:
# find /var/spool/postfix -type f | xargs -n 1000 grep -l email@dominio.com.br | sed 's/.*\///g' | postsuper -H -

Excluindo tudo que está em HOLD, ou seja, na fila de espera.

# find /var/spool/postfix/hold -type f | sed 's/.*\///g' | postsuper -H -

Procurar mensagens do domínio teste.com.br
# tail -10000 /var/log/maillog | egrep -i ': from=<.*@teste\.com\.br>,' | less

Procurar uma mensagem por um específico queue_id
# tail -10000 /var/log/maillog | egrep ': 2B2173FF68: '

Verificar possíveis problemas.
# egrep 'qmgr.*(panic|fatal|error|warning):' /var/log/maillog




Fontes:
Postfix Frequently Asked Questions

qshape
postsuper
postqueue
qmgr

4 comentários:

poflabs disse...

está trocado com o -p


postqueue -f -> comando usado para verificar a fila de emails

Marcos Abadi disse...

Corrigido, Obrigado amigo!
Abraço!

Daniel Novaes disse...

Amigos,

qual comando para eu saber o numero/quantidade de mensgens na fila do posfix?

abs

Marcos Abadi disse...

Olá amigo, o comando está descrito no blog:

postqueue -p -> comando usado para verificar a fila de emails