gomaild

command module
v0.0.0-...-1fee6d4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2014 License: MIT Imports: 6 Imported by: 0

README

gomaild

Build Status GoDoc

A Go implementation of nowadays popular email protocols, to provide a simple yet secure and customizable email daemon.

You can obtain more specific documentation through the godoc command, or on the godoc website.


gomaild is still in development: it's not recommended to deploy it in production yet.


###Supported protocols

NOTE: Protocols might be considered "implemented" even if not completely - features described in their first RFC should be enough to fully support clients.

Protocol Status
SMTP Implemented, to optimize
POP3 Implemented, to optimize
IMAP4 Not yet implemented

####POP3

#####Supported commands

  • CAPA
  • APOP
  • DELE
  • LIST
  • NOOP
  • PASS
  • QUIT
  • RETR
  • RSET
  • STAT
  • TOP
  • UIDL
  • USER

#####Supported authentication methods

  • USER + PASS
  • APOP

OAUTH/cookie-like authentication might get implemented.

####SMTP

#####Supported commands

  • HELO
  • EHLO
  • MAIL (FROM)
  • RCPT
  • DATA
  • STARTTLS
  • AUTH (LOGIN PLAIN CRAM-MD5)
  • QUIT
  • NOOP
  • RSET
  • VRFY

Commands like TURN or ETRN might not get implemented (or, at least, not soon), since their use is very limited.

#####Supported authentication methods

  • LOGIN
  • PLAIN
  • CRAM-MD5

Due to the (apparent) lack of documentation about the DIGEST-MD5 method, I haven't implemented it yet. GSSAPI might not get implemented, since it's been standardized for the C language, not for the others: implementing it might cause conflicts with clients. OAUTH/cookie-like authentication might get implemented.

#####Supported encryption(cipher)

  • TLS

At the moment, only through the STARTTLS command. Full-connection encryption will come soon.

AES, RC4 (keys provided by the individual SMTP user) encryption is planned. TripleSec has been considered as well.

###Packages

As gomaild is built using the Go language, it is made of many small packages, the most useful (and portable) of them being the ones listed below. Individual packages should be described in detail in their own README file, found in their folder.

Name Purpose
parsers/textual A text (telnet) parsing package.
parsers/config An extended JSON parsing package.
cipher A package wrapping most used cipher actions.
rfc2822 An email parsing package.

###Configuration

gomaild reads and parses (using the parsers/config package) all the .conf files in its executable's root directory. The configuration files' content is then stored in the Configuration variable of the config package. The syntax is simple: JSON plus comments, which work as follows:

  • lines starting with the hash (#) character will be ignored;
  • text at the right side of an hash character will be ignored. There's no escaping for the hash character yet.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cipher provides cryptographic functionality, such as TLS.
Package cipher provides cryptographic functionality, such as TLS.
Package config provides configuration and templating.
Package config provides configuration and templating.
Package locker provides basic software locking of string values, such as filepaths or usernames.
Package locker provides basic software locking of string values, such as filepaths or usernames.
Package mailboxes provides static utility functions to manage mailboxes.
Package mailboxes provides static utility functions to manage mailboxes.
parsers
config
Package config provides parsing for particular JSON-structured text, enhanced to include comments.
Package config provides parsing for particular JSON-structured text, enhanced to include comments.
textual
Package textual provides parsing for telnet-like protocols.
Package textual provides parsing for telnet-like protocols.
processors
pop3
Package pop3 implements the POP3 protocol.
Package pop3 implements the POP3 protocol.
pop3/client
Package client defines a set of structs and methods to handle a POP3 client.
Package client defines a set of structs and methods to handle a POP3 client.
pop3/cmdprocessor
Package cmdprocessor provides a set of structs, variables and methods to process POP3 clients' commands.
Package cmdprocessor provides a set of structs, variables and methods to process POP3 clients' commands.
pop3/cmdprocessor/apop
Package apop implements the APOP command.
Package apop implements the APOP command.
pop3/cmdprocessor/auth
Package auth implements POP3 authentication, such as PLAIN, LOGIN, and CRAM-MD5 SASL methods.
Package auth implements POP3 authentication, such as PLAIN, LOGIN, and CRAM-MD5 SASL methods.
pop3/cmdprocessor/capa
Implements the CAPA command.
Implements the CAPA command.
pop3/cmdprocessor/dele
Implements the DELE command.
Implements the DELE command.
pop3/cmdprocessor/list
Implements the LIST command.
Implements the LIST command.
pop3/cmdprocessor/noop
Implements the NOOP command.
Implements the NOOP command.
pop3/cmdprocessor/pass
Implements the PASS command.
Implements the PASS command.
pop3/cmdprocessor/quit
Implements the QUIT command.
Implements the QUIT command.
pop3/cmdprocessor/retr
Implements the RETR command.
Implements the RETR command.
pop3/cmdprocessor/rset
Implements the RSET command.
Implements the RSET command.
pop3/cmdprocessor/stat
Implements the STAT command.
Implements the STAT command.
pop3/cmdprocessor/stls
Implements the STLS command.
Implements the STLS command.
pop3/cmdprocessor/top
Implements the TOP command.
Implements the TOP command.
pop3/cmdprocessor/uidl
Implements the UIDL command.
Implements the UIDL command.
pop3/cmdprocessor/user
Implements the USER command.
Implements the USER command.
pop3/message
Package message provides POP3 utility functions for MIME messages.
Package message provides POP3 utility functions for MIME messages.
pop3/session
Package session provides structs to store session data.
Package session provides structs to store session data.
smtp
Package smtp implements the SMTP protocol.
Package smtp implements the SMTP protocol.
smtp/client
Package client defines a set of structs and methods to handle a SMTP client.
Package client defines a set of structs and methods to handle a SMTP client.
smtp/cmdprocessor
Package cmdprocessor provides a set of structs, variables and methods to process SMTP clients' commands.
Package cmdprocessor provides a set of structs, variables and methods to process SMTP clients' commands.
smtp/cmdprocessor/auth
Package auth implements SMTP authentication, such as PLAIN, LOGIN, and CRAM-MD5 SASL methods.
Package auth implements SMTP authentication, such as PLAIN, LOGIN, and CRAM-MD5 SASL methods.
smtp/cmdprocessor/data
Implements the DATA command.
Implements the DATA command.
smtp/cmdprocessor/ehlo
Implements the EHLO command.
Implements the EHLO command.
smtp/cmdprocessor/helo
Implements the HELO command.
Implements the HELO command.
smtp/cmdprocessor/mail
Implements the MAIL command.
Implements the MAIL command.
smtp/cmdprocessor/noop
Implements the NOOP command.
Implements the NOOP command.
smtp/cmdprocessor/quit
Implements the QUIT command.
Implements the QUIT command.
smtp/cmdprocessor/rcpt
Implements the RCPT command.
Implements the RCPT command.
smtp/cmdprocessor/rset
Implements the RSET command.
Implements the RSET command.
smtp/cmdprocessor/starttls
Implements the STARTTLS command.
Implements the STARTTLS command.
smtp/cmdprocessor/vrfy
Implements the VRFY command.
Implements the VRFY command.
smtp/message
Package message provides SMTP utility functions for MIME messages.
Package message provides SMTP utility functions for MIME messages.
smtp/reply
Provides a data structure for SMTP replies.
Provides a data structure for SMTP replies.
smtp/session
Package session provides structs to store session data.
Package session provides structs to store session data.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL