Go-Guerrilla logo

Go-Guerrilla

Lightweight SMTP server for high-volume email reception in Go

Go-Guerrilla is an SMTP daemon designed to receive large volumes of email quickly. Features modular backends, hot-reloadable config, and multi-server support with MySQL and Redis integration.

Overview

High-Performance Email Reception

Go-Guerrilla is a lightweight SMTP server written in Go, purpose-built for receiving and processing large volumes of email. Originally developed for GuerrillaMail.com—which handles millions of emails daily—it functions as a Mail Transfer Agent (MTA) focused exclusively on rapid email ingestion without sending capabilities.

Modular Architecture

The daemon features a modular backend system using chainable "Processors" that handle email parsing, validation, and storage. Out-of-the-box support includes MySQL, Redis, MailDir, and FastCGI processors. The producer-consumer architecture leverages Go's concurrency primitives to maximize throughput on multi-core systems.

Flexible Deployment

Deploy Go-Guerrilla as a standalone daemon via the guerrillad binary or import it as a package into your Go application. Configuration supports hot-reloading, allowing you to add or remove servers, update TLS certificates, and modify settings without restart. Graceful shutdown minimizes email loss during maintenance windows. The software supports both STARTTLS and SMTPS, with resource pooling to reduce garbage collection overhead.

Highlights

Multi-server architecture with shared backend for horizontal scaling
Hot-reloadable configuration without service interruption
Chainable processor system for MySQL, Redis, MailDir, and custom backends
Graceful shutdown and resource pooling for high-throughput environments

Pros

  • Battle-tested at scale, processing millions of emails daily in production
  • Low memory footprint with efficient resource pooling and recycling
  • Flexible processor chain allows custom email handling workflows
  • Can be embedded as a Go package or run as standalone daemon

Considerations

  • Project was abandoned by original maintainer, now community-maintained
  • Last tagged release from 2019, though active fork exists
  • Focused on receiving only; no outbound SMTP sending functionality
  • Requires Go development knowledge to create custom processors

Managed products teams compare with

When teams consider Go-Guerrilla, these hosted platforms usually appear on the same shortlist.

Bird Email API logo

Bird Email API

Email sending API & SMTP relay with analytics and deliverability tooling

Mailgun logo

Mailgun

Transactional email API with SMTP/HTTP sending, routing, and deliverability tools

Mailjet logo

Mailjet

Email API & SMTP relay with transactional and marketing sending

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • High-volume email reception services processing millions of messages
  • Disposable email platforms requiring rapid ingestion and storage
  • Custom email processing pipelines needing modular backend logic
  • Go developers wanting embeddable SMTP server functionality

Not ideal when

  • Full-featured MTA requirements including outbound mail delivery
  • Teams seeking actively maintained projects with recent releases
  • Organizations requiring enterprise vendor support and SLAs
  • Simple use cases better served by hosted email services

How teams use it

Disposable Email Service

Receive millions of temporary emails daily, parse headers, store bodies in Redis, and log metadata to MySQL for fast retrieval

Email Testing Platform

Capture development and QA emails in isolated environments using MailDir processor for file-based inspection

Webhook Email Gateway

Chain FastCGI processor to forward parsed email data to web applications in real-time for automated workflows

Embedded SMTP Receiver

Import as Go package into SaaS application to handle inbound email without external dependencies

Tech snapshot

Go100%
Makefile1%
Shell1%

Tags

mail-delivery-agentsmtp-serversmtpgomdaserver

Frequently asked questions

Can Go-Guerrilla send outbound email?

No, it functions exclusively as a receiving MTA. It grabs incoming email, processes it, and disconnects quickly without sending capabilities.

What are processors and how do they work?

Processors are modular components chained via configuration to handle email tasks. Examples include HeadersParser for parsing, MySQL for storage, and Debugger for logging. You can create custom processors or use vendor-provided ones.

Is the project still maintained?

The original repository was abandoned in 2019. Community member Philipp revived it at github.com/phires/go-guerrilla and is actively maintaining the fork.

Can I reload configuration without downtime?

Yes, Go-Guerrilla supports hot-reloading. You can add/remove servers, update TLS certificates, and change most settings without restarting the daemon.

What storage backends are supported?

MySQL and Redis are supported out-of-the-box. Vendor-provided processors include MailDir and FastCGI. You can also implement custom processors for other storage systems.

Project at a glance

Dormant
Stars
2,927
Watchers
2,927
Forks
370
LicenseMIT
Repo age13 years old
Last commit2 years ago
Primary languageGo

Last synced 4 hours ago