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

4326 Views
Read in 3.28 mintues
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  [email protected]
     [email protected]

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:

[email protected]:~ 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: [email protected]
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;[email protected]
original_recipient: [email protected]
recipient: [email protected]
*** 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 <[email protected]>; 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 <[email protected]>
regular_text: From: Wiliam - Blog Porta 80 <[email protected]>
regular_text: Subject: [TESTE ] - Teste phpmailer
regular_text: Message-ID: <[email protected]>
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
observacao
observacao

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:

[email protected]:~# postsuper -d D576011ED32
postsuper: D576011ED32: removed
postsuper: Deleted: 1 message

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

[email protected]:~# postsuper -d ALL deferred
postsuper: Deleted: 1387 messages

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

postsuper -d ALL
postsuper: Deleted: 458 messages
2 - 0

Thank You For Your Vote!

Sorry You have Already Voted!