Version: v0.0.0-...-fad10f1 Latest Latest

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

Go to latest
Published: Apr 2, 2014 License: BSD-3-Clause Imports: 11 Imported by: 1



Package smtpd implements an SMTP server. Hooks are provided to customize its behavior.



This section is empty.


This section is empty.


This section is empty.


type BasicEnvelope

type BasicEnvelope struct {
	// contains filtered or unexported fields

func (*BasicEnvelope) AddRecipient

func (e *BasicEnvelope) AddRecipient(rcpt MailAddress) error

func (*BasicEnvelope) BeginData

func (e *BasicEnvelope) BeginData() error

func (*BasicEnvelope) Close

func (e *BasicEnvelope) Close() error

func (*BasicEnvelope) Write

func (e *BasicEnvelope) Write(line []byte) error

type Connection

type Connection interface {
	Addr() net.Addr

Connection is implemented by the SMTP library and provided to callers customizing their own Servers.

type Envelope

type Envelope interface {
	AddRecipient(rcpt MailAddress) error
	BeginData() error
	Write(line []byte) error
	Close() error

type MailAddress

type MailAddress interface {
	Email() string    // email address, as provided
	Hostname() string // canonical hostname, lowercase

MailAddress is defined by

type SMTPError

type SMTPError string

func (SMTPError) Error

func (e SMTPError) Error() string

type Server

type Server struct {
	Addr         string        // TCP address to listen on, ":25" if empty
	Hostname     string        // optional Hostname to announce; "" to use system hostname
	ReadTimeout  time.Duration // optional read timeout
	WriteTimeout time.Duration // optional write timeout

	PlainAuth bool // advertise plain auth (assumes you're on SSL)

	// OnNewConnection, if non-nil, is called on new connections.
	// If it returns non-nil, the connection is closed.
	OnNewConnection func(c Connection) error

	// OnNewMail must be defined and is called when a new message beings.
	// (when a MAIL FROM line arrives)
	OnNewMail func(c Connection, from MailAddress) (Envelope, error)

Server is an SMTP server.

func (*Server) ListenAndServe

func (srv *Server) ListenAndServe() error

ListenAndServe listens on the TCP network address srv.Addr and then calls Serve to handle requests on incoming connections. If srv.Addr is blank, ":25" is used.

func (*Server) Serve

func (srv *Server) Serve(ln net.Listener) error

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL