Contact: Denis 'jawa' Pompilio <[email protected]>
A full content documentation, is online at https://pymailq.readthedocs.io/en/latest/
The pymailq module makes it easy to view and control Postfix mails queue. It
provide several classes to store, view and interact with mail queue using
Postfix command line tools. This module is provided for automation and
monitoring developments.
This project also provides a shell-like to interact with Postfix mails queue.
It provide simple means to view the queue content, filter mails on criterias
like Sender or delivery errors and lead administrative operations.
Install pymailq module from https://pypi.python.org:
pip install pymailq
Install pymailq module from sources:
python setup.py install
A SPEC file is also provided for RPM builds (currently tested only on Fedora), thanks to Nils Ratusznik (https://github.com/ahpnils). Debian binary packages are also available.
This module actually support the following Python versions:
- Python 2.7
- Python 3+
A shell is provided for interactive administration. Based on Python cmd module, using Python compiled with readline support is highly recommended to access shell's full features.
Mails queue summary:
~$ pqshell --summary ====================== Mail queue summary ======================== Total mails in queue: 1773 Total queue size: 40.2 MB Mails by accepted date: last 24h: 939 1 to 4 days ago: 326 older than 4 days: 173 ----- Mails by status ---------- ----- Mails by size ---------- Active 2 Average size 23.239 KB Hold 896 Maximum size 1305.029 KB Deferred 875 Minimum size 0.517 KB ----- Unique senders ----------- ----- Unique recipients ------ Senders 156 Recipients 1003 Domains 141 Domains 240 ----- Top senders ------------------------------------------------ 228 [email protected] 195 [email protected] 116 MAILER-DAEMON 105 [email protected] 61 [email protected] ----- Top sender domains ----------------------------------------- 228 domain-1.tld 195 domain-4.tld 105 domain-2.tld 75 domain-0.tld 61 domain-3.tld ----- Top recipients --------------------------------------------- 29 [email protected] 28 [email protected] 23 [email protected] 20 [email protected] 20 [email protected] ----- Top recipient domains -------------------------------------- 697 domain-7.tld 455 domain-5.tld 37 domain-6.tld 37 domain-9.tld 34 domain-8.tld
Using the shell in interactive mode:
~$ pqshell Welcome to PyMailq shell. PyMailq (sel:0)> store load 500 mails loaded from queue PyMailq (sel:500)> show selected limit 5 2017-09-02 17:54:34 B04C91183774 [deferred] [email protected] (425B) 2017-09-02 17:54:34 B21D71183681 [deferred] [email protected] (435B) 2017-09-02 17:54:34 B422D11836AB [deferred] [email protected] (2416B) 2017-09-02 17:54:34 B21631183753 [deferred] [email protected] (425B) 2017-09-02 17:54:34 F2A7E1183789 [deferred] [email protected] (2416B) ...Preview of first 5 (495 more)... PyMailq (sel:500)> show selected limit 5 long 2017-09-02 17:54:34 B04C91183774 [deferred] [email protected] (425B) Rcpt: [email protected] Err: Test error message 2017-09-02 17:54:34 B21D71183681 [deferred] [email protected] (435B) Rcpt: [email protected] Err: Test error message 2017-09-02 17:54:34 B422D11836AB [deferred] [email protected] (2416B) Rcpt: [email protected] Err: mail transport unavailable 2017-09-02 17:54:34 B21631183753 [deferred] [email protected] (425B) Rcpt: [email protected] Err: mail transport unavailable 2017-09-02 17:54:34 F2A7E1183789 [deferred] [email protected] (2416B) Rcpt: [email protected] Err: mail transport unavailable ...Preview of first 5 (495 more)... PyMailq (sel:500)> select error "Test error message" PyMailq (sel:16)> show selected rankby sender sender count ================================================ [email protected] 7 [email protected] 3 [email protected] 2 [email protected] 1 [email protected] 1 [email protected] 1 [email protected] 1 PyMailq (sel:16)> select sender [email protected] PyMailq (sel:7)> super hold postsuper: Placed on hold: 7 messages PyMailq (sel:7)> select reset Selector resetted with store content (500 mails) PyMailq (sel:500)> show selected rankby status status count ================================================ deferred 493 hold 7 PyMailq (sel:500)> exit Exiting shell... Bye.
Binary packages for some linux distribution are available. See the packaging directory for more information.
"GNU GENERAL PUBLIC LICENSE" (Version 2) (see LICENSE file)