{ "info": { "author": "Dusan Obradovic", "author_email": "dusan@euracks.net", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Communications :: Email :: Filters", "Topic :: Communications :: Email :: Mail Transport Agents", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# DMARC (Domain-based Message Authentication, Reporting & Conformance)\n\nThis module allows an application to parse and evaluate email authentication policy, to application supplied TXT RR, SPF and DKIM results.\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\n>>> adkim = dmarc.DKIM(domain='example.com', result=dmarc.DKIM_PASS)\n\n>>> d = dmarc.DMARC()\n\n# parse policy TXT RR\n>>> p = d.parse_record(record='v=DMARC1; p=reject;', domain='example.com')\n\n# evaluate policy\n>>> r = d.get_result(p, spf=aspf, dkim=adkim)\n\n# check result\n>>> r.result == dmarc.POLICY_PASS\nTrue\n\n# check disposition\n>>> r.disposition == dmarc.POLICY_DIS_NONE\nTrue\n\n>>> r.as_dict()\n{'record': {'identifiers': {'header_from': 'example.com'}, 'auth_results': {'dkim': {'domain': 'example.com', 'result': 'pass'}, 'spf': {'domain': 'news.example.com', 'result': 'pass'}}, 'row': {'count': 1, 'policy_evaluated': {'spf': 'pass', 'dkim': 'pass', 'disposition': 'none'}}}, 'policy_published': {'adkim': 'r', 'domain': 'example.com', 'aspf': 'r', 'pct': 100, 'p': 'reject'}}\n```\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/duobradovic/pydmarc", "keywords": "dkim,spf,dmarc,email,authentication,rfc5451,rfc7001,rfc7601,rfc8601", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dmarc", "package_url": "https://pypi.org/project/dmarc/", "platform": "", "project_url": "https://pypi.org/project/dmarc/", "project_urls": { "Homepage": "https://gitlab.com/duobradovic/pydmarc" }, "release_url": "https://pypi.org/project/dmarc/1.0.2/", "requires_dist": null, "requires_python": ">=2.7", "summary": "Parse and evaluate DMARC email authentication policy", "version": "1.0.2", "yanked": false, "yanked_reason": null }, "last_serial": 7299317, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "0164e434435f3c8588b6be1e5426131a", "sha256": "4c848a018b49000b6d7384b001c46c0ed95ab85858f25071df3bd2b417050297" }, "downloads": -1, "filename": "dmarc-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0164e434435f3c8588b6be1e5426131a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7", "size": 5372, "upload_time": "2019-10-15T09:51:46", "upload_time_iso_8601": "2019-10-15T09:51:46.412132Z", "url": "https://files.pythonhosted.org/packages/a1/69/67ce4f00f01fa05e6b34a06d81366fb4c95553ac8da6e3df7cded9068bed/dmarc-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "247a26273d5cd93989f678dfe023c7c6", "sha256": "bb61ae15ac24420ed27bc9e62de3fea0df9d0926b5794062dfc683f924575b0b" }, "downloads": -1, "filename": "dmarc-1.0.0.tar.gz", "has_sig": false, "md5_digest": "247a26273d5cd93989f678dfe023c7c6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4109, "upload_time": "2019-10-15T09:51:49", "upload_time_iso_8601": "2019-10-15T09:51:49.186780Z", "url": "https://files.pythonhosted.org/packages/24/07/aa0cc65bce8a21adbf1680d71cac7ecb29d932025aff494f002a80003d52/dmarc-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6c2393e9e544dbea4816234d96c0d3db", "sha256": "f5d9d0502d32f84430417aeb21b90b93fcff309391142091487ebda353b4ba34" }, "downloads": -1, "filename": "dmarc-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6c2393e9e544dbea4816234d96c0d3db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7", "size": 5408, "upload_time": "2019-10-21T09:38:40", "upload_time_iso_8601": "2019-10-21T09:38:40.835646Z", "url": "https://files.pythonhosted.org/packages/0a/a0/9c404307f06711e73c8126df5a0d8c260e399dcf7ba6947ed023449796b5/dmarc-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "85f26ca5cefa46f8af9dc9757299c58a", "sha256": "809860bc43f84bd0112a30280ddd2f9c691eae3580bd384fc0f87be040c72417" }, "downloads": -1, "filename": "dmarc-1.0.1.tar.gz", "has_sig": false, "md5_digest": "85f26ca5cefa46f8af9dc9757299c58a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4146, "upload_time": "2019-10-21T09:38:42", "upload_time_iso_8601": "2019-10-21T09:38:42.456882Z", "url": "https://files.pythonhosted.org/packages/df/15/84bd83a15b2161526730bd88c2bebdee812e14a00e26f5ff5a7a92aac68f/dmarc-1.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "b94f57d069e9eaa5dacabe5956b9bfd1", "sha256": "7b017fe2598d0877c9cea27aa034abb34e0bb188c1ec86432f7f3b3a69430f0d" }, "downloads": -1, "filename": "dmarc-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b94f57d069e9eaa5dacabe5956b9bfd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7", "size": 6413, "upload_time": "2020-05-22T04:37:19", "upload_time_iso_8601": "2020-05-22T04:37:19.192505Z", "url": "https://files.pythonhosted.org/packages/32/61/2fd9d0a036b61f9e8822f747b194b7a316b7718909f87aaa801ec4357888/dmarc-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "573f40a51af2b921719281884665802b", "sha256": "48a9a14a8e41a0695a83ee1893af3a43f94c722c59f07a5926535e6ca6f326d9" }, "downloads": -1, "filename": "dmarc-1.0.2.tar.gz", "has_sig": false, "md5_digest": "573f40a51af2b921719281884665802b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5077, "upload_time": "2020-05-22T04:37:20", "upload_time_iso_8601": "2020-05-22T04:37:20.346702Z", "url": "https://files.pythonhosted.org/packages/bb/7c/cf224b6fc65ab7d99da89ecabd783573599a18bca7a1204a6d01375c5efb/dmarc-1.0.2.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b94f57d069e9eaa5dacabe5956b9bfd1", "sha256": "7b017fe2598d0877c9cea27aa034abb34e0bb188c1ec86432f7f3b3a69430f0d" }, "downloads": -1, "filename": "dmarc-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b94f57d069e9eaa5dacabe5956b9bfd1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7", "size": 6413, "upload_time": "2020-05-22T04:37:19", "upload_time_iso_8601": "2020-05-22T04:37:19.192505Z", "url": "https://files.pythonhosted.org/packages/32/61/2fd9d0a036b61f9e8822f747b194b7a316b7718909f87aaa801ec4357888/dmarc-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "573f40a51af2b921719281884665802b", "sha256": "48a9a14a8e41a0695a83ee1893af3a43f94c722c59f07a5926535e6ca6f326d9" }, "downloads": -1, "filename": "dmarc-1.0.2.tar.gz", "has_sig": false, "md5_digest": "573f40a51af2b921719281884665802b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5077, "upload_time": "2020-05-22T04:37:20", "upload_time_iso_8601": "2020-05-22T04:37:20.346702Z", "url": "https://files.pythonhosted.org/packages/bb/7c/cf224b6fc65ab7d99da89ecabd783573599a18bca7a1204a6d01375c5efb/dmarc-1.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }