@@ -38,6 +38,7 @@ type session struct {
3838 src string
3939 dst string
4040 heloName string
41+ userName string
4142
4243 msgid string
4344 mail_from string
@@ -61,6 +62,7 @@ var reporters = map[string]func(string, []string) {
6162 "link-connect" : linkConnect ,
6263 "link-disconnect" : linkDisconnect ,
6364 "link-identify" : linkIdentify ,
65+ "link-auth" : linkAuth ,
6466 "tx-reset" : txReset ,
6567 "tx-begin" : txBegin ,
6668 "tx-mail" : txMail ,
@@ -103,6 +105,18 @@ func linkIdentify(sessionId string, params []string) {
103105 sessions [s .id ] = s
104106}
105107
108+ func linkAuth (sessionId string , params []string ) {
109+ if len (params ) != 2 {
110+ log .Fatal ("invalid input, shouldn't happen" )
111+ }
112+ if params [1 ] != "pass" {
113+ return
114+ }
115+ s := sessions [sessionId ]
116+ s .userName = params [0 ]
117+ sessions [s .id ] = s
118+ }
119+
106120func txReset (sessionId string , params []string ) {
107121 if len (params ) != 1 {
108122 log .Fatal ("invalid input, shouldn't happen" )
@@ -113,7 +127,8 @@ func txReset(sessionId string, params []string) {
113127 s .mail_from = ""
114128 s .rcpt_to = nil
115129 s .message = nil
116- s .action = "" ;
130+ s .action = ""
131+ s .userName = ""
117132 sessions [s .id ] = s
118133}
119134
@@ -231,6 +246,11 @@ func rspamdQuery(s session, token string) {
231246 req .Header .Add ("Helo" , s .heloName )
232247 req .Header .Add ("Queue-Id" , s .msgid )
233248 req .Header .Add ("From" , s .mail_from )
249+
250+ if s .userName != "" {
251+ req .Header .Add ("User" , s .userName )
252+ }
253+
234254 for _ , rcpt_to := range s .rcpt_to {
235255 req .Header .Add ("Rcpt" , rcpt_to )
236256 }
0 commit comments