#include <h/mh.h>
#include <fcntl.h>
-#include <errno.h>
-#include <signal.h>
#ifndef CYRUS_SASL
X("help", 0, HELPSW) \
X("dashstuffing", -12, BITSTUFFSW) \
X("nodashstuffing", -14, NBITSTUFFSW) \
- X("mail", -4, MAILSW) \
- X("saml", -4, SAMLSW) \
- X("send", -4, SENDSW) \
- X("soml", -4, SOMLSW) \
X("client host", -6, CLIESW) \
X("server host", 6, SERVSW) \
X("snoop", 5, SNOOPSW) \
X("attachformat", 7, ATTACHFORMATSW) \
X("port server-port-name/number", 4, PORTSW) \
X("tls", TLSminc(-3), TLSSW) \
+ X("initialtls", TLSminc(-10), INITTLSSW) \
X("notls", TLSminc(-5), NTLSSW) \
X("mts smtp|sendmail/smtp|sendmail/pipe", 2, MTSSW) \
X("messageid localname|random", 2, MESSAGEIDSW) \
int
main (int argc, char **argv)
{
- int msgp = 0, distsw = 0, vecp = 1;
+ int msgp = 0, distsw = 0, vecp;
int isdf = 0, mime = 0;
int msgnum, status;
char *cp, *dfolder = NULL, *maildir = NULL;
- char buf[BUFSIZ], **ap, **argp, **arguments;
- char *msgs[MAXARGS], *vec[MAXARGS];
+ char buf[BUFSIZ], **ap, **argp, **arguments, *program;
+ char *msgs[MAXARGS], **vec;
struct msgs *mp;
struct stat st;
char *attach = NMH_ATTACH_HEADER; /* header field name for attachments */
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
+ vec = argsplit(postproc, &program, &vecp);
+
vec[vecp++] = "-library";
vec[vecp++] = getcpy (m_maildir (""));
if ((cp = context_find ("fileproc"))) {
- vec[vecp++] = "-fileproc";
- vec[vecp++] = cp;
+ vec[vecp++] = "-fileproc";
+ vec[vecp++] = cp;
}
if ((cp = context_find ("mhlproc"))) {
- vec[vecp++] = "-mhlproc";
- vec[vecp++] = cp;
+ vec[vecp++] = "-mhlproc";
+ vec[vecp++] = cp;
+ }
+
+ if ((cp = context_find ("credentials"))) {
+ /* post doesn't read context so need to pass credentials. */
+ vec[vecp++] = "-credentials";
+ vec[vecp++] = cp;
}
while ((cp = *argp++)) {
case NMSGDSW:
case WATCSW:
case NWATCSW:
- case MAILSW:
- case SAMLSW:
- case SENDSW:
- case SOMLSW:
case SNOOPSW:
case SASLSW:
case NOSASLSW:
case TLSSW:
+ case INITTLSSW:
case NTLSSW:
vec[vecp++] = --cp;
continue;
adios (maildir, "unable to change directory to");
/* read folder and create message structure */
- if (!(mp = folder_read (dfolder)))
+ if (!(mp = folder_read (dfolder, 1)))
adios (NULL, "unable to read folder %s", dfolder);
/* check for empty folder */
push ();
status = 0;
- vec[0] = r1bindex (postproc, '/');
closefds (3);
for (msgnum = 0; msgnum < msgp; msgnum++) {
- switch (sendsbr (vec, vecp, msgs[msgnum], &st, 1, attach,
+ switch (sendsbr (vec, vecp, program, msgs[msgnum], &st, 1, attach,
attachformat)) {
case DONE:
done (++status);