From cc064e497eb08f666775da2aebd553ca1226efef Mon Sep 17 00:00:00 2001 From: Bernhard Froehlich Date: Fri, 20 Jan 2023 09:31:09 +0000 Subject: [PATCH] command: Add some environment variables when calling external cmd --- main.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 24ed1db..2829788 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "bytes" "crypto/tls" + "fmt" "net" "net/textproto" "os" @@ -176,7 +177,16 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error { var stdout 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.Stdout = &stdout cmd.Stderr = &stderr