* post.c -- enter messages into the mail transport system
*
* $Id$
+ *
+ * This code is Copyright (c) 2002, by the authors of nmh. See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
*/
#include <h/mh.h>
#include <h/mime.h>
#include <h/tws.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
#include <errno.h>
#include <setjmp.h>
# define uptolow(c) ((isalpha(c) && isupper (c)) ? tolower (c) : (c))
#endif
+#ifndef CYRUS_SASL
+# define SASLminc(a) (a)
+#else /* CYRUS_SASL */
+# define SASLminc(a) 0
+#endif /* CYRUS_SASL */
+
#define FCCS 10 /* max number of fccs allowed */
/* In the following array of structures, the numeric second field of the
{ "partno", -6 },
#define QUEUESW 36
{ "queued", -6 },
+#define SASLSW 37
+ { "sasl", SASLminc(-4) },
+#define SASLMECHSW 38
+ { "saslmech", SASLminc(-5) },
+#define USERSW 39
+ { "user", SASLminc(-4) },
{ NULL, 0 }
};
static int checksw = 0; /* whom -check */
static int linepos=0; /* putadr()'s position on the line */
static int nameoutput=0; /* putadr() has output header name */
+static int sasl=0; /* Use SASL auth for SMTP */
+static char *saslmech=NULL; /* Force use of particular SASL mech */
+static char *user=NULL; /* Authenticate as this user */
static unsigned msgflags = 0; /* what we've seen */
case QUEUESW:
queued++;
continue;
+
+ case SASLSW:
+ sasl++;
+ continue;
+
+ case SASLMECHSW:
+ if (!(saslmech = *argp++) || *saslmech == '-')
+ adios (NULL, "missing argument to %s", argp[-2]);
+ continue;
+
+ case USERSW:
+ if (!(user = *argp++) || *user == '-')
+ adios (NULL, "missing argument to %s", argp[-2]);
+ continue;
}
}
if (msg)
sigon ();
if (rp_isbad (retval = sm_init (clientsw, serversw, watch, verbose,
- snoop, onex, queued))
+ snoop, onex, queued, sasl, saslmech,
+ user))
|| rp_isbad (retval = sm_winit (smtpmode, from)))
die (NULL, "problem initializing server; %s", rp_string (retval));
sigon ();
if (!whomsw || checksw)
- if (rp_isbad (retval = sm_init (clientsw, serversw, 0, 0, snoop, 0, 0))
+ if (rp_isbad (retval = sm_init (clientsw, serversw, 0, 0, snoop, 0,
+ 0, 0, 0, 0))
|| rp_isbad (retval = sm_winit (smtpmode, from)))
die (NULL, "problem initializing server; %s", rp_string (retval));