package milter
import "github.com/emersion/go-milter"
Package milter provides an interface to implement milter mail filters
Index ¶
- Constants
- Variables
- type CustomResponse
- func NewResponse(code byte, data []byte) *CustomResponse
- func NewResponseStr(code byte, data string) *CustomResponse
- func (c *CustomResponse) Continue() bool
- func (c *CustomResponse) Response() *Message
- type Message
- type Milter
- 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 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
Variables ¶
ErrServerClosed is returned by the Server's Serve method after a call to Close.
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 Message ¶
Message represents a command sent from milter client
type Milter ¶
type Milter interface { // Connect is called to provide SMTP connection data for incoming message. // Suppress with OptNoConnect. 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 // OptNoHelo. Helo(name string, m *Modifier) (Response, error) // MailFrom is called to process filters on envelope FROM address. Suppress // with OptNoMailFrom. MailFrom(from string, m *Modifier) (Response, error) // RcptTo is called to process filters on envelope TO address. Suppress with // OptNoRcptTo. RcptTo(rcptTo string, m *Modifier) (Response, error) // Header is called once for each header in incoming message. Suppress with // OptNoHeaders. Header(name string, value string, m *Modifier) (Response, error) // Headers is called when all message headers have been processed. Suppress // with OptNoEOH. 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 OptNoBody. 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) }
Milter is an interface for milter callback handlers.
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) AddHeader ¶
AddHeader appends a new email message header the 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. The index is per name.
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.
const ( OptAddHeader OptAction = 0x01 OptChangeBody OptAction = 0x02 OptAddRcpt OptAction = 0x04 OptRemoveRcpt OptAction = 0x08 OptChangeHeader OptAction = 0x10 OptQuarantine OptAction = 0x20 OptChangeFrom OptAction = 0x40 )
set which actions the milter wants to perform
type OptProtocol ¶
type OptProtocol uint32
OptProtocol masks out unwanted parts of the SMTP transaction. Multiple options can be set using a bitmask.
const ( OptNoConnect OptProtocol = 0x01 OptNoHelo OptProtocol = 0x02 OptNoMailFrom OptProtocol = 0x04 OptNoRcptTo OptProtocol = 0x08 OptNoBody OptProtocol = 0x10 OptNoHeaders OptProtocol = 0x20 OptNoEOH OptProtocol = 0x40 )
mask out unwanted parts of the SMTP transaction
type Response ¶
Response represents a response structure returned by callback handlers to indicate how the milter server should proceed
type Server ¶
type Server struct { NewMilter func() Milter Actions OptAction Protocol OptProtocol // contains filtered or unexported fields }
Server is a milter server.
func (*Server) Close ¶
func (*Server) Serve ¶
Serve starts the server.
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
Source Files ¶
cstrings.go message.go milter.go modifier.go response.go server.go session.go
- Version
- v0.1.0
- Published
- Mar 30, 2020
- Platform
- windows/amd64
- Imports
- 10 packages
- Last checked
- now –
Tools for package owners.