* Merged mts/sendmail functionality into mts/smtp; switching between
[mmh] / uip / post.c
index 66d978c..a866703 100644 (file)
@@ -13,7 +13,7 @@
 #include <h/dropsbr.h>
 #include <h/mime.h>
 
-#include <zotnet/tws/tws.h>
+#include <h/tws.h>
 #include <zotnet/mts/mts.h>
 
 #include <errno.h>
 # include <mts/mmdf/mmdf.h>
 #endif
 
-/*
- * Currently smtp and sendmail use
- * the same interface for posting.
- */
 #ifdef SMTPMTS
-# define SENDMTS
-#endif
-
-#ifdef SENDMTS
 # include <mts/smtp/smtp.h>
 #endif
 
@@ -267,14 +259,14 @@ static char *submitmode = "m";            /* deliver to mailbox only    */
 static char submitopts[6] = "vl";      /* initial options for submit */
 #endif /* MMDFMTS */
 
-#ifdef SENDMTS
+#ifdef SMTPMTS
 static int snoop      = 0;
 static int smtpmode   = S_MAIL;
 static char *clientsw = NULL;
 static char *serversw = NULL;
 
 extern struct smtp sm_reply;
-#endif /* SENDMTS */
+#endif /* SMTPMTS */
 
 static char prefix[] = "----- =_aaaaaaaaaa";
 
@@ -283,7 +275,7 @@ static char *fill_in = NULL;
 static char *partno = NULL;
 static int queued = 0;
 
-extern int  MMailids;
+extern boolean  draft_from_masquerading;  /* defined in mts.c */
 
 /*
  * static prototypes
@@ -475,7 +467,7 @@ main (int argc, char **argv)
                        adios (NULL, "missing argument to %s", argp[-2]);
                    continue;
 
-#ifndef        SENDMTS
+#ifndef        SMTPMTS
                case CLIESW:
                case SERVSW:
                    if (!(cp = *argp++) || *cp == '-')
@@ -484,7 +476,7 @@ main (int argc, char **argv)
 
                case SNOOPSW:
                    continue;
-#else /* SENDMTS */
+#else /* SMTPMTS */
                case MAILSW:
                    smtpmode = S_MAIL;
                    continue;
@@ -508,7 +500,7 @@ main (int argc, char **argv)
                case SNOOPSW:
                    snoop++;
                    continue;
-#endif /* SENDMTS */
+#endif /* SMTPMTS */
 
                case FILLSW:
                    if (!(fill_in = *argp++) || *fill_in == '-')
@@ -768,15 +760,16 @@ putfmt (char *name, char *str, FILE *out)
                    continue;
                }
 
-               if (MMailids && ((msgstate == RESENT)
-                                ? (hdr->set & MRFM)
-                                : (hdr->set & MFRM)))
+               if (draft_from_masquerading && ((msgstate == RESENT)
+                                               ? (hdr->set & MRFM)
+                                               : (hdr->set & MFRM)))
                    /* The user manually specified a [Resent-]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 [Resent-]From: (after alias substitution, and
-                      without the GECOS full name or angle brackets) as the
-                      envelope From:. */
+                      their draft and the "masquerade:" line in mts.conf
+                      doesn't contain "draft_from", so we'll set things up to
+                      use the actual email address embedded in the draft
+                      [Resent-]From: (after alias substitution, and without the
+                      GECOS full name or angle brackets) as the envelope
+                      From:. */
                    strncpy(from, auxformat(mp, 0), sizeof(from) - 1);
 
                if (hdr->flags & HBCC)
@@ -799,14 +792,16 @@ putfmt (char *name, char *str, FILE *out)
        }
        else {
            /* Address includes a host, so no alias substitution is needed. */
-           if (MMailids && ((msgstate == RESENT)
-                            ? (hdr->set & MRFM)
-                            : (hdr->set & MFRM)))
-               /* The user manually specified a [Resent-]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
-                  [Resent-]From: (without the GECOS full name or angle
-                  brackets) as the envelope From:. */
+           if (draft_from_masquerading && ((msgstate == RESENT)
+                                           ? (hdr->set & MRFM)
+                                           : (hdr->set & MFRM)))
+               /* The user manually specified a [Resent-]From: address in
+                  their draft and the "masquerade:" line in mts.conf
+                  doesn't contain "draft_from", so we'll set things up to
+                  use the actual email address embedded in the draft
+                  [Resent-]From: (after alias substitution, and without the
+                  GECOS full name or angle brackets) as the envelope
+                  From:. */
                strncpy(from, auxformat(mp, 0), sizeof(from) - 1);
 
            if (hdr->flags & HBCC)
@@ -891,10 +886,11 @@ finish_headers (FILE *out)
                        (int) getpid (), (long) tclock, LocalName ());
            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). */
+               if (!draft_from_masquerading)
+                   /* mts.conf didn't contain "masquerade:[...]draft_from[...]"
+                      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
@@ -929,11 +925,11 @@ finish_headers (FILE *out)
                        (int) getpid (), (long) tclock, LocalName ());
            if (msgflags & MRFM) {
                /* There was already a Resent-From: in 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
-                      Resent-Sender: header (and use it as the envelope From:
-                      later). */
+               if (!draft_from_masquerading)
+                   /* mts.conf didn't contain "masquerade:[...]draft_from[...]"
+                      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, "Resent-Sender: %s\n", from);
            }
            else
@@ -1374,10 +1370,10 @@ do_addresses (int bccque, int talk)
        die (NULL, "problem ending addresses [%s]\n", rp_valstr (retval));
 #endif /* MMDFMTS */
 
-#ifdef SENDMTS
+#ifdef SMTPMTS
     if (rp_isbad (retval = sm_waend ()))
        die (NULL, "problem ending addresses; %s", rp_string (retval));
-#endif /* SENDMTS */
+#endif /* SMTPMTS */
 }
 
 
@@ -1390,7 +1386,7 @@ do_addresses (int bccque, int talk)
  * SENDMAIL/SMTP routines
  */
 
-#ifdef SENDMTS
+#ifdef SMTPMTS
 
 static void
 post (char *file, int bccque, int talk)
@@ -1573,7 +1569,7 @@ do_text (char *file, int fd)
     }
 }
 
-#endif /* SENDMTS */
+#endif /* SMTPMTS */
 
 /*
  * MMDF routines
@@ -1866,10 +1862,10 @@ sigser (int i)
        mm_end (NOTOK);
 #endif /* MMDFMTS */
 
-#ifdef SENDMTS
+#ifdef SMTPMTS
     if (!whomsw || checksw)
        sm_end (NOTOK);
-#endif /* SENDMTS */
+#endif /* SMTPMTS */
 
     done (1);
 }
@@ -1990,10 +1986,10 @@ die (char *what, char *fmt, ...)
        mm_end (NOTOK);
 #endif /* MMDFMTS */
 
-#ifdef SENDMTS
+#ifdef SMTPMTS
     if (!whomsw || checksw)
        sm_end (NOTOK);
-#endif /* SENDMTS */
+#endif /* SMTPMTS */
 
     va_start(ap, fmt);
     advertise (what, NULL, fmt, ap);