From: Dan Harkless Date: Wed, 26 Jan 2000 05:40:30 +0000 (+0000) Subject: Implemented a new type of username masquerading, which is also activated by X-Git-Tag: nmh-1_0~98 X-Git-Url: http://git.marmaro.de/?p=mmh;a=commitdiff_plain;h=e804a366f5091e90f1c0971e2b7546df69f1315a Implemented a new type of username masquerading, which is also activated by setting mmailid to non-zero in mts.conf. The new type is based on the From: header in the message draft rather than the GECOS field of the passwd file like the old type. With mmailid turned off, when a user specifies a custom From: header in a draft, it'll be used, but the user's real address will be revealed in the SMTP envelope From: and in the Sender: header. With mmailid on, this revelation is disabled. Also copied to here my new comment from mh.h explaining (if I understand it correctly) the functionality of struct swit's minchars field. Also, changed the minchars for "help" from 4 to 0. It doesn't make sense to use a positive integer that's the exact length of the option. That'll make it print out like "-(help)". The parentheses are supposed to go around the minimum part of the option you need to specify when abbreviating it. Perhaps someone thought it would be cute to put "help" in parentheses to imply that you know about it already as you just specified it be seeing the current output, but I think this "overloading" of the meaning of the parentheses is awkward. I need to go around and change "help" to 0 everywhere, but it's getting too late to do it tonight. Also added some other explanatory comments to existing code. --- diff --git a/uip/post.c b/uip/post.c index a1cc05f..a66e241 100644 --- a/uip/post.c +++ b/uip/post.c @@ -54,6 +54,13 @@ #define FCCS 10 /* max number of fccs allowed */ +/* In the following array of structures, the numeric second field of the + structures (minchars) is apparently used like this: + + -# : Switch can be abbreviated to # characters; switch hidden in -help. + 0 : Switch can't be abbreviated; switch shown in -help. + # : Switch can be abbreviated to # characters; switch shown in -help. */ + static struct swit switches[] = { #define ALIASW 0 { "alias aliasfile", 0 }, @@ -98,7 +105,7 @@ static struct swit switches[] = { #define VERSIONSW 20 { "version", 0 }, #define HELPSW 21 - { "help", 4 }, + { "help", 0 }, #define BITSTUFFSW 22 { "dashstuffing", -12 }, /* should we dashstuff BCC messages? */ #define NBITSTUFFSW 23 @@ -276,6 +283,8 @@ static char *fill_in = NULL; static char *partno = NULL; static int queued = 0; +extern int MMailids; + /* * static prototypes */ @@ -717,6 +726,14 @@ putfmt (char *name, char *str, FILE *out) tmpaddrs.m_next = NULL; for (count = 0; (cp = getname (str)); count++) if ((mp = getm (cp, NULL, 0, AD_HOST, NULL))) { + if (MMailids && (hdr->set & MFRM)) + /* The user manually specified a From: address in their draft + and mts.conf turned on "mmailid", so we'll set things up to + use the actual email address embedded in the draft From: + (without the GECOS full name or angle brackets) as the + envelope From:. */ + strncpy(from, auxformat(mp, 0), sizeof(from) - 1); + if (tmpaddrs.m_next) np->m_next = mp; else @@ -856,9 +873,16 @@ finish_headers (FILE *out) if (msgid) fprintf (out, "Message-ID: <%d.%ld@%s>\n", (int) getpid (), (long) tclock, LocalName ()); - if (msgflags & MFRM) - fprintf (out, "Sender: %s\n", from); + if (msgflags & MFRM) { + /* There was already a From: in the draft. Don't add one. */ + if (!MMailids) + /* mts.conf didn't turn on mmailid, so we'll reveal the + user's actual account@thismachine address in a Sender: + header (and use it as the envelope From: later). */ + fprintf (out, "Sender: %s\n", from); + } else + /* Construct a From: header. */ fprintf (out, "From: %s\n", signature); if (whomsw) break;