Artigo > Postfix > Comandos para administração de fila de mensagens

3926 Views
Tempo de leitura: 2 Minutos 
Atualizado em:

Este post explica como trabalhar com mensagens na fila do Postfix, serviço de e-mail responsável pelo envio de mensagens em servidores Linux.

Verificando a fila de mensagens

Primeiramente, vejamos como visualizar a fila de mensagens enfileiradas, deferred ou com alguma pendência:

mailq

ou

postqueue -p

A saída para os comandos acima será similar a esta:

96C9D1D1620* 19859 Wed Nov 25 16:35:57 root@localhost.localdomain
webmaster@blogporta80.com.br

Portanto, os comandos acima exibem as mensagens na fila do Postfix, o Message ID, o remetente e o destinatário, mas não o conteúdo da mensagem.

Com posse do Message ID podemos visualizar o conteúdo da mensagem, além de detalhes do header, entre outras coisas. Para isso utilizaremos o comando que veremos a seguir.

Visualizando o conteúdo das mensagens

Para visualizar o conteúdo de uma mensagem, utilizamos o comando “postcat” como neste exemplo:

postcat -vq MESSAGEID

O exemplo da mensagem acima, seria:

postcat -vq 96C9D1D1620

A saída do comando acima seria similar a esta:

root@localhost.localdomain:~# postcat -vq D576011ED32
postcat: name_mask: all
postcat: inet_addr_local: configured 2 IPv4 addresses
postcat: inet_addr_local: configured 2 IPv6 addresses
*** ENVELOPE RECORDS deferred/D/D576011ED32 ***
message_size: 705 713 1 0 705
message_arrival_time: Tue Nov 24 19:30:25 2015
create_time: Tue Nov 24 19:30:25 2015
named_attribute: log_ident=D576011ED32
named_attribute: rewrite_context=remote
sender: webmaster@localhost.localdomain
named_attribute: log_client_name=serverteste.org
named_attribute: log_client_address=192.168.0.1
named_attribute: log_client_port=43434
named_attribute: log_message_origin=serverteste.org[192.168.0.1]
named_attribute: log_helo_name=serverteste.org
named_attribute: log_protocol_name=ESMTP
named_attribute: client_name=serverteste.org
named_attribute: reverse_client_name=serverteste.org
named_attribute: client_address=192.168.0.1
named_attribute: client_port=43434
named_attribute: helo_name=serverteste.org
named_attribute: protocol_name=ESMTP
named_attribute: client_address_type=2
named_attribute: dsn_orig_rcpt=rfc822;destinatario@serverteste.org
original_recipient: destinatario@serverteste.org
recipient: destinatario@serverteste.org
*** MESSAGE CONTENTS deferred/D/D576011ED32 ***
regular_text: Received: from serverteste.org (serverteste.org [192.168.0.1])
regular_text: by localhost.localdomain (Postfix) with ESMTP id D576011ED32
regular_text: for ; Tue, 24 Nov 2015 19:30:25 -0200 (BRST)
regular_text: Date: Tue, 24 Nov 2015 19:31:36 -0200
regular_text: To: Teste - Gmail
regular_text: From: Wiliam - Blog Porta 80
regular_text: Subject: [TESTE ] - Teste phpmailer
regular_text: Message-ID:
regular_text: X-Priority: 3
regular_text: X-Mailer: PHPMailer 5.2.1 (https://code.google.com/a/apache-extras.org/p/phpmailer/)
regular_text: MIME-Version: 1.0
regular_text: Content-Transfer-Encoding: 8bit
regular_text: Content-Type: text/plain; charset="iso-8859-1"
regular_text:
regular_text:
regular_text: OK OK OK
regular_text:
regular_text:
*** HEADER EXTRACTED deferred/D/D576011ED32 ***
named_attribute: encoding=8bit
*** MESSAGE FILE END deferred/D/D576011ED32 ***

Forçando o Postfix a processar a fila

Com o comando abaixo o Postfix processará a fila de e-mails.

postqueue -f

ou

postfix flush

Observação: Ao fazer isso repetidamente em uma fila com mensagens que não podem ser enviadas, ocasionará problema de baixo envio e performance em toda a fila.

Por isso é importante manter sua fila de mensagens “saudável” e remover aquelas mensagens que estão largadas na fila.

Deletando mensagens da fila

Em algumas situações é preciso remover mensagens da fila. Seja porque a mensagem não é entregue nunca, seja porque o programador sem noção fez um mail bomb com disparos em lotes de 1.000 mensagens a cada 10 segundos ou porque o estagiário fez um script que enviou 1.000.000 de mensagens e está travando o servidor como um todo.

Para deletar uma mensagem em específico, utiliza-se o comando abaixo:

root@localhost.localdomain:~# postsuper -d D576011ED32
postsuper: D576011ED32: removed
postsuper: Deleted: 1 message

Para deletar apenas mensagens deferred, utilize o comando a seguir:

root@localhost.localdomain:~# postsuper -d ALL deferred
postsuper: Deleted: 1387 messages

Para deletar todas mensagens, utiliza-se o comando abaixo:

postsuper -d ALL
postsuper: Deleted: 458 messages

Resumo

2 - 0

Thank You For Your Vote!

Sorry You have Already Voted!