From 86d5a6ec30ceea44e9459394d2e6403642cdd158 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 4 Feb 2013 02:43:52 +0100 Subject: [PATCH] make the qmail 'sendmail' binary behave like sendmail's for -f sendmail-flagf --- sendmail.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/sendmail.c b/sendmail.c index 46d0e4b..b62fef8 100644 --- a/sendmail.c +++ b/sendmail.c @@ -45,6 +45,38 @@ void mailq() _exit(111); } +void do_sender(s) +const char *s; +{ + char *x; + int n; + int a; + int i; + + env_unset("QMAILNAME"); + env_unset("MAILNAME"); + env_unset("NAME"); + env_unset("QMAILHOST"); + env_unset("MAILHOST"); + + n = str_len(s); + a = str_rchr(s, '@'); + if (a == n) + { + env_put2("QMAILUSER", s); + return; + } + env_put2("QMAILHOST", s + a + 1); + + x = (char *) alloc((a + 1) * sizeof(char)); + if (!x) nomem(); + for (i = 0; i < a; i++) + x[i] = s[i]; + x[i] = 0; + env_put2("QMAILUSER", x); + alloc_free(x); +} + int flagh; char *sender; @@ -118,6 +150,7 @@ char **argv; if (sender) { *arg++ = "-f"; *arg++ = sender; + do_sender(sender); } *arg++ = "--"; for (i = 0;i < argc;++i) *arg++ = argv[i]; -- cgit v1.2.3