DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC email authentication module implemented in Python.
Installation
Use the package manager pip to install dmarc.
$ pip install dmarc
Usage
>>> from dmarc import SPFAuthResult, DKIMAuthResult, SPFResult, DKIMResult, DMARCPolicy
>>> # Represent verified SPF and DKIM identifiers
>>> spf = SPFAuthResult('news.example.com', SPFResult('pass'))
>>> dkim = DKIMAuthResult('example.com', DKIMResult('pass'))
>>> policy = DMARCPolicy(record='v=DMARC1; p=reject;', domain='example.com')
>>> policy.verify(auth_results=[spf, dkim])
>>>
>>> # RR resolver example
>>> from dmarc.resolver import resolve, RecordNotFoundError, RecordMultiFoundError
>>> from dmarc.psl import get_public_suffix
>>> domain = 'news.example.com'
>>> try:
... record = resolve(domain)
... except (RecordNotFoundError, RecordMultiFoundError):
... org_domain = get_public_suffix(domain)
... if org_domain != domain:
... record = resolve(org_domain)
...
>>> # Aggregate report XML document to dict example
>>> from dmarc.report import DMARCRelaxedSchema, DMARC2Schema
>>> from dmarc.tests.report.test_report import TEST_XML_DOCUMENT, TEST_XML_DOCUMENT_2
>>> relaxed = DMARCRelaxedSchema.to_dict(TEST_XML_DOCUMENT)
>>> rfc9990 = DMARC2Schema.to_dict(TEST_XML_DOCUMENT_2)
>>>
Milter configuration with Postfix
- Start
dmarc.miltermodule or run via Systemd — seecontrib/. - Start a Postfix instance with a configuration like
smtpd_milters = inet:127.0.0.1:9000
Described here 👉 Run DMARC Milter with Postfix.
License
Metadata
Release files for dmarc 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dmarc-1.2.1.tar.gz | 29.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dmarc-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.9 kB
Release files / dmarc-1.2.1.tar.gz
| Download URL | dmarc-1.2.1.tar.gz |
|---|---|
| Size | 29.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f620ab69102a4be060f5e6fcf7ad93e6c1bf17807ab36f9a44df188c2191a43d
|
|
BLAKE2b-256 checksum How to use checksums |
10a2d511e02a693c33d8cc66c197485ffc6d3094524f1b2e75d3682f8b90902c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / dmarc-1.2.1-py3-none-any.whl
| Download URL | dmarc-1.2.1-py3-none-any.whl |
|---|---|
| Size | 34.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad5132e19a118aa2c7edaeff151f4d2eef2da853a68df4a3cab23402b1c8e351
|
|
BLAKE2b-256 checksum How to use checksums |
6c4f488922dd2710a392e78f7abc662c222cff74b10bcfbca861e25f801418f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|