Go-Guerrilla lightweight SMTP server

Go-Guerrilla is a lightweight SMTP server written in Go, made for receiving large volumes of mail. It started as a project for GuerrillaMail.com which processes millions of emails every day, and needed a daemon with less bloat & written in a more memory-safe language that can take advantage of modern multi-core architectures.

The purpose of this daemon is to grab the email, save it, and disconnect as quickly as possible, essentially performing the services of a Mail Transfer Agent (MTA) without the sending functionality.

The software also includes a modular backend implementation, which can extend the email processing functionality to whatever needs you may require.

To be used as a package in your Go project, or as a stand-alone daemon by running the guerrillad binary.

Supports MySQL and Redis out-of-the-box, with many other vendor provided processors, such as MailDir and even FastCGI!

Go-Guerrilla SMTP Project
Image – Go-Guerrilla SMTP Project

Key Features :

  • Multi-server. Can spawn multiple servers, all sharing the same backend for saving email.
  • Config hot-reloading. Add/Remove/Enable/Disable servers without restarting. Reload TLS configuration, change most other settings on the fly.
  • Graceful shutdown: Minimise loss of email if you need to shutdown/restart.
  • Be a gentleman to the garbage collector: resources are pooled & recycled where possible.
  • Modular Backend system
  • Modern TLS support (STARTTLS or SMTPS).
  • Can be used as a package in your Go project. Get started in just a few lines of code!
  • Fuzz testedAuto-tested. Battle Tested.
  • Arranged as workers running in parallel, using a producer/consumer type structure, taking advantage of Go’s channels and go-routines.
  • Modular backend system structured using a decorator-like pattern which allows the chaining of components (a.k.a. Processors) via the config.
  • Different ways for processing / delivering email: Supports MySQL and Redis out-of-the box, many other vendor provided processors available.

Resources

Like this post? Don’t forget to share it!

Summary
Article Name
Go-Guerrilla lightweight SMTP server
Description
Go-Guerrilla is a lightweight SMTP server written in Go, made for receiving large volumes of mail. It started as a project for GuerrillaMail.com which processes millions of emails every day, and needed a daemon with less bloat & written in a more memory-safe language that can take advantage of modern multi-core architectures.
Author
Publisher Name
upnxtblog

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.