Skip to content

Commit 616f008

Browse files
committed
register for link-auth and upon successful auth, track username so
it can be passed to rspamd
1 parent 4021f7e commit 616f008

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

filter-rspamd.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
106120
func 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

Comments
 (0)