X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fmts.c;h=cb11a776891bc843fce71789ef9b6fe54c1e0ddf;hb=5ccbd49adba7e6d48f4094fa6eade7a7fb8ec4cf;hp=3ffdfead5d785a467cd9977022ca036e93d8240d;hpb=e2b5453864a9343161ed2dd53527a0ea858d3c43;p=mmh diff --git a/sbr/mts.c b/sbr/mts.c index 3ffdfea..cb11a77 100644 --- a/sbr/mts.c +++ b/sbr/mts.c @@ -54,25 +54,17 @@ char *uucplfil = ""; char *mmdlm1 = "\001\001\001\001\n"; char *mmdlm2 = "\001\001\001\001\n"; -/* Cache the username and fullname of the user */ +/* Cache the username, fullname, and mailbox of the user */ static char username[BUFSIZ]; static char fullname[BUFSIZ]; - -/* Variables for username masquerading: */ - boolean draft_from_masquerading = FALSE; /* also used from post.c */ -static boolean mmailid_masquerading = FALSE; - boolean username_extension_masquerading = FALSE; /* " from addrsbr.c */ -static char* masquerade = ""; +static char localmbox[BUFSIZ]; /* * MTS specific variables */ -#if defined(SMTPMTS) static char *sm_method = "smtp"; int sm_mts = MTS_SMTP; -char *hostable = nmhetcdir(/hosts); char *sendmail = SENDMAILPATH; -#endif /* * SMTP/POP stuff @@ -114,14 +106,8 @@ static struct bind binds[] = { { "uucplfil", &uucplfil }, { "mmdelim1", &mmdlm1 }, { "mmdelim2", &mmdlm2 }, - { "masquerade", &masquerade }, - -#if defined(SMTPMTS) { "mts", &sm_method }, - { "hostable", &hostable }, { "sendmail", &sendmail }, -#endif - { "clientname", &clientname }, { "servers", &servers }, { "pophost", &pophost }, @@ -141,11 +127,10 @@ static struct bind binds[] = { void mts_init (char *name) { - NMH_UNUSED (name); - const char *cp; FILE *fp; static int inited = 0; + NMH_UNUSED (name); if (inited++ || (fp = fopen (get_mtsconf_pathname(), "r")) == NULL) return; @@ -161,16 +146,6 @@ mts_init (char *name) Everyone = atoi (everyone); - 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; - -#ifdef SMTPMTS if (strcmp(sm_method, "smtp") == 0) sm_mts = MTS_SMTP; else if (strcmp(sm_method, "sendmail") == 0) @@ -179,7 +154,6 @@ mts_init (char *name) advise(NULL, "unsupported \"mts\" value in mts.conf: %s", sm_method); sm_mts = MTS_SMTP; } -#endif } @@ -352,9 +326,35 @@ getfullname (void) /* + * Get the full local mailbox name. This is in the form: + * + * User Name + */ + +char * +getlocalmbox (void) +{ + if (username[0] == '\0') + getuserinfo(); + + if (localmbox[0] == '\0') { + char *cp; + + if ((cp = context_find("Local-Mailbox")) != NULL) { + strncpy(localmbox, cp, sizeof(localmbox)); + } else { + snprintf(localmbox, sizeof(localmbox), "%s <%s@%s>", fullname, + username, LocalName(0)); + } + + localmbox[sizeof(localmbox) - 1] = '\0'; + } + + return localmbox; +} + +/* * 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 @@ -377,52 +377,26 @@ 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). */ - 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; + field, like phone number. */ + for (cp = fullname; *np != '\0' && *np != ','; *cp++ = *np++) + continue; *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)); + strncpy (username, pw->pw_name, sizeof(username)); /* The $SIGNATURE environment variable overrides the GECOS field's idea of - your real name. */ + your real name. If SIGNATURE isn't set, use the Signature profile + setting if it exists. */ if ((cp = getenv ("SIGNATURE")) && *cp) strncpy (fullname, cp, sizeof(fullname)); + else if ((cp = context_find("Signature"))) + strncpy (fullname, cp, sizeof(fullname)); - if (strchr(fullname, '.')) { /* quote any .'s */ - char tmp[BUFSIZ]; + fullname[sizeof(fullname) - 1] = '\0'; - /* should quote "'s too */ - snprintf (tmp, sizeof(tmp), "\"%s\"", fullname); - strncpy (fullname, tmp, sizeof(fullname)); - } + escape_display_name(fullname, sizeof(fullname)); + + localmbox[0] = '\0'; return; }