Skip to main content

Project Logo

The Lupaxa Security Toolbox
Part of The Lupaxa Project


lupaxa-mx-inspector

Look up a domain's MX hosts, SPF, and DMARC policy from public DNS, with an optional SMTP banner probe.

Features

  • Query MX records (priority and host)
  • Query apex TXT for SPF (v=spf1)
  • Query _dmarc.<domain> for the published TXT record
  • Decode common DMARC tags (p, sp, rua, ruf, alignment, and more)
  • Score DNS-only spoofing posture (open / monitoring / enforcing / locked down)
  • Optional --probe SMTP banner / EHLO fingerprint (no authentication, no mail)
  • Human-readable table (colour on a TTY; --no-color or NO_COLOR to disable), or JSON
  • Library API (lookup_dmarc / lookup_mx / lookup_spf / score_posture / probe_smtp) and CLI (mx-inspector)
  • Fully typed, linted, formatted, and tested

Installation

From PyPI

pip install lupaxa-mx-inspector

From source (development mode)

pip install -e ".[dev]"

Requires Python 3.10+. Runtime dependencies: dnspython, prettytable, colored.

Library quick start

from lupaxa.mx_inspector import lookup_dmarc, lookup_mx, lookup_spf, score_posture

policy = lookup_dmarc("example.com")
hosts = lookup_mx("example.com")
spf = lookup_spf("example.com")
score = score_posture(policy, mx_hosts=hosts, spf_records=spf)
print(policy["p"], score.value, score.grade)

CLI quick start

mx-inspector --help
mx-inspector example.com
mx-inspector example.com example.org
mx-inspector example.com --format json
mx-inspector example.com --no-color
mx-inspector example.com --probe --port 587

You can also run the CLI as a module:

python -m lupaxa.mx_inspector --help
python -m lupaxa.mx_inspector --version

Documentation

Online documentation:

Documentation

Source repository:

GitHub

Serve docs locally

From a clone of the repository:

make mkdocs-serve

Then open the local URL printed by MkDocs in your browser.

Development

Clone the repository and install with Make:

make init                # first-time makefile-skills checkout
make python-install-dev  # editable install with [dev]
make python-check        # lint, type-check, and test
The Lupaxa Project Footer

Release files for lupaxa-mx-inspector 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lupaxa-mx-inspector 0.2.1
File Size Uploaded
lupaxa_mx_inspector-0.2.1.tar.gz 14.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lupaxa-mx-inspector 0.2.1
File Interpreter ABI Platform
lupaxa_mx_inspector-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 32.7 kB

Release files / lupaxa_mx_inspector-0.2.1.tar.gz

Download URL lupaxa_mx_inspector-0.2.1.tar.gz
Size 14.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ce6288c3a0f23fcb3be659c8097d74703950fc82b041f87f4e4ea0012fac35ef
BLAKE2b-256 checksum
How to use checksums
76c9e74727cb9c40f2a39d2f1b036ea3813f3a0d3d65e67b5d5546f3c849f2cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Sep 23, 2026.

Transparency log

Release files / lupaxa_mx_inspector-0.2.1-py3-none-any.whl

Download URL lupaxa_mx_inspector-0.2.1-py3-none-any.whl
Size 18.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3132a8dcccfac9d6ea9dbe14e7cd4a09124812c3fde468a0d937f73c660463ad
BLAKE2b-256 checksum
How to use checksums
1ded52aeda430b1c8e03bbe34bd64498390aafd24bc5e97797fd25e9673b33c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.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 Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.2

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release 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