2
0
forked from drew/smtprelay

command: Add some environment variables when calling external cmd

This commit is contained in:
Bernhard Froehlich
2023-01-20 09:31:09 +00:00
parent b4eac9a7d2
commit cc064e497e

12
main.go
View File

@@ -3,6 +3,7 @@ package main
import ( import (
"bytes" "bytes"
"crypto/tls" "crypto/tls"
"fmt"
"net" "net"
"net/textproto" "net/textproto"
"os" "os"
@@ -176,7 +177,16 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
var stdout bytes.Buffer var stdout bytes.Buffer
var stderr bytes.Buffer var stderr bytes.Buffer
cmd := exec.Command(*command) environ := os.Environ()
environ = append(environ, fmt.Sprintf("%s=%s", "SMTPRELAY_FROM", env.Sender))
environ = append(environ, fmt.Sprintf("%s=%s", "SMTPRELAY_TO", env.Recipients))
environ = append(environ, fmt.Sprintf("%s=%s", "SMTPRELAY_PEER", peerIP))
cmd := exec.Cmd{
Env: environ,
Path: *command,
}
cmd.Stdin = bytes.NewReader(env.Data) cmd.Stdin = bytes.NewReader(env.Data)
cmd.Stdout = &stdout cmd.Stdout = &stdout
cmd.Stderr = &stderr cmd.Stderr = &stderr