Make the -f option optional. If not given, construct the sender
address from the username and fully qualified hostname.

This is required to interoperate with the cron applet.

Signed-off-by: Kaarle Ritvanen <[email protected]>
---
Changes since v1:
 Added missing sign-off

 mailutils/sendmail.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/mailutils/sendmail.c b/mailutils/sendmail.c
index b5aa1d1..b99c42f 100644
--- a/mailutils/sendmail.c
+++ b/mailutils/sendmail.c
@@ -199,8 +199,8 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
        G.fp0 = xfdopen_for_read(3);
 
        // parse options
-       // -v is a counter, -f is required. -H and -S are mutually exclusive, 
-a is a list
-       opt_complementary = "vv:f:w+:H--S:S--H:a::";
+       // -v is a counter, -H and -S are mutually exclusive, -a is a list
+       opt_complementary = "vv:w+:H--S:S--H:a::";
        // N.B. since -H and -S are mutually exclusive they do not interfere in 
opt_connect
        // -a is for ssmtp 
(http://downloads.openwrt.org/people/nico/man/man8/ssmtp.8.html) compatibility,
        // it is still under development.
@@ -279,7 +279,6 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
        // we should start with modern EHLO
        if (250 != smtp_checkp("EHLO %s", host, -1))
                smtp_checkp("HELO %s", host, 250);
-       free(host);
 
        // perform authentication
        if (opts & OPT_a) {
@@ -305,12 +304,11 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
        //      file descriptor (e.g. 4), or again from a secured file.
 
        // got no sender address? -> use system username as a resort
-       // N.B. we marked -f as required option!
-       //if (!G.user) {
-       //      // N.B. IMHO getenv("USER") can be way easily spoofed!
-       //      G.user = xuid2uname(getuid());
-       //      opt_from = xasprintf("%s@%s", G.user, domain);
-       //}
+       if (!G.user) G.user = xuid2uname(getuid());
+       if (!opt_from)
+               opt_from = xasprintf("%s@%s", G.user, 
xgethostbyname(host)->h_name);
+       free(host);
+
        smtp_checkp("MAIL FROM:<%s>", opt_from, 250);
 
        // process message
-- 
1.8.3.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to