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.
#define FCCS 10 /* max number of fccs allowed */
#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 },
static struct swit switches[] = {
#define ALIASW 0
{ "alias aliasfile", 0 },
#define VERSIONSW 20
{ "version", 0 },
#define HELPSW 21
#define VERSIONSW 20
{ "version", 0 },
#define HELPSW 21
#define BITSTUFFSW 22
{ "dashstuffing", -12 }, /* should we dashstuff BCC messages? */
#define NBITSTUFFSW 23
#define BITSTUFFSW 22
{ "dashstuffing", -12 }, /* should we dashstuff BCC messages? */
#define NBITSTUFFSW 23
static char *partno = NULL;
static int queued = 0;
static char *partno = NULL;
static int queued = 0;
/*
* static prototypes
*/
/*
* static prototypes
*/
tmpaddrs.m_next = NULL;
for (count = 0; (cp = getname (str)); count++)
if ((mp = getm (cp, NULL, 0, AD_HOST, NULL))) {
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
if (tmpaddrs.m_next)
np->m_next = mp;
else
if (msgid)
fprintf (out, "Message-ID: <%d.%ld@%s>\n",
(int) getpid (), (long) tclock, LocalName ());
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);
+ }
+ /* Construct a From: header. */
fprintf (out, "From: %s\n", signature);
if (whomsw)
break;
fprintf (out, "From: %s\n", signature);
if (whomsw)
break;