{"id":13821205,"url":"https://github.com/outini/pymailq","last_synced_at":"2025-07-30T03:38:21.985Z","repository":{"id":16423805,"uuid":"19175051","full_name":"outini/pymailq","owner":"outini","description":"Simple mails queue management","archived":false,"fork":false,"pushed_at":"2020-02-10T09:08:51.000Z","size":1052,"stargazers_count":34,"open_issues_count":7,"forks_count":10,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-09T16:54:37.179Z","etag":null,"topics":["console","postfix","python2","python3","shell","utility"],"latest_commit_sha":null,"homepage":"https://pymailq.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/outini.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-26T10:46:26.000Z","updated_at":"2025-03-27T14:54:21.000Z","dependencies_parsed_at":"2022-09-26T21:12:12.707Z","dependency_job_id":null,"html_url":"https://github.com/outini/pymailq","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outini%2Fpymailq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outini%2Fpymailq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outini%2Fpymailq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/outini%2Fpymailq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/outini","download_url":"https://codeload.github.com/outini/pymailq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248261275,"owners_count":21074219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["console","postfix","python2","python3","shell","utility"],"created_at":"2024-08-04T08:01:17.535Z","updated_at":"2025-04-10T17:10:32.418Z","avatar_url":"https://github.com/outini.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"|PythonPIP|_ |PythonSupport|_ |License|_ |Codacy|_ |Coverage|_ |RTFD|_ |Travis|_\n\npymailq - Simple Postfix queue management\n=========================================\n\n| **Contact:** Denis 'jawa' Pompilio \u003cdenis.pompilio@gmail.com\u003e\n| **Sources:** https://github.com/outini/pymailq/\n|\n| A full content documentation, is online at https://pymailq.readthedocs.io/en/latest/\n|\n| The pymailq module makes it easy to view and control Postfix mails queue. It\n| provide several classes to store, view and interact with mail queue using\n| Postfix command line tools. This module is provided for automation and\n| monitoring developments.\n|\n| This project also provides a shell-like to interact with Postfix mails queue.\n| It provide simple means to view the queue content, filter mails on criterias\n| like Sender or delivery errors and lead administrative operations.\n\nInstallation\n------------\n\nInstall pymailq module from https://pypi.python.org::\n\n    pip install pymailq\n\nInstall pymailq module from sources::\n\n    python setup.py install\n\nA SPEC file is also provided for RPM builds (currently tested only on Fedora),\nthanks to Nils Ratusznik (https://github.com/ahpnils). Debian binary packages\nare also available.\n\nRequirements\n------------\n\nThis module actually support the following Python versions:\n\n*  *Python 2.7*\n*  *Python 3+*\n\nA shell is provided for interactive administration. Based on Python *cmd*\nmodule, using Python compiled with *readline* support is highly recommended\nto access shell's full features.\n\nUsing the shell\n---------------\n\nMails queue summary::\n\n    ~$ pqshell --summary\n\n    ====================== Mail queue summary ========================\n    Total mails in queue: 1773\n    Total queue size: 40.2 MB\n\n    Mails by accepted date:\n        last 24h:          939\n        1 to 4 days ago:   326\n        older than 4 days: 173\n\n    ----- Mails by status ----------    ----- Mails by size ----------\n    Active      2                       Average size      23.239 KB\n    Hold        896                     Maximum size    1305.029 KB\n    Deferred    875                     Minimum size       0.517 KB\n\n    ----- Unique senders -----------    ----- Unique recipients ------\n    Senders     156                     Recipients          1003\n    Domains     141                     Domains              240\n\n    ----- Top senders ------------------------------------------------\n    228    sender-3@domain-1.tld\n    195    sender-1@domain-4.tld\n    116    MAILER-DAEMON\n    105    sender-2@domain-2.tld\n    61     sender-7@domain-3.tld\n\n    ----- Top sender domains -----------------------------------------\n    228    domain-1.tld\n    195    domain-4.tld\n    105    domain-2.tld\n    75     domain-0.tld\n    61     domain-3.tld\n\n    ----- Top recipients ---------------------------------------------\n    29     user-1@domain-5.tld\n    28     user-5@domain-9.tld\n    23     user-2@domain-8.tld\n    20     user-3@domain-6.tld\n    20     user-4@domain-7.tld\n\n    ----- Top recipient domains --------------------------------------\n    697    domain-7.tld\n    455    domain-5.tld\n    37     domain-6.tld\n    37     domain-9.tld\n    34     domain-8.tld\n\nUsing the shell in interactive mode::\n\n    ~$ pqshell\n    Welcome to PyMailq shell.\n    PyMailq (sel:0)\u003e store load\n    500 mails loaded from queue\n    PyMailq (sel:500)\u003e show selected limit 5\n    2017-09-02 17:54:34 B04C91183774 [deferred] sender-6@test-domain.tld (425B)\n    2017-09-02 17:54:34 B21D71183681 [deferred] sender-2@test-domain.tld (435B)\n    2017-09-02 17:54:34 B422D11836AB [deferred] sender-7@test-domain.tld (2416B)\n    2017-09-02 17:54:34 B21631183753 [deferred] sender-6@test-domain.tld (425B)\n    2017-09-02 17:54:34 F2A7E1183789 [deferred] sender-2@test-domain.tld (2416B)\n    ...Preview of first 5 (495 more)...\n    PyMailq (sel:500)\u003e show selected limit 5 long\n    2017-09-02 17:54:34 B04C91183774 [deferred] sender-6@test-domain.tld (425B)\n      Rcpt: user-3@test-domain.tld\n       Err: Test error message\n    2017-09-02 17:54:34 B21D71183681 [deferred] sender-2@test-domain.tld (435B)\n      Rcpt: user-3@test-domain.tld\n       Err: Test error message\n    2017-09-02 17:54:34 B422D11836AB [deferred] sender-7@test-domain.tld (2416B)\n      Rcpt: user-2@test-domain.tld\n       Err: mail transport unavailable\n    2017-09-02 17:54:34 B21631183753 [deferred] sender-6@test-domain.tld (425B)\n      Rcpt: user-3@test-domain.tld\n       Err: mail transport unavailable\n    2017-09-02 17:54:34 F2A7E1183789 [deferred] sender-2@test-domain.tld (2416B)\n      Rcpt: user-1@test-domain.tld\n       Err: mail transport unavailable\n    ...Preview of first 5 (495 more)...\n    PyMailq (sel:500)\u003e select error \"Test error message\"\n    PyMailq (sel:16)\u003e show selected rankby sender\n    sender                                    count\n    ================================================\n    sender-2@test-domain.tld                  7\n    sender-4@test-domain.tld                  3\n    sender-6@test-domain.tld                  2\n    sender-5@test-domain.tld                  1\n    sender-8@test-domain.tld                  1\n    sender-3@test-domain.tld                  1\n    sender-1@test-domain.tld                  1\n    PyMailq (sel:16)\u003e select sender sender-2@test-domain.tld\n    PyMailq (sel:7)\u003e super hold\n    postsuper: Placed on hold: 7 messages\n    PyMailq (sel:7)\u003e select reset\n    Selector resetted with store content (500 mails)\n    PyMailq (sel:500)\u003e show selected rankby status\n    status                                    count\n    ================================================\n    deferred                                  493\n    hold                                      7\n    PyMailq (sel:500)\u003e exit\n    Exiting shell... Bye.\n\nPackaging\n---------\n\nBinary packages for some linux distribution are available. See the *packaging*\ndirectory for more information.\n\nLicense\n-------\n\n\"GNU GENERAL PUBLIC LICENSE\" (Version 2) *(see LICENSE file)*\n\n\n.. |PythonPIP| image:: https://img.shields.io/pypi/v/pymailq.svg\n.. _PythonPIP: https://pypi.python.org/pypi/pymailq/\n.. |PythonSupport| image:: https://img.shields.io/badge/python-2.7,%203.4,%203.5,%203.6-blue.svg\n.. _PythonSupport: https://github.com/outini/pymailq/\n.. |License| image:: https://img.shields.io/badge/license-GPLv2-blue.svg\n.. _License: https://github.com/outini/pymailq/\n.. |Codacy| image:: https://api.codacy.com/project/badge/Grade/8444a0f124fe463d86a91d80a2a52e7c\n.. _Codacy: https://www.codacy.com/app/outini/pymailq\n.. |Coverage| image:: https://api.codacy.com/project/badge/Coverage/8444a0f124fe463d86a91d80a2a52e7c\n.. _Coverage: https://www.codacy.com/app/outini/pymailq\n.. |RTFD| image:: https://readthedocs.org/projects/pymailq/badge/?version=latest\n.. _RTFD: http://pymailq.readthedocs.io/en/latest/?badge=latest\n.. |Travis| image:: https://travis-ci.org/outini/pymailq.svg?branch=master\n.. _Travis: https://travis-ci.org/outini/pymailq\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutini%2Fpymailq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foutini%2Fpymailq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutini%2Fpymailq/lists"}