- Home
- Email Warmup Software
- darkzwarmer
darkzwarmer
What it is
darkzwarmer is a free, open-source tool for warming email inboxes across domains you own. It creates inboxes, sends messages between inboxes on different domains, and replies to its own network’s messages after a random delay of 30 minutes to four hours. Mail from outside that network is ignored. Per-inbox sending volume rises from 5 to 35 messages a day over 28 days, then stays at the configured steady-state level. Sends are randomized within a default 07:00–19:00 local window, with 2–8 minutes between consecutive sends; weekends are paused. Outbound delivery uses configurable SMTP, with Amazon SES, SMTP.com, Postmark, Mailgun, Brevo, and SendGrid listed as examples. Incoming mail can use IMAP or Resend. The Python 3.11-or-later runtime stores state in SQLite and is designed to resume after crashes or reboots. It requires an always-on machine, at least two domains, an outbound SMTP provider, and a way to receive mail. Windows unattended-operation scripts are provided; Linux and macOS users can use a process manager or terminal session.
For and against
For
- Free and MIT-licensed.
- Volume ramps from 5 to 35 daily messages.
- Supports IMAP or Resend for inbound mail.
- SQLite state supports recovery after crashes or reboots.
Against
- Requires Python 3.11 or later and an always-on machine.
- Needs at least two user-owned domains.
- Requires outbound SMTP and a way to receive mail.
- Provider rate or quota limits can cause send failures.
The verdict
darkzwarmer automates a cross-domain warmup network with configurable timing and send limits. Its setup depends on multiple owned domains, mail services, and a machine that stays online.
Who it suits
It suits users managing domains and mailboxes they own who can provide SMTP and inbound mail access. It is available for Linux, macOS, Windows, and self-hosting.
On the record
- Controls
- Configuration includes inbox counts, sending windows, send delays, reply delays, steady-state volume, and an optional per-inbox daily send ceiling.github.com · read 7 Oct 2026
- Cross-domain sending
- Inboxes send to inboxes on other configured domains; same-domain pairs are not used.github.com · read 7 Oct 2026
- Cross-domain traffic
- Each inbox sends only to inboxes on other domains, and the tool does not use same-domain pairs.github.com · read 7 Oct 2026
- Expansion
- Optional wave cohorts can add inboxes automatically on a configured schedule, with new inboxes starting at Day 1.github.com · read 7 Oct 2026
- Inbound integrations
- Inbound mail can be received through IMAP or Resend; the Resend setup uses a Vercel webhook and an Upstash Redis queue.github.com · read 7 Oct 2026
- License and warranty
- The project is MIT-licensed and provided as-is without warranty.github.com · read 7 Oct 2026
- Operating systems
- The README describes unattended operation on Windows and running under process managers on Linux and macOS.github.com · read 7 Oct 2026
- Operating system support
- The README provides unattended-operation scripts for Windows and says Linux and macOS users can run the process under a service manager or terminal session.github.com · read 7 Oct 2026
- Purpose
- darkzwarmer generates inboxes across user-provided domains, sends warmup email between those inboxes, and replies after human-like delays.github.com · read 7 Oct 2026
- Replies
- The network waits a random 30 minutes to 4 hours before replying in-thread to its own messages, and ignores outsider mail.github.com · read 7 Oct 2026
- Reply behavior
- The tool replies to its own network’s messages after a random 30-minute to 4-hour delay and ignores outsider mail.github.com · read 7 Oct 2026
- Requirements
- It requires Python 3.11 or later, at least two user-owned domains for cross-domain traffic, an outbound SMTP provider, and a way to receive mail.github.com · read 7 Oct 2026
- Responsible use
- The maker says the tool only emails its own network and is intended for domains and mailboxes the user owns and controls.github.com · read 7 Oct 2026
- Runtime
- The project requires Python 3.11 or later and an always-on machine, and stores state in SQLite.github.com · read 7 Oct 2026
- Scheduling
- Sends are randomized across a default 07:00–19:00 local window, with 2–8 minutes of jitter between an inbox’s consecutive sends; weekends are paused.github.com · read 7 Oct 2026
- Security and credentials
- The README says secrets are supplied through environment variables, and identifies .env, catch-all credentials, and the SQLite database as git-ignored files.github.com · read 7 Oct 2026
- Security practices
- The Resend webhook verifies request signatures, while SMTP, Resend, Upstash, and IMAP credentials are configured locally and credential files are gitignored.github.com · read 7 Oct 2026
- Self-hosting
- The project describes itself as a Python runtime backed by SQLite that users run on an always-on machine or VPS.github.com · read 7 Oct 2026