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:
@@ -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!"
|
||||
|
||||
Reference in New Issue
Block a user