{"id":13705255,"url":"https://github.com/kura/blackhole","last_synced_at":"2025-07-11T16:37:35.751Z","repository":{"id":4051261,"uuid":"5153871","full_name":"kura/blackhole","owner":"kura","description":"Blackhole is an MTA written on top of asyncio, utilising async and await statements that dumps all mail it receives to /dev/null.","archived":false,"fork":false,"pushed_at":"2022-10-28T16:45:31.000Z","size":5471,"stargazers_count":61,"open_issues_count":0,"forks_count":10,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-07T22:24:57.437Z","etag":null,"topics":["async","asynchronous","asyncio","email","mta","mta-server","python","smtp","smtp-server","smtpd","testing","testing-tools"],"latest_commit_sha":null,"homepage":"https://kura.gg/blackhole/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"rodrigozuniga/tobegiven","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kura.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.rst","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-23T15:47:55.000Z","updated_at":"2025-01-23T03:22:39.000Z","dependencies_parsed_at":"2022-09-15T23:20:18.428Z","dependency_job_id":null,"html_url":"https://github.com/kura/blackhole","commit_stats":null,"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/kura/blackhole","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kura%2Fblackhole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kura%2Fblackhole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kura%2Fblackhole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kura%2Fblackhole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kura","download_url":"https://codeload.github.com/kura/blackhole/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kura%2Fblackhole/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264852542,"owners_count":23673443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","asynchronous","asyncio","email","mta","mta-server","python","smtp","smtp-server","smtpd","testing","testing-tools"],"created_at":"2024-08-02T22:00:36.012Z","updated_at":"2025-07-11T16:37:35.734Z","avatar_url":"https://github.com/kura.png","language":"Python","funding_links":[],"categories":["Sending"],"sub_categories":["Email Testing Application"],"readme":"=========\nBlackhole\n=========\n\n.. image:: https://img.shields.io/github/workflow/status/kura/blackhole/CI?style=for-the-badge\u0026label=tests\u0026logo=githubactions\n    :target: https://github.com/kura/blackhole/actions/workflows/ci.yml\n    :alt: Build status of the master branch\n\n.. image:: https://img.shields.io/codecov/c/github/kura/blackhole/master.svg?style=for-the-badge\u0026label=coverage\u0026logo=codecov\n    :target: https://codecov.io/github/kura/blackhole/\n    :alt: Test coverage\n\nBlackhole is an `MTA (message transfer agent)\n\u003chttps://en.wikipedia.org/wiki/Message_transfer_agent\u003e`_ that (figuratively)\npipes all mail to /dev/null, built on top of `asyncio\n\u003chttps://docs.python.org/3/library/asyncio.html\u003e`_ and utilises `async def \u003chttps://docs.python.org/3/reference/compound_stmts.html#async-def\u003e`_\nand `await\n\u003chttps://docs.python.org/3/reference/expressions.html#await\u003e`_ statements\navailable in `Python 3.5 \u003chttps://docs.python.org/3/whatsnew/3.5.html\u003e`_.\n\nWhile Blackhole is an MTA, none of the actions performed via SMTP or SMTPS are\nactually processed, and no email is delivered. You can tell Blackhole how to\nhandle mail that it receives. It can accept all of it, bounce it all, or\nrandomly do either of those two actions.\n\nThink of Blackhole sort of like a honeypot in terms of how it handles mail, but\nit's specifically designed with testing in mind.\n\nPython support\n==============\n\n- Python 3.7+\n- PyPy 3.7+\n- Pyston 2.2+\n\nDocumentation\n=============\n\nYou can find the latest documentation `here\n\u003chttps://kura.gg/blackhole/\u003e`_.\n\nIf you would like to contribute, please read the `contributors guide\n\u003chttps://kura.gg/blackhole/overview.html#contributing\u003e`_.\n\nThe latest build status on GitHub `\u003chttps://github.com/kura/blackhole/actions/workflows/ci.yml\u003e`_.\n\nAnd the test coverage report on `codecov\n\u003chttps://codecov.io/github/kura/blackhole/\u003e`_.\n\nChangelog\n=========\n\nYou can find a list of changes `on the\nblackhole website \u003chttps://kura.gg/blackhole/changelog.html\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkura%2Fblackhole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkura%2Fblackhole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkura%2Fblackhole/lists"}