# checkdmarc
[](https://github.com/domainaware/checkdmarc/actions/workflows/python-tests.yaml)
[](https://pypi.org/project/checkdmarc/)
[](https://pypistats.org/packages/checkdmarc)
A Python module, command line utility, and [web application](https://github.com/domainaware/checkdmarc-web-frontend) for validating SPF and DMARC DNS records.
## Features
- API, CLI, and web interfaces
- Can test multiple domains at once
- CLI output in JSON or CSV format
- DNSSEC validation
- SPF
- Record validation
- Counting of DNS lookups and void lookups
- Counting of lookups per mechanism
- DMARC
- Validation and parsing of DMARC records
- Shows warnings when the DMARC record is made ineffective by `pct` or `sp` values
- Checks for authorization records on reporting email addresses
- BIMI
- Validation of the mark format and certificate
- Parsing of the mark certificate
- MX records
- Preference
- IPv4 and IPv6 addresses
- Checks for STARTTLS
- Use of DNSSEC/TLSA/DANE to pin certificates
- MTA-STS
- SMTP TLS reporting
- Record and policy parsing and validation
- SOA record parsing
- Nameserver listing
## Docker support
1. Build the image using docker `build . -t checkdmarc`
2. Use the image with a command like `docker run --rm checkdmarc google.nl`
Raw data
{
"_id": null,
"home_page": null,
"name": "checkdmarc",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "BIMI, DMARC, DNS, MTA-STS, SPF",
"author": null,
"author_email": "Sean Whalen <whalenster@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/79/71/223433ae1ed258e57f58077bcd937dcf7bfee8e6208d349ac7cc33735a3c/checkdmarc-5.12.25.tar.gz",
"platform": null,
"description": "# checkdmarc\n\n[](https://github.com/domainaware/checkdmarc/actions/workflows/python-tests.yaml)\n[](https://pypi.org/project/checkdmarc/)\n[](https://pypistats.org/packages/checkdmarc)\n\nA Python module, command line utility, and [web application](https://github.com/domainaware/checkdmarc-web-frontend) for validating SPF and DMARC DNS records.\n\n## Features\n\n- API, CLI, and web interfaces\n- Can test multiple domains at once\n- CLI output in JSON or CSV format\n- DNSSEC validation\n- SPF\n - Record validation\n - Counting of DNS lookups and void lookups\n - Counting of lookups per mechanism\n- DMARC\n - Validation and parsing of DMARC records\n - Shows warnings when the DMARC record is made ineffective by `pct` or `sp` values\n - Checks for authorization records on reporting email addresses\n- BIMI\n - Validation of the mark format and certificate\n - Parsing of the mark certificate\n- MX records\n - Preference\n - IPv4 and IPv6 addresses\n - Checks for STARTTLS\n - Use of DNSSEC/TLSA/DANE to pin certificates\n- MTA-STS\n- SMTP TLS reporting\n - Record and policy parsing and validation\n- SOA record parsing\n- Nameserver listing\n\n## Docker support\n1. Build the image using docker `build . -t checkdmarc`\n2. Use the image with a command like `docker run --rm checkdmarc google.nl`\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python module and command line parser for SPF and DMARC records",
"version": "5.12.25",
"project_urls": {
"Changelog": "https://github.com/domainaware/checkdmarc/blob/master/CHANGELOG.md",
"Documentation": "https://domainaware.github.io/checkdmarc/",
"Homepage": "https://github.com/domainaware/checkdmarc",
"Issues": "https://github.com/domainaware/checkdmarc/issues"
},
"split_keywords": [
"bimi",
" dmarc",
" dns",
" mta-sts",
" spf"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "24daa5277c03ac43ba36160514a445104acd515ada36859b1ef3c376ff890355",
"md5": "549a4023b3a0a2e7137ac05d4ec3601f",
"sha256": "9a8cec129f395066d4c2562097541da8d1f3c5f098b7b19cbc043a640eb1c2fc"
},
"downloads": -1,
"filename": "checkdmarc-5.12.25-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "549a4023b3a0a2e7137ac05d4ec3601f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 65649,
"upload_time": "2025-10-30T12:37:37",
"upload_time_iso_8601": "2025-10-30T12:37:37.052968Z",
"url": "https://files.pythonhosted.org/packages/24/da/a5277c03ac43ba36160514a445104acd515ada36859b1ef3c376ff890355/checkdmarc-5.12.25-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7971223433ae1ed258e57f58077bcd937dcf7bfee8e6208d349ac7cc33735a3c",
"md5": "1933b85e124c9d09417c523363b75c5f",
"sha256": "bad9bdcf838383598f915dcd6e20162f7c412e912163191074018defd3f11e8d"
},
"downloads": -1,
"filename": "checkdmarc-5.12.25.tar.gz",
"has_sig": false,
"md5_digest": "1933b85e124c9d09417c523363b75c5f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 54441,
"upload_time": "2025-10-30T12:37:38",
"upload_time_iso_8601": "2025-10-30T12:37:38.453305Z",
"url": "https://files.pythonhosted.org/packages/79/71/223433ae1ed258e57f58077bcd937dcf7bfee8e6208d349ac7cc33735a3c/checkdmarc-5.12.25.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-30 12:37:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "domainaware",
"github_project": "checkdmarc",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "dnspython",
"specs": [
[
">=",
"2.0.0"
]
]
},
{
"name": "cryptography",
"specs": [
[
">=",
"45.0"
],
[
"<",
"47.0"
]
]
},
{
"name": "pem",
"specs": [
[
">=",
"23.1.0"
]
]
},
{
"name": "expiringdict",
"specs": [
[
">=",
"1.1.4"
]
]
},
{
"name": "pyleri",
"specs": [
[
">=",
"1.3.2"
]
]
},
{
"name": "publicsuffixlist",
"specs": [
[
">=",
"0.10.0"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.25.0"
]
]
},
{
"name": "xmltodict",
"specs": [
[
">=",
"0.14.2"
]
]
},
{
"name": "importlib-resources",
"specs": [
[
">=",
"6.0"
]
]
},
{
"name": "timeout-decorator",
"specs": [
[
">=",
"0.5.0"
]
]
},
{
"name": "flake8",
"specs": [
[
">=",
"3.8.4"
]
]
},
{
"name": "sphinx",
"specs": [
[
">=",
"3.3.1"
]
]
},
{
"name": "myst-parser",
"specs": [
[
">=",
"0.18.0"
]
]
},
{
"name": "myst-parser",
"specs": []
},
{
"name": "sphinx_rtd_theme",
"specs": [
[
">=",
"0.5.0"
]
]
},
{
"name": "wheel",
"specs": [
[
">=",
"0.35.1"
]
]
},
{
"name": "codecov",
"specs": [
[
">=",
"2.1.10"
]
]
},
{
"name": "autopep8",
"specs": []
},
{
"name": "hatch",
"specs": []
},
{
"name": "pytest",
"specs": []
},
{
"name": "ruff",
"specs": []
},
{
"name": "black",
"specs": []
}
],
"lcname": "checkdmarc"
}