B2B outreach teams usually start with a SaaS email platform because the first campaign ships in an afternoon. DarDev took the opposite path for product and partner communication: we self-host Listmonk for campaigns, Stalwart for SMTP, and Twenty CRM for prospect records on infrastructure we operate daily. This article is our decision record—not a universal recommendation, but the tradeoffs we documented under Deployed Realities before committing engineering time to the Unified Mailer stack.
We evaluated SaaS bundles when we needed multi-product newsletters, consent-aware list membership, and a sending identity separate from corporate inbound mail. SaaS tools excel at templates, onboarding, and managed deliverability. They weaken when your consent model spans CRM tags, webhook sync, and three product lines with different opt-in rules. That gap is what pushed us toward self-hosting.
What we compared
The short list included mainstream marketing automation (Brevo, Mailchimp, HubSpot marketing hub) and lighter send APIs (SendGrid, Postmark) paired with a separate CRM. Each option covered broadcast email well. None matched our requirement to keep cold outreach prospects in CRM only until explicit opt-in—documented separately in our CRM-driven product lists guide—without paying for enterprise tier segmentation or brittle Zapier chains.
- SaaS: fast setup, vendor-managed IP warming, built-in templates, per-seat or per-contact pricing
- Self-hosted Listmonk: list-centric campaigns, SQL-friendly subscriber model, REST API we control
- Self-hosted Stalwart: SMTP submission, DKIM signing, queue visibility on our VPS
- Twenty CRM: prospect source of truth, workspace permissions, webhook events for sync worker
Why self-host won for DarDev
Four constraints tipped the scale. First, outbound marketing must use send.dardev.net as the SMTP identity while inbound corporate mail stays on Zoho at the root domain—a split SaaS tools can support but that we wanted encoded in our own DNS and MTA config on GoDaddy and OVH PTR records. Second, Hesabi, DarDevLab, and EscaHire waitlist interest each map to distinct Listmonk lists only after consent; a custom sync worker between Twenty and Listmonk is simpler to audit than opaque SaaS audience rules. Third, we dogfood the same stack we describe to consulting clients—see Inside DarDev Unified Mailer for component wiring. Fourth, modest send volumes make VPS compute cheaper than escalating SaaS contact tiers once CRM imports grow.
Where SaaS still wins
We would pick SaaS again for a team that sends one newsletter from one list, has no CRM sync requirements, and prefers vendor SOC reports over operating an MTA. Startups validating message-market fit before compliance hardening benefit from managed warming and support chat. Enterprises buying through procurement often need a vendor DPA and audited subprocessors on day one—self-hosting shifts that burden to your own runbooks.
- No custom CRM-to-list promotion logic required
- Marketing team lacks ops capacity for TLS cert renewal and bounce log review
- Deliverability troubleshooting should be vendor ticket, not grep on Stalwart logs
- Contact volume spikes unpredictably and per-contact SaaS pricing is acceptable
Operational costs we accept
Self-hosting trades subscription fees for operator time. On dardev-vps we run Docker Compose overlays alongside other production stacks, host nginx for TLS termination, and monitor sync worker health before large sends. Incidents we own include webhook secret rotation, DKIM key rollover, bounce rate spikes after a bad import, and Twenty API rate limits during bulk prospect loads. That is intentional: Deployed Realities means we feel these failures before recommending the pattern externally.
Deliverability and identity
Self-hosted does not mean hand-waving reputation. We align SPF, DKIM, and DMARC for send.dardev.net, set PTR for the VPS IP to mta.dardev.net, and warm new lists gradually with double opt-in forms on news.dardev.net. Stalwart queues give visibility when remote MX servers defer or reject—data SaaS dashboards summarize but that we wanted in raw logs for postmortems.

Decision checklist for your team
- Map consent sources
List every way a contact can opt in—forms, sales calls, in-app checkboxes—and whether cold imports must stay CRM-only.
- Draw identity boundaries
Separate inbound corporate mail from marketing SMTP subdomain before choosing tooling.
- Estimate integration depth
If CRM tags drive list membership, prototype webhook sync locally before signing a SaaS contract.
- Staff on-call realistically
Assign an owner for bounces, cert expiry, and campaign freeze procedures.
- Revisit annually
SaaS pricing and self-host ops burden shift; document what would trigger a migration.
How this fits Deployed Realities
DarDev publishes architecture we run—not aspirational diagrams. Choosing Listmonk and Stalwart meant accepting SMTP operations in exchange for consent models we can explain to lawyers and customers. When we advise DarDev Services clients on outreach infrastructure, we start from this record and the related stack breakdown rather than a generic best-of slide.
When should a B2B team stay on SaaS email?
Stay on SaaS if you send one or two lists with simple opt-in, lack ops time for MTA maintenance, and need vendor compliance packets for procurement. Re-evaluate when CRM segmentation drives multiple product audiences or custom sync logic becomes a workaround tax.
Why not send marketing mail from @dardev.net?
Root domain mail is inbound Zoho for employees and partners. Outbound campaigns use send.dardev.net with dedicated SPF, DKIM, and DMARC so marketing reputation does not collide with transactional or personal inbox traffic.
How does self-hosted email interact with cold outreach in Twenty?
Prospects imported for research and sales follow-up live in CRM only. Listmonk lists update when consent fields or subscribe forms fire—the sync worker pattern in our CRM list guide. Never bulk-import cold CSVs directly into Listmonk.
Can DarDev implement a similar stack for clients?
Yes, through DarDev Services engagements. Scope includes consent model design, DNS identity, CRM-to-Listmonk sync, and runbooks—not only container install. We recommend what we operate.
Does this replace Hesabi transactional product email?
No. Hesabi product notifications and in-app mail follow application rules on hesabi.tn. The Unified Mailer handles marketing and opted-in product news lists. Hesabi is Tunisia-only today; availability elsewhere is unrelated to this mailer decision.



