Skip to main content

cmtop: real-time mail monitor for chatmail relays

cmtop provides an htop-style console interface for monitoring mail traffic and system health on chatmail relays. It tails postfix and dovecot logs to calculate real-time delivery statistics and identifies external domains involved in mail traffic.

Installation

To install use:

uv tool install cmtop

Usage

Interactive TUI

To run the interactive TUI:

cmtop

To override the local domain name used for distinguishing internal versus external traffic:

cmtop --domain example.org

Non-interactive Log Analysis

To analyze a logfile and print a flat summary table:

cmtop -f /path/to/mail.log

You can also pipe journalctl output directly:

journalctl -u postfix@- --no-pager | cmtop -f - --domain mail.example.org

Interactive Controls

  • j or Down Arrow: Move cursor down

  • k or Up Arrow: Move cursor up

  • q: Quit

Developing / Releasing cmtop

  1. Clone the git repository at https://github.com/hpk42/cmtop

  2. Install 'cmtop' in editing mode: uv pip install -e .

  3. Edit code under cmtop/, add tests to tests/ and run pytest, finally commit your changes.

CI checks (ruff lint/format, packaging, pytest) come from the shared chatmail/workflows repository; run them locally with uvx ruff check ., uvx ruff format --check . and pytest.

To release, run the shared release script from a checkout of chatmail/workflows:

python ../workflows/scripts/make_new_release.py

It runs the checks, tests the built wheel, generates the CHANGELOG.md entry with git-cliff and opens it in your editor, then commits, tags vX.Y.Z and pushes. The release.yml workflow builds and publishes to PyPI via trusted publishing (OIDC); no local twine or PyPI token is involved.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cmtop-0.2.1.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cmtop-0.2.1-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file cmtop-0.2.1.tar.gz.

File metadata

  • Download URL: cmtop-0.2.1.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cmtop-0.2.1.tar.gz
Algorithm Hash digest
SHA256 3ad15b60b29d4d630be971b640af65ec8d65de0dad628af7c4d614e26ef39084
MD5 05975f1b3884e7dda0c4c3c679e73cfe
BLAKE2b-256 b19e9dc194530ead40991274b817712bcf2c4b9420686aeba49e1eb31697eb51

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmtop-0.2.1.tar.gz:

Publisher: release.yml on hpk42/cmtop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cmtop-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: cmtop-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cmtop-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a46c6429d0948efa47435bcd119c37cc72c07ac583390dd04fa84156056fc4fa
MD5 34df307030fe8a631da26415c4eb43b2
BLAKE2b-256 17ef5ed1908cb78123451099e7969ee6998b5be536b898a4869d6e775a5b1c18

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmtop-0.2.1-py3-none-any.whl:

Publisher: release.yml on hpk42/cmtop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page