An implementation of rfc5321, the latest revision of the Simple Mail Transfer Protocol, in Go.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
server
simpleconf
.gitignore
README.md
mailman.go

README.md

SMTP Mailman

What is this?

An implementation of rfc5321, the latest revision of the Simple Mail Transfer Protocol, in Go. I might set up a honeypot with this some time in the future.

Why are you making this??

You clearly don't understand how bored I am right now.

There is a smtp package in the language already..

Yeah, so what? I thought it would be interesting to try to implement as many features of the specification as I can with just a few basic packages.

Proof of concept

Here's a sample exchange. Commands were taken from the official spec.

roger [21:52:35] ~/Development/smtpserver/src/github.com/rogerhub
$ nc localhost 2225
220 localhost Greetings
EHLO foo.com
250-localhost
250-PIPELINING
250 SIZE 10000000
MAIL FROM:<JQP@bar.com>
250 OK
RCPT TO:<Jones@XYZ.COM>
250 OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Received: from bar.com by foo.com ; Thu, 21 May 1998
	05:33:29 -0700
Date: Thu, 21 May 1998 05:33:22 -0700
From: John Q. Public <JQP@bar.com>
Subject:  The Next Meeting of the Board
To: Jones@xyz.com

Bill:
The next meeting of the board of directors will be
on Tuesday.
						John.
.
250 OK
QUIT
221 Service closing transmission channel