Documentation ¶
Overview ¶
A Go library for milter support
Index ¶
- Constants
- func Close() (err error)
- func RunServer(server net.Listener, init MilterInit, handlers ...func(error)) error
- type CustomResponse
- type Message
- type Milter
- type MilterInit
- type Modifier
- func (m *Modifier) AddHeader(name, value string) error
- func (m *Modifier) AddRecipient(r string) error
- func (m *Modifier) ChangeHeader(index int, name, value string) error
- func (m *Modifier) DeleteRecipient(r string) error
- func (m *Modifier) Quarantine(reason string) error
- func (m *Modifier) ReplaceBody(body []byte) error
- type OptAction
- type OptProtocol
- type Response
- type Server
- type SimpleResponse
Constants ¶
const ( RespAccept = SimpleResponse(accept) RespContinue = SimpleResponse(continue_) RespDiscard = SimpleResponse(discard) RespReject = SimpleResponse(reject) RespTempFail = SimpleResponse(tempFail) )
Define standard responses with no data
const ( // set which actions the milter wants to perform OptAddHeader OptAction = 0x01 OptChangeBody OptAction = 0x02 OptAddRcpt OptAction = 0x04 OptRemoveRcpt OptAction = 0x08 OptChangeHeader OptAction = 0x10 OptQuarantine OptAction = 0x20 // mask out unwanted parts of the SMTP transaction OptAllParts OptProtocol = 0x00 OptNoConnect OptProtocol = 0x01 OptNoHelo OptProtocol = 0x02 OptNoMailFrom OptProtocol = 0x04 OptNoRcptTo OptProtocol = 0x08 OptNoBody OptProtocol = 0x10 OptNoHeaders OptProtocol = 0x20 OptNoEOH OptProtocol = 0x40 )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CustomResponse ¶
type CustomResponse struct {
// contains filtered or unexported fields
}
CustomResponse is a response instance used by callback handlers to indicate how the milter should continue processing of current message
func NewResponse ¶
func NewResponse(code byte, data []byte) *CustomResponse
NewResponse generates a new CustomResponse suitable for WritePacket
func NewResponseStr ¶
func NewResponseStr(code byte, data string) *CustomResponse
NewResponseStr generates a new CustomResponse with string payload
func (*CustomResponse) Continue ¶
func (c *CustomResponse) Continue() bool
Continue returns false if milter chain should be stopped, true otherwise
func (*CustomResponse) Response ¶
func (c *CustomResponse) Response() *Message
Response returns message instance with data
type Milter ¶
type Milter interface { // Abort current filter checks. Expected response: NONE // Resets internal state of milter program to before SMFIC_HELO, but keeps the connection open. Abort(m *Modifier) // Connect is called to provide SMTP connection data for incoming message // supress with NoConnect Connect(host string, family string, port uint16, addr net.IP, m *Modifier) (Response, error) // Helo is called to process any HELO/EHLO related filters // supress with NoHelo Helo(name string, m *Modifier) (Response, error) // MailFrom is called to process filters on envelope FROM address // supress with NoMailForm MailFrom(from string, m *Modifier) (Response, error) // RcptTo is called to process filters on envelope TO address // supress with NoRcptTo RcptTo(rcptTo string, m *Modifier) (Response, error) // Header is called once for each header in incoming message // supress with NoHeaders Header(name string, value string, m *Modifier) (Response, error) // Headers is called when all message headers have been processed // supress with NoHeaders Headers(h textproto.MIMEHeader, m *Modifier) (Response, error) // BodyChunk is called to process next message body chunk data (up to 64KB in size) // supress with NoBody BodyChunk(chunk []byte, m *Modifier) (Response, error) // Body is called at the end of each message // all changes to message's content & attributes must be done here Body(m *Modifier) (Response, error) // Close connection // Close(m *Modifier) }
Milter is an interface for milter callback handlers
type MilterInit ¶
type MilterInit func() (Milter, OptAction, OptProtocol)
MilterInit initializes milter options multiple options can be set using a bitmask
type Modifier ¶
type Modifier struct { Macros map[string]string Headers textproto.MIMEHeader // contains filtered or unexported fields }
Modifier provides access to Macros, Headers and Body data to callback handlers. It also defines a number of functions that can be used by callback handlers to modify processing of the email message
func (*Modifier) AddRecipient ¶
AddRecipient appends a new envelope recipient for current message
func (*Modifier) ChangeHeader ¶
ChangeHeader replaces the header at the specified position with a new one
func (*Modifier) DeleteRecipient ¶
DeleteRecipient removes an envelope recipient address from message
func (*Modifier) Quarantine ¶
Quarantine a message by giving a reason to hold it
func (*Modifier) ReplaceBody ¶
ReplaceBody substitutes message body with provided body
type OptAction ¶
type OptAction uint32
OptAction sets which actions the milter wants to perform. Multiple options can be set using a bitmask.
type OptProtocol ¶
type OptProtocol uint32
OptProtocol masks out unwanted parts of the SMTP transaction. Multiple options can be set using a bitmask.
type Response ¶
Response represents a response structure returned by callback handlers to indicate how the milter server should proceed
type Server ¶
type Server struct { Listener net.Listener MilterFactory MilterInit ErrHandlers []func(error) sync.WaitGroup }
Milter server for handling and processing incoming connections support panic handling via ErrHandler couple of func(error) could be provided for handling error
type SimpleResponse ¶
type SimpleResponse byte
SimpleResponse type to define list of pre-defined responses
func (SimpleResponse) Continue ¶
func (r SimpleResponse) Continue() bool
Continue to process milter messages only if current code is Continue
func (SimpleResponse) Response ¶
func (r SimpleResponse) Response() *Message
Response returns a Message object reference