chatmail relay server ping tool
To install use:
uv tool install cmping
To send and receive from a single chatmail relay:
cmping nine.testrun.org # <-- substitute with the domain you want to test
To send from first domain to a second domain and receive from second domain:
cmping nine.testrun.org arcanechat.me
To show help:
cmping -h
Example outputs
Example output for single-domain ping:
$ cmping -c 10 nine.testrun.org
# using accounts_dir at: /home/user/.cache/cmping
PING nine.testrun.org(brrey3kzk@nine.testrun.org) -> nine.testrun.org(uogfnwf3r@nine.testrun.org) count=10
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=0 time=490.42ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=1 time=298.80ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=2 time=232.80ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=3 time=245.76ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=4 time=253.45ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=5 time=293.69ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=6 time=238.98ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=7 time=321.58ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=8 time=209.66ms
64 bytes ME -> nine.testrun.org -> nine.testrun.org -> ME seq=9 time=233.20ms
--- brrey3kzk@nine.testrun.org -> uogfnwf3r@nine.testrun.org statistics ---
10 transmitted, 10 received, 0.00% loss
rtt min/avg/max/mdev = 209.661/281.833/490.416/81.265 ms
Example output for two-domain ping:
$ cmping -c 10 mailchat.pl mehl.cloud
# using accounts_dir at: /home/user/.cache/cmping
PING mailchat.pl(3yeby7i8m@mailchat.pl) -> mehl.cloud(eeaocuozy@mehl.cloud) count=10
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=0 time=792.29ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=1 time=370.50ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=2 time=379.01ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=3 time=367.38ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=4 time=367.56ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=5 time=367.98ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=6 time=374.11ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=7 time=373.28ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=8 time=401.45ms
64 bytes ME -> mailchat.pl -> mehl.cloud -> ME seq=9 time=378.89ms
--- 3yeby7i8m@mailchat.pl -> eeaocuozy@mehl.cloud statistics ---
10 transmitted, 10 received, 0.00% loss
rtt min/avg/max/mdev = 367.384/417.246/792.292/132.163 ms
Developing / Releasing cmping
-
clone the git repository at https://github.com/chatmail/cmping
-
install 'cmping' in editing mode:
uv pip install -e . -
edit cmping.py and test, finally commit your changes
CI checks (ruff lint/format, packaging) come from the shared
chatmail/workflows
repository; run them locally with uvx ruff check . and
uvx ruff format --check .
To release, update CHANGELOG.md, then create and push a version tag:
git tag -a v0.18.0 -m "Release v0.18.0"
git push origin main v0.18.0
The release.yml workflow then builds and publishes to PyPI via trusted publishing (OIDC); no local twine or PyPI token is involved.
Metadata
Release files for cmping 0.18.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cmping-0.18.0.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cmping-0.18.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.9 kB
Release files / cmping-0.18.0.tar.gz
| Download URL | cmping-0.18.0.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9612fe6b61db198cc74194e99549a9b63e852432ec528f4b09a17a609e5db631
|
|
BLAKE2b-256 checksum How to use checksums |
fa6c876b6c49fd882cc8010407bfe33e82cb11f3cf192262aa4165860ac092fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency logRelease files / cmping-0.18.0-py3-none-any.whl
| Download URL | cmping-0.18.0-py3-none-any.whl |
|---|---|
| Size | 15.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5e70b19f7cb83a4f20bafd6ef1b9006afc1e8b0332f421c1c12e4c1025f7cda8
|
|
BLAKE2b-256 checksum How to use checksums |
cdf6212e8cdedea564ada2ba685728bfae9701b1a8248681c554b32524cadc36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 27, 2026.
Transparency log