Metadata-Version: 2.1
Name: blackhole
Version: 2.1.19
Summary: Blackhole is an MTA (message transfer agent) that (figuratively) pipes all mail to /dev/null.
Home-page: https://kura.gg/blackhole/
License: MIT
Keywords: blackhole,asyncio,smtp,mta,email
Author: Kura
Author-email: kura@kura.gg
Requires-Python: >3.7,<4
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Communications :: Email
Classifier: Topic :: Communications :: Email :: Mail Transport Agents
Classifier: Topic :: Education :: Testing
Classifier: Topic :: Internet
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Testing :: Traffic Generation
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Provides-Extra: dev
Provides-Extra: docs
Provides-Extra: setproctitle
Provides-Extra: tests
Provides-Extra: uvloop
Requires-Dist: bandit (>=1.6.2,<2.0.0); extra == "tests" or extra == "dev"
Requires-Dist: black (>=20.8b1,<21.0); extra == "tests" or extra == "dev"
Requires-Dist: codespell (>=2.1.0,<3.0.0); extra == "tests" or extra == "dev"
Requires-Dist: coverage (>=5.1,<6.0); extra == "tests" or extra == "dev"
Requires-Dist: doc8 (>=0.8.1,<0.9.0); extra == "tests" or extra == "dev"
Requires-Dist: flake8 (>=3.8.3,<4.0.0); extra == "tests" or extra == "dev"
Requires-Dist: flake8-bugbear (>=20.1.4,<21.0.0); extra == "tests" or extra == "dev"
Requires-Dist: flake8-commas (>=2.0.0,<3.0.0); extra == "tests" or extra == "dev"
Requires-Dist: flake8-isort (>=4.0.0,<5.0.0); extra == "tests" or extra == "dev"
Requires-Dist: guzzle_sphinx_theme (>=0.7.11,<0.8.0); extra == "docs" or extra == "dev"
Requires-Dist: interrogate (>=1.3.0,<2.0.0); extra == "tests" or extra == "dev"
Requires-Dist: isort (>=4.2.5,<5)
Requires-Dist: pre-commit (>=2.4.0,<3.0.0); extra == "dev"
Requires-Dist: pydocstyle (>=5.1.0,<6.0.0); extra == "tests" or extra == "dev"
Requires-Dist: pyroma (>=2.6,<3.0); extra == "tests" or extra == "dev"
Requires-Dist: pytest (>=5.4.2,<6.0.0); extra == "tests" or extra == "dev"
Requires-Dist: pytest-asyncio (>=0.12.0,<0.13.0); extra == "tests" or extra == "dev"
Requires-Dist: pytest-clarity (>=0.3.0-alpha.0,<0.4.0); extra == "tests" or extra == "dev"
Requires-Dist: pytest-cov (>=2.8.1,<3.0.0); extra == "tests" or extra == "dev"
Requires-Dist: setproctitle (>=1.1.10,<2.0.0); extra == "setproctitle" or extra == "dev"
Requires-Dist: sphinx (>=3.0.3,<4.0.0); extra == "docs" or extra == "dev"
Requires-Dist: tox (>=3.15.0,<4.0.0); extra == "dev"
Requires-Dist: uvloop (>=0.14.0,<0.15.0); extra == "uvloop" or extra == "dev"
Requires-Dist: vulture (>=2.3,<3.0); extra == "tests" or extra == "dev"
Project-URL: Documentation, https://kura.gg/blackhole/
Project-URL: Repository, https://github.com/kura/blackhole
Description-Content-Type: text/x-rst

=========
Blackhole
=========

.. image:: https://img.shields.io/github/workflow/status/kura/blackhole/CI?style=for-the-badge&label=tests&logo=githubactions
    :target: https://github.com/kura/blackhole/actions/workflows/ci.yml
    :alt: Build status of the master branch

.. image:: https://img.shields.io/codecov/c/github/kura/blackhole/master.svg?style=for-the-badge&label=coverage&logo=codecov
    :target: https://codecov.io/github/kura/blackhole/
    :alt: Test coverage

Blackhole is an `MTA (message transfer agent)
<https://en.wikipedia.org/wiki/Message_transfer_agent>`_ that (figuratively)
pipes all mail to /dev/null, built on top of `asyncio
<https://docs.python.org/3/library/asyncio.html>`_ and utilises `async def <https://docs.python.org/3/reference/compound_stmts.html#async-def>`_
and `await
<https://docs.python.org/3/reference/expressions.html#await>`_ statements
available in `Python 3.5 <https://docs.python.org/3/whatsnew/3.5.html>`_.

While Blackhole is an MTA, none of the actions performed via SMTP or SMTPS are
actually processed, and no email is delivered. You can tell Blackhole how to
handle mail that it receives. It can accept all of it, bounce it all, or
randomly do either of those two actions.

Think of Blackhole sort of like a honeypot in terms of how it handles mail, but
it's specifically designed with testing in mind.

Python support
==============

- Python 3.7+
- PyPy 3.7+
- Pyston 2.2+

Documentation
=============

You can find the latest documentation `here
<https://kura.gg/blackhole/>`_.

If you would like to contribute, please read the `contributors guide
<https://kura.gg/blackhole/overview.html#contributing>`_.

The latest build status on GitHub `<https://github.com/kura/blackhole/actions/workflows/ci.yml>`_.

And the test coverage report on `codecov
<https://codecov.io/github/kura/blackhole/>`_.

Changelog
=========

You can find a list of changes `on the
blackhole website <https://kura.gg/blackhole/changelog.html>`_.

