{"id":22165548,"url":"https://github.com/supermarsx/smtp-burst","last_synced_at":"2026-03-05T21:31:26.469Z","repository":{"id":123222505,"uuid":"190404934","full_name":"supermarsx/smtp-burst","owner":"supermarsx","description":"All-in-one SMTP testing tool","archived":false,"fork":false,"pushed_at":"2025-10-28T13:33:52.000Z","size":955,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-28T15:26:24.962Z","etag":null,"topics":["bruteforce","bulk","burst","cli","cli-app","flood","pentesting","protocol","python","smtp","stress","test","testing-tools","tests"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/supermarsx.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"agents.md","dco":null,"cla":null}},"created_at":"2019-06-05T13:56:59.000Z","updated_at":"2025-10-28T13:33:57.000Z","dependencies_parsed_at":"2025-06-29T10:26:42.148Z","dependency_job_id":"27a91698-1a0c-43f3-9115-68fb484cfa66","html_url":"https://github.com/supermarsx/smtp-burst","commit_stats":null,"previous_names":["supermarsx/smtp-burst"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/supermarsx/smtp-burst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fsmtp-burst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fsmtp-burst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fsmtp-burst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fsmtp-burst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supermarsx","download_url":"https://codeload.github.com/supermarsx/smtp-burst/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supermarsx%2Fsmtp-burst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30150403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T21:15:50.531Z","status":"ssl_error","status_checked_at":"2026-03-05T21:15:11.173Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bruteforce","bulk","burst","cli","cli-app","flood","pentesting","protocol","python","smtp","stress","test","testing-tools","tests"],"created_at":"2024-12-02T05:15:13.551Z","updated_at":"2026-03-05T21:31:26.449Z","avatar_url":"https://github.com/supermarsx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smtp-burst\nSimple python script that sends smtp email in bursts using independent processes for each mail sent out. Used to test smtp capacity, handling and possible attack scenarios. Depends on `smtplib` and `multiprocessing`.\n\n## Features\n\n- Burst sending of emails across multiple processes\n- Adjustable delays between emails and bursts\n- Global and per-mode delay controls\n- Tarpit detection based on response latency\n- Stop automatically after a number of failed sends\n- Optional JSON/YAML configuration file\n- Open-only socket mode for connection tests\n- Optional SSL or STARTTLS connections via CLI flags\n- Random payload data appended to each message\n- Customizable subject and message body via CLI options\n- Autonomous bombing mode for hands-off bursts\n- Helper scripts for packaging and running tests\n- Discovery utilities for MX lookup, SMTP extension scan, certificate checks,\n  port scanning and honeypot probing\n\n## Installation\n\nPython 3.11 or newer is required. Install the library directly from the\nrepository source:\n\n```bash\n$ pip install .\n```\n\nThis will install the `smtp-burst` console entry point.\n\n## Quick Start\n\n1. Edit `smtpburst/config.py` as needed for your tests or override values on the\n   command line.\n2. Start testing by executing the package with optional CLI flags.\n\n   ```bash\n   $ python -m smtpburst --server smtp.example.com \\\n       --sender from@example.com --receivers to@example.com other@example.com \\\n       --subject \"Test\" --body-file body.txt\n   ```\n\n   Use `--ssl` for SMTPS or `--starttls` to upgrade the connection.\n   Use `-h`/`--help` to see all available options.\n\nAn optional `--config` flag can load settings from a JSON or YAML file.\nSee `examples/config.yaml` for a reference.\n\n## Command Line Options\n\nAdditional CLI flags provide extended functionality:\n\n- `--open-sockets N` open N connections without sending email\n- `--proxy-file FILE` rotate through SOCKS proxies in FILE\n- `--proxy-order {asc,desc,random}` apply proxies in given order\n- `--check-proxies` validate proxies before use\n- `--userlist FILE` username wordlist for SMTP AUTH\n- `--passlist FILE` password wordlist for SMTP AUTH\n- `--template-file FILE` phishing template with `{sender}` tags\n- `--enum-list FILE` addresses for directory harvest\n- `--vrfy-enum` enumerate users with VRFY\n- `--expn-enum` enumerate lists with EXPN\n- `--rcpt-enum` enumerate via RCPT TO\n- `--login-test` attempt SMTP AUTH logins using wordlists\n- `--auth-test` test advertised SMTP AUTH mechanisms\n- `--username USER` username for `--auth-test`\n- `--password PASS` password for `--auth-test`\n- `--ssl` connect using SMTPS\n- `--starttls` upgrade the connection with STARTTLS\n- `--check-dmarc DOMAIN` query DMARC record for DOMAIN\n- `--check-spf DOMAIN` query SPF record for DOMAIN\n- `--check-dkim DOMAIN` query DKIM record for DOMAIN\n- `--check-srv NAME` query SRV record for NAME\n- `--check-soa DOMAIN` query SOA record for DOMAIN\n- `--check-txt DOMAIN` query TXT record for DOMAIN\n- `--lookup-mx DOMAIN` lookup MX records for DOMAIN\n- `--smtp-extensions HOST` list SMTP extensions for HOST\n- `--cert-check HOST` retrieve TLS certificate from HOST\n- `--port-scan HOST PORT [PORT ...]` scan ports on HOST\n- `--probe-honeypot HOST` probe HOST for SMTP honeypot\n- `--tls-discovery HOST` probe TLS versions and validate certificates on HOST\n- `--ssl-discovery HOST` discover supported legacy SSL versions on HOST\n- `--blacklist-check IP ZONE [ZONE ...]` check IP against DNSBL zones\n- `--open-relay-test` test if the target SMTP server is an open relay\n- `--ping-test HOST` run ping for HOST\n- `--traceroute-test HOST` run traceroute to HOST\n- `--perf-test HOST` measure connection, SMTP and ping performance for HOST\n- `--baseline-host HOST` compare `--perf-test` results with HOST\n- `--banner-check` read the SMTP banner and verify reverse DNS\n- `--rdns-test` verify reverse DNS for the configured server\n- `--outbound-test` send one test email and exit\n- `--silent` suppress all output\n- `--errors-only` show only error messages\n- `--warnings` show warnings and errors only\n- `--global-delay SECS` sleep SECS before each network action\n- `--socket-delay SECS` delay between open socket checks\n- `--socket-duration SECS` close open sockets after SECS\n- `--socket-iterations N` run the socket loop N times and exit\n- `--tarpit-threshold SECS` warn if responses exceed SECS\n- `--unicode-case-test` craft headers using Unicode and case variation\n- `--utf7-test` encode headers and body with UTF-7\n- `--header-tunnel-test` add overlapping headers to test tunneling\n- `--control-char-test` insert encoded control characters\n\nRun `smtp-burst --help` for the complete list of options.\n\n### Authentication Prerequisites\n\nThe `--login-test` and `--auth-test` options require credentials. Supply\nwordlists with `--userlist` and `--passlist` or provide a single account using\n`--username` and `--password` for `--auth-test`.\n\n## Report Format\n\nDiscovery and network tests emit a small ASCII report. Example:\n\n```\n+-----------------+\n| Test Report     |\n+-----------------+\ndmarc             : v=DMARC1; p=none\nping              : 64 bytes from 127.0.0.1\n+-----------------+\n```\n\nRunning TLS discovery prints the negotiated protocol and certificate status:\n\n```\n$ python -m smtpburst --tls-discovery smtp.example.com\n+-----------------+\n| Test Report     |\n+-----------------+\ntls               : {'TLSv1_2': {'supported': True, 'valid': False, 'protocol': 'TLSv1.2'}}\n+-----------------+\n```\n\nRunning legacy SSL discovery works similarly:\n\n```\n$ python -m smtpburst --ssl-discovery smtp.example.com\n+-----------------+\n| Test Report     |\n+-----------------+\nssl               : {'SSLv3': False}\n+-----------------+\n```\n\nResults are printed to standard output and can be redirected to a file if\nrequired.\n\n## Discovery Tests\n\nThe following flags perform DNS and network checks using the utilities in\n`smtpburst.discovery` and `smtpburst.nettests`:\n\n- `--check-dmarc`, `--check-spf`, `--check-dkim`\n- `--check-srv`, `--check-soa`, `--check-txt`, `--lookup-mx`\n- `--smtp-extensions`, `--cert-check`, `--port-scan`, `--probe-honeypot`,\n  `--tls-discovery`, `--ssl-discovery`\n- `--blacklist-check`\n- `--open-relay-test`, `--ping-test`, `--traceroute-test`, `--perf-test`,\n  `--baseline-host`, `--rdns-test`\n\nWhen these options are used, the report shown above is generated.\n\n## Examples\n\nVerbose logging is enabled by default. To show only warnings:\n\n```bash\n$ python -m smtpburst --warnings --server smtp.example.com\n```\n\nSilent mode suppresses all logs:\n\n```bash\n$ python -m smtpburst --silent --server smtp.example.com\n```\n\nSend a quick outbound test email and exit:\n\n```bash\n$ python -m smtpburst --outbound-test --server smtp.example.com\n```\n\nRun a DNS check and save the report:\n\n```bash\n$ python -m smtpburst --check-dmarc example.com --ping-test example.com \u003e report.txt\n```\n\n## Development\n\nInstall the additional tools for linting and running tests and install the\npackage in editable mode:\n\n```bash\n$ pip install -r requirements-dev.txt\n$ pip install -e .\n```\n\nThis installs `pytest` with coverage reporting, `ruff` for code style checks and\nthe optional dependencies (`dnspython` and `PyYAML`) so that the full test suite\ncan run.\n\n## Running Tests\n\nExecute the unit tests using the helper scripts:\n\n```bash\n$ ./scripts/run_tests.sh     # Unix-like systems\n```\n\n```batch\nC:\\\u003e scripts\\run_tests.bat   # Windows\n```\n\nThe script simply invokes `pytest --cov` and collects coverage information.\n\n## Packaging\n\nBuild standalone executables with [PyInstaller](https://www.pyinstaller.org/).\nUse the platform specific build scripts located in `scripts/` to create a\nstandalone binary. Each script verifies that `pyinstaller` is available and\nplaces the output in a platform specific `dist/` directory:\n\n```bash\n$ ./scripts/build_ubuntu.sh   # Linux\n$ ./scripts/build_macos.sh    # macOS\n```\n\n```batch\nC:\\\u003e scripts\\build_windows.bat  % Windows\n```\n\nThe resulting binaries will be placed in `dist/linux`, `dist/macos` or\n`dist/windows` depending on the platform.\n\n## License\n\nDistributed under MIT License. See `license.md` for more information.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupermarsx%2Fsmtp-burst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupermarsx%2Fsmtp-burst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupermarsx%2Fsmtp-burst/lists"}