In all methods of Milter except Body(*Modifier) (Response, error), passed *Modifier cannot be used except of accessing macros.
If try to make some modifications, for example:
func (mm *myMilter) RcptTo(from string, m *milter.Modifier) (milter.Response, error) {
m.AddRecipient("test@mail.com")
return milter.RespContinue, nil
}
Postfix perform milter_default_action and finish milter session.
So maybe better pass only macro to methods e.g.:
// interface.go
...
RcptTo(string, *map[string]string) (Response, error)
...
// session.go
...
case 'R':
// envelope to address
envto := ReadCString(msg.Data)
return m.Milter.RcptTo(strings.Trim(envto, "<>"), &m.Macros)
...
In all methods of Milter except
Body(*Modifier) (Response, error), passed*Modifiercannot be used except of accessing macros.If try to make some modifications, for example:
Postfix perform
milter_default_actionand finish milter session.So maybe better pass only macro to methods e.g.: