All Projects → gleez → Smtpd

gleez / Smtpd

Licence: mit
A Lightweight High Performance ESMTP email server

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Smtpd

Easylogger
An ultra-lightweight(ROM<1.6K, RAM<0.3k), high-performance C/C++ log library. | 一款超轻量级(ROM<1.6K, RAM<0.3k)、高性能的 C/C++ 日志库
Stars: ✭ 1,968 (+1024.57%)
Mutual labels:  lightweight, high-performance
Nuster
A high performance HTTP proxy cache server and RESTful NoSQL cache server based on HAProxy
Stars: ✭ 1,825 (+942.86%)
Mutual labels:  proxy, high-performance
Vagrant Elastic Stack
Giving the Elastic Stack a try in Vagrant
Stars: ✭ 131 (-25.14%)
Mutual labels:  mongodb, nginx
Proxy.py
⚡⚡⚡Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on Network monitoring, controls & Application development, testing, debugging
Stars: ✭ 1,291 (+637.71%)
Mutual labels:  lightweight, proxy
Roomler
Roomler - Multi-party Video Conferencing & Team Collaboration Tool using WebRTC (Janus Gateway)
Stars: ✭ 160 (-8.57%)
Mutual labels:  mongodb, nginx
Production Ready Expressjs Server
Express.js server that implements production-ready error handling and logging following latest best practices.
Stars: ✭ 101 (-42.29%)
Mutual labels:  mongodb, nginx
Monitaure
🔔 A server uptime monitoring progressive web application - NO LONGER MAINTAINED
Stars: ✭ 135 (-22.86%)
Mutual labels:  mongodb, nginx
Flask Restful Authentication
An example for RESTful authentication using nginx, uWSGI, Flask, MongoDB and JSON Web Token(JWT).
Stars: ✭ 63 (-64%)
Mutual labels:  mongodb, nginx
Go Guerrilla
Mini SMTP server written in golang
Stars: ✭ 2,173 (+1141.71%)
Mutual labels:  smtp, smtp-server
Free Email Forwarding
The best free email forwarding for custom domains. Visit our website to get started (SMTP server)
Stars: ✭ 2,024 (+1056.57%)
Mutual labels:  smtp, proxy
Netdumbster
netDumbster is a .Net Fake SMTP Server clone of the popular Dumbster
Stars: ✭ 88 (-49.71%)
Mutual labels:  smtp, smtp-server
Docker Postfix
Simple SMTP server / postfix null relay host for your Docker and Kubernetes containers. Based on Alpine Linux.
Stars: ✭ 163 (-6.86%)
Mutual labels:  smtp, smtp-server
Docker Nginx Image Proxy
on the fly image cropping with gravity, resize and compression microservice
Stars: ✭ 79 (-54.86%)
Mutual labels:  proxy, nginx
Django Microservices
UNMAINTAINED
Stars: ✭ 124 (-29.14%)
Mutual labels:  mongodb, nginx
Record
✨✨都是自己输出和看过觉得不错的文章,欢迎star、watch!!同时欢迎推荐新文章、书籍和视频!!
Stars: ✭ 69 (-60.57%)
Mutual labels:  mongodb, nginx
Mern Authentication
MERN stack authentication boilerplate: password reset, email verification, server sessions, redux, hooks and docker for dev and prod.
Stars: ✭ 129 (-26.29%)
Mutual labels:  mongodb, nginx
Noginx
High performance HTTP and reverse proxy server based on Node.js. 基于 Node.js 的高性能 HTTP 及反向代理服务器,类似nginx。
Stars: ✭ 53 (-69.71%)
Mutual labels:  proxy, nginx
Infrared
An ultra lightweight minecraft reverse proxy and idle placeholder
Stars: ✭ 59 (-66.29%)
Mutual labels:  lightweight, proxy
Papercut Smtp
Papercut SMTP -- The Simple Desktop Email Server
Stars: ✭ 2,094 (+1096.57%)
Mutual labels:  smtp, smtp-server
Haproxy
HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
Stars: ✭ 2,463 (+1307.43%)
Mutual labels:  proxy, high-performance

