dmarc


Namedmarc JSON
Version 1.0.5 PyPI version JSON
download
home_pagehttps://gitlab.com/duobradovic/pydmarc
SummaryParse and evaluate DMARC email authentication policy
upload_time2024-04-07 16:42:16
maintainerNone
docs_urlNone
authorDusan Obradovic
requires_python>=2.7
licenseMIT
keywords dkim spf dmarc email authentication rfc5451 rfc7001 rfc7601 rfc8601
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DMARC (Domain-based Message Authentication, Reporting & Conformance)

DMARC email authentication module implemented in Python.

## Installation

Use the package manager [pip](https://pip.pypa.io/en/stable/) to install dmarc.

```bash
pip install dmarc
```

## Usage

```python
>>> import dmarc
>>>
>>> # Represent verified SPF and DKIM status
>>> aspf = dmarc.SPF(domain='news.example.com', result=dmarc.SPF_PASS)
>>> #aspf = dmarc.SPF.from_authres(SPFAuthenticationResult(result='pass', smtp_mailfrom='email@news.example.com'))
>>> 
>>> adkim = dmarc.DKIM(domain='example.com', result=dmarc.DKIM_PASS)
>>> #adkim = dmarc.DKIM.from_authres(DKIMAuthenticationResult(result='pass', header_d='example.com'))
>>>
>>> try:
...     admarc = dmarc.DMARCPolicy(record='v=DMARC1; p=reject;', domain='example.com')
...     admarc.verify(spf=aspf, dkim=adkim)
...     #admarc.verify(auth_results=[aspf, adkim, dmarc.DKIM('news.example.com', dmarc.DKIM_FAIL)])
...     adict = admarc.result.as_dict() # dict repr
... except dmarc.PolicyNoneError:
...     pass
... except dmarc.PolicyQuarantineError:
...     raise
... except dmarc.PolicyRejectError:
...     raise
... except dmarc.RecordSyntaxError:
...     raise
...
>>> # dmarc rr resolver example
>>> from dmarc.resolver import resolve, RecordNotFoundError, RecordMultiFoundError, RecordResolverError
>>> from dmarc.psl import get_public_suffix
>>> domain = 'example.com'
>>> try:
...     record = resolve(domain)
... except RecordNotFoundError:
...     org_domain = get_public_suffix(domain)
...     if org_domain != domain:
...             record = resolve(org_domain)
... except RecordMultiFoundError:
...     raise # permerror
... except RecordResolverError:
...     raise # temperror
... 
>>> # dmarc authres header example
>>> from dmarc.ar import authres, AuthenticationResultsHeader
>>> dares = authres(admarc.result) #DMARCAuthenticationResult factory
>>> header = AuthenticationResultsHeader(authserv_id='myhostname', results=[dares])
>>> str(header)
'Authentication-Results: myhostname; dmarc=pass (domain=example.com adkim=r aspf=r p=reject pct=100) header.from=example.com policy.dmarc=none (disposition=none dkim=pass spf=pass)'
```

## License
[MIT](https://choosealicense.com/licenses/mit/)

            

Raw data

            {
    "_id": null,
    "home_page": "https://gitlab.com/duobradovic/pydmarc",
    "name": "dmarc",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=2.7",
    "maintainer_email": null,
    "keywords": "dkim, spf, dmarc, email, authentication, rfc5451, rfc7001, rfc7601, rfc8601",
    "author": "Dusan Obradovic",
    "author_email": "dusan@euracks.net",
    "download_url": "https://files.pythonhosted.org/packages/26/23/5e4bff5e0e472cba41629eb935e8df4782b74e246230bea2022ee386b622/dmarc-1.0.5.tar.gz",
    "platform": null,
    "description": "# DMARC (Domain-based Message Authentication, Reporting & Conformance)\n\nDMARC email authentication module implemented in Python.\n\n## Installation\n\nUse the package manager [pip](https://pip.pypa.io/en/stable/) to install dmarc.\n\n```bash\npip install dmarc\n```\n\n## Usage\n\n```python\n>>> import dmarc\n>>>\n>>> # Represent verified SPF and DKIM status\n>>> aspf = dmarc.SPF(domain='news.example.com', result=dmarc.SPF_PASS)\n>>> #aspf = dmarc.SPF.from_authres(SPFAuthenticationResult(result='pass', smtp_mailfrom='email@news.example.com'))\n>>> \n>>> adkim = dmarc.DKIM(domain='example.com', result=dmarc.DKIM_PASS)\n>>> #adkim = dmarc.DKIM.from_authres(DKIMAuthenticationResult(result='pass', header_d='example.com'))\n>>>\n>>> try:\n...     admarc = dmarc.DMARCPolicy(record='v=DMARC1; p=reject;', domain='example.com')\n...     admarc.verify(spf=aspf, dkim=adkim)\n...     #admarc.verify(auth_results=[aspf, adkim, dmarc.DKIM('news.example.com', dmarc.DKIM_FAIL)])\n...     adict = admarc.result.as_dict() # dict repr\n... except dmarc.PolicyNoneError:\n...     pass\n... except dmarc.PolicyQuarantineError:\n...     raise\n... except dmarc.PolicyRejectError:\n...     raise\n... except dmarc.RecordSyntaxError:\n...     raise\n...\n>>> # dmarc rr resolver example\n>>> from dmarc.resolver import resolve, RecordNotFoundError, RecordMultiFoundError, RecordResolverError\n>>> from dmarc.psl import get_public_suffix\n>>> domain = 'example.com'\n>>> try:\n...     record = resolve(domain)\n... except RecordNotFoundError:\n...     org_domain = get_public_suffix(domain)\n...     if org_domain != domain:\n...             record = resolve(org_domain)\n... except RecordMultiFoundError:\n...     raise # permerror\n... except RecordResolverError:\n...     raise # temperror\n... \n>>> # dmarc authres header example\n>>> from dmarc.ar import authres, AuthenticationResultsHeader\n>>> dares = authres(admarc.result) #DMARCAuthenticationResult factory\n>>> header = AuthenticationResultsHeader(authserv_id='myhostname', results=[dares])\n>>> str(header)\n'Authentication-Results: myhostname; dmarc=pass (domain=example.com adkim=r aspf=r p=reject pct=100) header.from=example.com policy.dmarc=none (disposition=none dkim=pass spf=pass)'\n```\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Parse and evaluate DMARC email authentication policy",
    "version": "1.0.5",
    "project_urls": {
        "Homepage": "https://gitlab.com/duobradovic/pydmarc"
    },
    "split_keywords": [
        "dkim",
        " spf",
        " dmarc",
        " email",
        " authentication",
        " rfc5451",
        " rfc7001",
        " rfc7601",
        " rfc8601"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7c3dcbfa9fa69bf8132b7c789b38165d63f802182d802afb1c2bf21497fe0baa",
                "md5": "452a06261e526409bc9cf059db05db71",
                "sha256": "fa4b8cce8d470efa278bb07ecd30d4ea7b32693c4f0631ea4cc310ae54d51513"
            },
            "downloads": -1,
            "filename": "dmarc-1.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "452a06261e526409bc9cf059db05db71",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=2.7",
            "size": 12868,
            "upload_time": "2024-04-07T16:42:12",
            "upload_time_iso_8601": "2024-04-07T16:42:12.980197Z",
            "url": "https://files.pythonhosted.org/packages/7c/3d/cbfa9fa69bf8132b7c789b38165d63f802182d802afb1c2bf21497fe0baa/dmarc-1.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "26235e4bff5e0e472cba41629eb935e8df4782b74e246230bea2022ee386b622",
                "md5": "838d9b2f832919a5fa5af6e2ecdb7b6f",
                "sha256": "a7b23842c90c5c894331e196a3efb1f1813de4657c50dd36d488460ceeee1101"
            },
            "downloads": -1,
            "filename": "dmarc-1.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "838d9b2f832919a5fa5af6e2ecdb7b6f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=2.7",
            "size": 10783,
            "upload_time": "2024-04-07T16:42:16",
            "upload_time_iso_8601": "2024-04-07T16:42:16.466896Z",
            "url": "https://files.pythonhosted.org/packages/26/23/5e4bff5e0e472cba41629eb935e8df4782b74e246230bea2022ee386b622/dmarc-1.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-07 16:42:16",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "duobradovic",
    "gitlab_project": "pydmarc",
    "lcname": "dmarc"
}
        
Elapsed time: 0.21991s