]> git.ipfire.org Git - people/ms/dma.git/commitdiff
set_from: always fully qualify envelope from
authorSimon Schubert <2@0x2c.org>
Sat, 6 Jul 2013 17:22:44 +0000 (19:22 +0200)
committerSimon Schubert <2@0x2c.org>
Sat, 6 Jul 2013 17:26:08 +0000 (19:26 +0200)
Debian-bug: #697871

dma.c

diff --git a/dma.c b/dma.c
index cdeb5d93992750be95e855ecb8a3bddabfd9ccfa..63bc850a13210dd3d695762a5d90a65b75607310 100644 (file)
--- a/dma.c
+++ b/dma.c
@@ -95,25 +95,31 @@ sighup_handler(int signo)
 static char *
 set_from(struct queue *queue, const char *osender)
 {
+       const char *addr;
        char *sender;
 
        if (osender) {
-               sender = strdup(osender);
-               if (sender == NULL)
-                       return (NULL);
+               addr = osender;
        } else if (getenv("EMAIL") != NULL) {
-               sender = strdup(getenv("EMAIL"));
-               if (sender == NULL)
-                       return (NULL);
+               addr = getenv("EMAIL");
        } else {
-               const char *from_user = username;
+               if (config.masquerade_user)
+                       addr = config.masquerade_user;
+               else
+                       addr = username;
+       }
+
+       if (!strchr(addr, '@')) {
                const char *from_host = hostname();
 
-               if (config.masquerade_user)
-                       from_user = config.masquerade_user;
                if (config.masquerade_host)
                        from_host = config.masquerade_host;
-               if (asprintf(&sender, "%s@%s", from_user, from_host) <= 0)
+
+               if (asprintf(&sender, "%s@%s", addr, from_host) <= 0)
+                       return (NULL);
+       } else {
+               sender = strdup(addr);
+               if (sender == NULL)
                        return (NULL);
        }