smtpd

A Lightweight High Performance SMTP written in Go, made for receiving large volumes of mail, parse and store in mongodb. The purpose of this daemon is to grab the email, save it to the database and disconnect as quickly as possible.

This server does not attempt to check for spam or do any sender verification. These steps should be performed by other programs. The server does NOT send any email including bounces. This should be performed by a separate program.

The most alluring aspect of Go are the Goroutines! It makes concurrent programming easy, clean and fun! Go programs can also take advantage of all your machine's multiple cores without much effort that you would otherwise need with forking or managing your event loop callbacks, etc. Golang solves the C10K problem in a very interesting way http://en.wikipedia.org/wiki/C10k_problem

Once compiled, Smtpd does not have an external dependencies (HTTP, SMTP are all built in).

Features

  • ESMTP server implementing RFC5321
  • Support for SMTP AUTH (RFC4954) and PIPELINING (RFC2920)
  • Multipart MIME support
  • UTF8 support for subject and message
  • Web interface to view messages (plain text, HTML or source)
  • Html sanitizer for html mail in web interface
  • Real-time updates using websocket
  • Download individual attachments
  • MongoDB storage for message persistence
  • Lightweight and portable
  • No installation required

Development Status

SMTPD is currently production quality: it is being used for real work.

TODO

  • POP3
  • Rest API
  • Inline resources in Web interface
  • Per user/domain mailbox in web interface

Building from Source

You will need a functioning [Go installation][Golang] for this to work.

Grab the Smtpd source code and compile the daemon:

go get -v github.com/gleez/smtpd

Edit etc/smtpd.conf and tailor to your environment. It should work on most Unix and OS X machines as is. Launch the daemon:

$GOPATH/bin/smtpd -config=$GOPATH/src/github.com/gleez/smtpd/etc/smtpd.conf

By default the SMTP server will be listening on localhost port 25000 and the web interface will be available at localhost:10025.

This will place smtpd in the background and continue running

/usr/bin/nohup /home/gleez/smtpd -config=/home/gleez/smtpd.conf -logfile=smtpd.log 2>&1 &

You may also put another process to watch your smtpd process and re-start it if something goes wrong.

Using Nginx as a proxy

Nginx can be used to proxy SMTP traffic for GoGuerrilla SMTPd

Why proxy SMTP?

  • Terminate TLS connections: At present, only a partial implementation of TLS is provided. OpenSSL on the other hand, used in Nginx, has a complete implementation of SSL v2/v3 and TLS protocols.
  • Could be used for load balancing and authentication in the future.
  1. Compile nginx with --with-mail --with-mail_ssl_module
  2. Configuration:
mail {
	#This is the URL to Smtpd's http service which tells Nginx where to proxy the traffic to
	auth_http 127.0.0.1:10025/auth-smtp;
					
	server {
		listen  15.29.8.163:25;
		protocol     smtp;
		server_name  smtp.example.com;

		smtp_auth none;
		timeout 30000;
		smtp_capabilities "PIPELINING" "8BITMIME" "SIZE 20480000";

		# ssl default off. Leave off if starttls is on
		#ssl                   on;
		ssl_certificate        /etc/ssl/certs/ssl-cert-snakeoil.pem;
		ssl_certificate_key    /etc/ssl/private/ssl-cert-snakeoil.key;
		ssl_session_timeout    5m;

		ssl_protocols               SSLv2 SSLv3 TLSv1;
		ssl_ciphers                 HIGH:!aNULL:!MD5;
		ssl_prefer_server_ciphers   on;

		# TLS off unless client issues STARTTLS command
		starttls      on;
		proxy         on;
		xclient       on;
	}
}

Credits

Licence

Copyright ©‎ 2014, Gleez Technologies (http://www.gleeztech.com).

Released under MIT license, see LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].