]> diplodocus.org Git - nmh/blobdiff - uip/post.c
Doubled size of buffers used by m_getfld(), scan, and fmttest to
[nmh] / uip / post.c
index 5d227c40a959b378e355df0adc3faf39edf3f474..16121359ee711178ea1bb08d50b55dafd199f129 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) \
@@ -201,8 +200,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?        */
 
@@ -238,12 +237,9 @@ static int snoop      = 0;
 static char *clientsw = NULL;
 static char *serversw = NULL;
 
-extern struct smtp sm_reply;
-
 static char prefix[] = "----- =_aaaaaaaaaa";
 
 static char *partno = NULL;
-static int queued = 0;
 
 /*
  * static prototypes
@@ -424,10 +420,6 @@ main (int argc, char **argv)
                        adios (NULL, "missing argument to %s", argp[-2]);
                    continue;
 
-               case QUEUESW:
-                   queued++;
-                   continue;
-               
                case SASLSW:
                    sasl++;
                    continue;
@@ -610,6 +602,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. */
@@ -630,13 +637,13 @@ main (int argc, char **argv)
            post (tmpfil, 0, verbose, envelope);
        }
        post (bccfil, 1, verbose, envelope);
-       unlink (bccfil);
+       (void) m_unlink (bccfil);
     } else {
        post (tmpfil, 0, isatty (1), envelope);
     }
 
     p_refile (tmpfil);
-    unlink (tmpfil);
+    (void) m_unlink (tmpfil);
 
     if (verbose) {
        if (partno)
@@ -1528,8 +1535,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));
 
@@ -1568,8 +1575,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));
 
@@ -1705,9 +1712,9 @@ sigser (int i)
 {
     NMH_UNUSED (i);
 
-    unlink (tmpfil);
+    (void) m_unlink (tmpfil);
     if (msgflags & MINV)
-       unlink (bccfil);
+       (void) m_unlink (bccfil);
 
     if (!whomsw || checksw)
        sm_end (NOTOK);
@@ -1829,9 +1836,9 @@ die (char *what, char *fmt, ...)
 {
     va_list ap;
 
-    unlink (tmpfil);
+    (void) m_unlink (tmpfil);
     if (msgflags & MINV)
-       unlink (bccfil);
+       (void) m_unlink (bccfil);
 
     if (!whomsw || checksw)
        sm_end (NOTOK);