From 0836c8000ccb34b59410ef1c15b1b7feac70ce5f Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Fri, 3 Feb 2012 18:07:11 +0100 Subject: [PATCH] Removed mmailid masquerading. That's an MTA's task, but mmh is an MUA. --- INSTALL | 6 +-- configure.ac | 6 +-- etc/mts.conf.in | 2 +- man/mh-tailor.man5 | 30 ++------------- sbr/mts.c | 105 +++++++++++----------------------------------------- 5 files changed, 31 insertions(+), 118 deletions(-) diff --git a/INSTALL b/INSTALL index 7d86fe3..7049a40 100644 --- a/INSTALL +++ b/INSTALL @@ -149,15 +149,15 @@ Options for configure --enable-debug Enable debugging support. ---enable-masquerade[='draft_from mmailid username_extension'] +--enable-masquerade[='draft_from username_extension'] If this option is disabled, the mts.conf file will contain the line "masquerade: " (with no value), which may be manually edited later. You may find it convenient to specify a value at configure-time, however, so that each time mmh is reinstalled, the right value will be there. By default, it is enabled. - The above usage shows the default, with all three masquerade - options being specified. Any subset of the three may be + The above usage shows the default, with all two masquerade + options being specified. Any subset of the two may be specified. See the mh-tailor(5) man page for full documentation of "masquerade:". diff --git a/configure.ac b/configure.ac index 3de6bf6..e132f1f 100644 --- a/configure.ac +++ b/configure.ac @@ -47,13 +47,13 @@ fi dnl Allow users to send email from addresses other than their default? AC_ARG_ENABLE(masquerade, - AS_HELP_STRING([--enable-masquerade='draft_from mmailid username_extension'], + AS_HELP_STRING([--enable-masquerade='draft_from username_extension'], [enable up to 3 types of address masquerading]), [if test x"$enable_masquerade" = x"yes"; then - masquerade="draft_from mmailid username_extension" + masquerade="draft_from username_extension" else masquerade="$enable_masquerade" - fi], [masquerade="draft_from mmailid username_extension"]) + fi], [masquerade="draft_from username_extension"]) AC_SUBST(masquerade)dnl dnl Do you want mhe support? diff --git a/etc/mts.conf.in b/etc/mts.conf.in index 65b9d1d..d4d4a0a 100644 --- a/etc/mts.conf.in +++ b/etc/mts.conf.in @@ -6,5 +6,5 @@ # # The following directive allows email address masquerading. The string -# "draft_from mmailid username_extension" will allow all three types. +# "draft_from username_extension" will allow all three types. masquerade: %masquerade% diff --git a/man/mh-tailor.man5 b/man/mh-tailor.man5 index 7bb331b..e4c2d1e 100644 --- a/man/mh-tailor.man5 +++ b/man/mh-tailor.man5 @@ -33,35 +33,11 @@ local copy of .PP .BR masquerade: .RS 5 -This directive controls three different types of email address masquerading. -The three possible values, which may be specified in any combination on the -line, separated by spaces, are \*(lqdraft_from\*(rq, \*(lqmmailid\*(rq, and +This directive controls two different types of email address masquerading. +The two possible values, which may be specified in any combination on the +line, separated by spaces, are \*(lqdraft_from\*(rq and \*(lqusername_extension\*(rq. .PP -\*(lqmmailid\*(rq was the only type of masquerading in the original MH package, and -apparently stands for \*(lqmasquerade mail identification\*(rq. This type of -masquerading keys off of the GECOS field of the passwd file. When enabled, -.B nmh -will check if the user's pw_gecos field in the passwd file is of the -form: -.PP -.RS 5 -Full Name -.RE -.PP -If it is, the internal -.B nmh -routines that find the username and full name -of that user will return \*(lqfakeusername\*(rq and \*(lqFull Name\*(rq respectively. This is -useful if you want the messages you send to always appear to come from the name -of an MTA alias rather than your actual account name. For instance, many -organizations set up \*(lqFirst.Last\*(rq sendmail aliases for all users. If this is -the case, the GECOS field for each user should look like: -.PP -.RS 5 -First [Middle] Last -.RE -.PP \*(lqusername_extension\*(rq, when specified on the \*(lqmasquerade:\*(rq line, allows a second type of username masquerading. If the user sets the .B $USERNAME_EXTENSION diff --git a/sbr/mts.c b/sbr/mts.c index ced0cf7..89ed1b6 100644 --- a/sbr/mts.c +++ b/sbr/mts.c @@ -43,7 +43,6 @@ static char fullname[BUFSIZ]; /* Variables for username masquerading: */ boolean draft_from_masquerading = FALSE; -static boolean mmailid_masquerading = FALSE; boolean username_extension_masquerading = FALSE; /* " from addrsbr.c */ static char* masquerade = ""; @@ -96,9 +95,6 @@ mts_init(char *name) if (strstr(masquerade, "draft_from") != NULL) draft_from_masquerading = TRUE; - if (strstr(masquerade, "mmailid") != NULL) - mmailid_masquerading = TRUE; - if (strstr(masquerade, "username_extension") != NULL) username_extension_masquerading = TRUE; } @@ -261,10 +257,7 @@ getfullname(void) /* ** Find the user's username and full name, and cache them. -** Also, handle "mmailid" username masquerading controlled from the GECOS field -** of the passwd file. */ - static void getuserinfo(void) { @@ -286,91 +279,35 @@ getuserinfo(void) /* ** Get the user's real name from the GECOS field. Stop once ** we hit a ',', which some OSes use to separate other 'finger' - ** information in the GECOS field, like phone number. Also, if - ** mmailid masquerading is turned on due to "mmailid" appearing - ** on the "masquerade:" line of mts.conf, stop if we hit a '<' - ** (which should precede any ','s). + ** information in the GECOS field, like phone number. */ + for (cp = fullname; *np != '\0' && *np != ',';) { #ifndef BSD42 - if (mmailid_masquerading) - /* Stop at ',' or '<'. */ - for (cp = fullname; *np != '\0' && *np != ',' && *np != '<'; - *cp++ = *np++) - continue; - else - /* - ** Allow '<' as a legal character of the user's name. - ** This code is basically a duplicate of the code above the - ** "else" -- we don't collapse it down to one copy and put - ** the mmailid_masquerading check inside the loop with "(x - ** ? y : z)" because that's inefficient and the value'll - ** never change while it's in there. - */ - for (cp = fullname; *np != '\0' && *np != ','; *cp++ = *np++) - continue; + *cp++ = *np++; #else /* BSD42 */ - /* - ** On BSD(-derived) systems, the system utilities that deal with - ** the GECOS field (finger, mail, sendmail, etc.) translate - ** any '&' character in it to the login name, with the first - ** letter capitalized. So, for instance, fingering a user "bob" - ** with the GECOS field "& Jones" would reveal him to be "In real - ** life: Bob Jones". Surprisingly, though, the OS doesn't do the - ** translation for you, so we have to do it manually here. - */ - if (mmailid_masquerading) - /* Stop at ',' or '<'. */ - for (cp = fullname; - *np != '\0' && *np != ',' && *np != '<';) { - if (*np == '&') { /* blech! */ - strcpy(cp, pw->pw_name); - *cp = toupper(*cp); - while (*cp) - cp++; - np++; - } else { - *cp++ = *np++; - } - } - else /* - ** Allow '<' as a legal character of the user's name. - ** This code is basically a duplicate of the code above the - ** "else" -- we don't collapse it down to one copy and put - ** the mmailid_masquerading check inside the loop with "(x - ** ? y : z)" because that's inefficient and the value'll - ** never change while it's in there. + ** On BSD(-derived) systems, the system utilities that + ** deal with the GECOS field (finger, mail, sendmail, + ** etc.) translate any '&' character in it to the login name, + ** with the first letter capitalized. So, for instance, + ** fingering a user "bob" with the GECOS field "& Jones" + ** would reveal him to be "In real life: Bob Jones". + ** Surprisingly, though, the OS doesn't do the translation + ** for you, so we have to do it manually here. */ - for (cp = fullname; *np != '\0' && *np != ',';) { - if (*np == '&') { /* blech! */ - strcpy(cp, pw->pw_name); - *cp = toupper(*cp); - while (*cp) - cp++; - np++; - } else { - *cp++ = *np++; - } + if (*np == '&') { /* blech! */ + strcpy(cp, pw->pw_name); + *cp = toupper(*cp); + while (*cp) + cp++; + np++; + } else { + *cp++ = *np++; } #endif /* BSD42 */ - *cp = '\0'; - - if (mmailid_masquerading) { - /* - ** Do mmailid processing. The GECOS field should have - ** the form "Full Name ". For instance, - ** "Dan Harkless ". Naturally, you'll want - ** your MTA to have an alias (e.g. in /etc/aliases) from - ** "fakeusername" to your account name. - */ - if (*np) - np++; - for (cp = username; *np && *np != '>'; *cp++ = *np++) - continue; - *cp = '\0'; } - if (!mmailid_masquerading || *np == '\0') - strncpy(username, pw->pw_name, sizeof(username)); + *cp = '\0'; + strncpy(username, pw->pw_name, sizeof(username)); /* ** The $SIGNATURE environment variable overrides the GECOS field's -- 1.7.10.4