1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2026-01-07 17:47:14 +00:00

smtpsrv: Always pass the environment variables to the hook

This patch makes the hooks always have a complete set of environment
varuables, set to 0/1 or whatever is appropriate, to make it easier to
write the checks for them.
This commit is contained in:
Alberto Bertogli
2016-10-22 10:12:04 +01:00
parent 14c48153aa
commit 6640c09b9e
2 changed files with 18 additions and 6 deletions

View File

@@ -653,14 +653,18 @@ func (c *Conn) runPostDataHook(data []byte) ([]byte, bool, error) {
cmd.Env = append(cmd.Env, "REMOTE_ADDR="+c.conn.RemoteAddr().String())
cmd.Env = append(cmd.Env, "MAIL_FROM="+c.mailFrom)
cmd.Env = append(cmd.Env, "RCPT_TO="+strings.Join(c.rcptTo, " "))
cmd.Env = append(cmd.Env, "AUTH_AS="+c.authUser+"@"+c.authDomain)
if c.onTLS {
cmd.Env = append(cmd.Env, "ON_TLS=1")
}
if envelope.DomainIn(c.mailFrom, c.localDomains) {
cmd.Env = append(cmd.Env, "FROM_LOCAL_DOMAIN=1")
if c.completedAuth {
cmd.Env = append(cmd.Env, "AUTH_AS="+c.authUser+"@"+c.authDomain)
} else {
cmd.Env = append(cmd.Env, "AUTH_AS=")
}
cmd.Env = append(cmd.Env, "ON_TLS="+boolToStr(c.onTLS))
cmd.Env = append(cmd.Env, "FROM_LOCAL_DOMAIN="+boolToStr(
envelope.DomainIn(c.mailFrom, c.localDomains)))
cmd.Env = append(cmd.Env, "SPF_PASS="+boolToStr(c.spfResult == spf.Pass))
out, err := cmd.Output()
if err != nil {
hookResults.Add("post-data:fail", 1)
@@ -741,6 +745,13 @@ func lastLine(s string) string {
return l[len(l)-2]
}
func boolToStr(b bool) string {
if b {
return "1"
}
return "0"
}
func (c *Conn) STARTTLS(params string) (code int, msg string) {
if c.onTLS {
return 503, "You are already wearing that!"