]> diplodocus.org Git - nmh/blobdiff - uip/post.c
If format_datetime() returns null, store a copy of node->value on c->c_text
[nmh] / uip / post.c
index 8cfcf651612fe9ab3484491e8aad1da7c17b6ad4..65526d231d397b587fae7287caea2a22857d5a02 100644 (file)
     X("server host", 6, SERVSW) /* specify alternate SMTP server */ \
     X("snoop", -5, SNOOPSW) /* snoop the SMTP transaction */ \
     X("partno", -6, PARTSW) \
-    X("queued", -6, QUEUESW) \
     X("sasl", SASLminc(-4), SASLSW) \
     X("nosasl", SASLminc(-6), NOSASLSW) \
     X("saslmaxssf", SASLminc(-10), SASLMXSSFSW) \
     X("saslmech", SASLminc(-5), SASLMECHSW) \
     X("user", SASLminc(-4), USERSW) \
-    X("port server port name/number", 4, PORTSW) \
+    X("port server submission port name/number", 4, PORTSW) \
     X("tls", TLSminc(-3), TLSSW) \
     X("initialtls", TLSminc(-10), INITTLSSW) \
     X("notls", TLSminc(-5), NTLSSW) \
     X("fileproc", -4, FILEPROCSW) \
     X("mhlproc", -3, MHLPROCSW) \
+    X("sendmail program", 0, MTSSM) \
     X("mts smtp|sendmail/smtp|sendmail/pipe", 2, MTSSW) \
     X("credentials legacy|file:filename", 0, CREDENTIALSSW) \
     X("messageid localname|random", 2, MESSAGEIDSW) \
@@ -201,8 +201,8 @@ static int sasl=0;          /* Use SASL auth for SMTP                */
 static int saslssf=-1;         /* Our maximum SSF for SASL              */
 static char *saslmech=NULL;    /* Force use of particular SASL mech     */
 static char *user=NULL;                /* Authenticate as this user             */
-static char *port="smtp";      /* Name of server port for SMTP          */
-static int tls=0;              /* Use TLS for encryption                */
+static char *port="submission";        /* Name of server port for SMTP submission */
+static int tls=-1;             /* Use TLS for encryption                */
 static int fromcount=0;                /* Count of addresses on From: header    */
 static int seensender=0;       /* Have we seen a Sender: header?        */
 
@@ -241,7 +241,6 @@ static char *serversw = NULL;
 static char prefix[] = "----- =_aaaaaaaaaa";
 
 static char *partno = NULL;
-static int queued = 0;
 
 /*
  * static prototypes
@@ -422,10 +421,6 @@ main (int argc, char **argv)
                        adios (NULL, "missing argument to %s", argp[-2]);
                    continue;
 
-               case QUEUESW:
-                   queued++;
-                   continue;
-               
                case SASLSW:
                    sasl++;
                    continue;
@@ -479,6 +474,12 @@ main (int argc, char **argv)
                    mhlproc = cp;
                    continue;
 
+               case MTSSM:
+                   if (!(cp = *argp++) || *cp == '-')
+                       adios (NULL, "missing argument to %s", argp[-2]);
+                    sendmail = cp;
+                   continue;
+
                case MTSSW:
                    if (!(cp = *argp++) || *cp == '-')
                        adios (NULL, "missing argument to %s", argp[-2]);
@@ -608,6 +609,21 @@ main (int argc, char **argv)
        envelope = from;
     }
 
+    if (tls == -1) {
+#ifdef TLS_SUPPORT
+       /*
+        * The user didn't specify any of the tls switches.  Try to
+        * help them by implying -initialtls if they're using port 465
+        * (smtps, until IANA revoked that registration in 1998).
+        */
+       tls = ! strcmp (port, "465")  ||  ! strcasecmp (port, "smtps")
+           ?  2
+           :  0;
+#else  /* ! TLS_SUPPORT */
+       tls = 0;
+#endif /* ! TLS_SUPPORT */
+    }
+
     /* If we are doing a "whom" check */
     if (whomsw) {
        /* This won't work with MTS_SENDMAIL_PIPE. */
@@ -705,7 +721,7 @@ putfmt (char *name, char *str, FILE *out)
     if (hdr->flags & HFCC) {
        if ((cp = strrchr(str, '\n')))
            *cp = 0;
-       for (cp = pp = str; (cp = strchr(pp, ',')); pp = cp) {
+       for (pp = str; (cp = strchr(pp, ',')); pp = cp) {
            *cp++ = 0;
            insert_fcc (hdr, pp);
        }
@@ -1526,8 +1542,8 @@ post (char *file, int bccque, int talk, char *envelope)
        }
     } else {
         if (rp_isbad (retval = sm_init (clientsw, serversw, port, watch,
-                                        verbose, snoop, queued, sasl,
-                                        saslssf, saslmech, user, tls))  ||
+                                        verbose, snoop, sasl, saslssf,
+                                       saslmech, user, tls))  ||
             rp_isbad (retval = sm_winit (envelope)))
            die (NULL, "problem initializing server; %s", rp_string (retval));
 
@@ -1566,8 +1582,8 @@ verify_all_addresses (int talk, char *envelope)
 
     if (!whomsw || checksw)
        if (rp_isbad (retval = sm_init (clientsw, serversw, port, watch,
-                                       verbose, snoop, queued, sasl,
-                                       saslssf, saslmech, user, tls))
+                                       verbose, snoop, sasl, saslssf,
+                                       saslmech, user, tls))
                || rp_isbad (retval = sm_winit (envelope)))
            die (NULL, "problem initializing server; %s", rp_string (retval));