Documentation
¶
Overview ¶
A Go library for milter support
Index ¶
- Constants
- func RunServer(server net.Listener, init MilterInit) 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) ChangeFrom(value string) error
- func (m *Modifier) ChangeHeader(index int, name, value string) error
- func (m *Modifier) DeleteRecipient(r string) error
- func (m *Modifier) InsertHeader(index int, name, value string) error
- func (m *Modifier) Quarantine(reason string) error
- func (m *Modifier) ReplaceBody(body []byte) error
- type OptAction
- type OptProtocol
- type Response
- type SimpleResponse
Constants ¶
const ( RespAccept = SimpleResponse(rspAccept) RespContinue = SimpleResponse(rspContinue) RespDiscard = SimpleResponse(rspDiscard) RespReject = SimpleResponse(rspReject) RespTempFail = SimpleResponse(rspTempFail) )
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 OptChangeFrom OptAction = 0x40 // mask out unwanted parts of the SMTP transaction 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 { // Connect is called to provide SMTP connection data for incoming message // suppress 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 // suppress with NoHelo Helo(name string, m *Modifier) (Response, error) // MailFrom is called to process filters on envelope FROM address // suppress with NoMailForm MailFrom(from string, m *Modifier) (Response, error) // RcptTo is called to process filters on envelope TO address // suppress with NoRcptTo RcptTo(rcptTo string, m *Modifier) (Response, error) // Header is called once for each header in incoming message // suppress with NoHeaders Header(name string, value string, m *Modifier) (Response, error) // Headers is called when all message headers have been processed // suppress 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) // suppress 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) // Abort current filter checks Abort() // Quit milter connection Quit() }
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) ChangeFrom ¶
ChangeFrom replaces the FROM envelope header with a new one
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) InsertHeader ¶
InsertHeader inserts the header at the specified position
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 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