* inc.c -- incorporate messages from a maildrop into a folder
*
* $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.
*/
#ifdef MAILGROUP
#include <h/scansbr.h>
#include <h/signals.h>
#include <h/tws.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
#include <errno.h>
#include <signal.h>
# define KPOPminc(a) 0
#endif
+#ifndef CYRUS_SASL
+# define SASLminc(a) (a)
+#else
+# define SASLminc(a) 0
+#endif
+
static struct swit switches[] = {
#define AUDSW 0
{ "audit audit-file", 0 },
{ "snoop", -5 },
#define KPOPSW 23
{ "kpop", KPOPminc (-4) },
+#define SASLSW 24
+ { "sasl", SASLminc(-4) },
+#define SASLMECHSW 25
+ { "saslmech", SASLminc(-8) },
{ NULL, 0 }
};
int chgflag = 1, trnflag = 1;
int noisy = 1, width = 0;
int rpop, i, hghnum, msgnum;
- int kpop = 0;
+ int kpop = 0, sasl = 0;
char *cp, *maildir, *folder = NULL;
char *format = NULL, *form = NULL;
char *host = NULL, *user = NULL;
- char *audfile = NULL, *from = NULL;
+ char *audfile = NULL, *from = NULL, *saslmech = NULL;
char buf[BUFSIZ], **argp, *nfs, **arguments;
struct msgs *mp;
struct stat st, s1;
#ifdef POP
int nmsgs, nbytes, p = 0;
char *pass = NULL;
+ char *MAILHOST_env_variable;
#endif
#ifdef MHE
#ifdef HESIOD
struct hes_postoffice *po;
- char *tmphost;
#endif
/* absolutely the first thing we do is save our privileges,
argp = arguments;
#ifdef POP
-# ifdef HESIOD
/*
* Scheme is:
* use MAILHOST environment variable if present,
* If that fails, use the default (if any)
* provided by mts.conf in mts_init()
*/
- if ((tmphost = getenv("MAILHOST")) != NULL)
- pophost = tmphost;
+ if ((MAILHOST_env_variable = getenv("MAILHOST")) != NULL)
+ pophost = MAILHOST_env_variable;
+# ifdef HESIOD
else if ((po = hes_getmailhost(getusername())) != NULL &&
strcmp(po->po_type, "POP") == 0)
pophost = po->po_host;
case SNOOPSW:
snoop++;
continue;
+
+ case SASLSW:
+ sasl++;
+ continue;
+
+ case SASLMECHSW:
+ if (!(saslmech = *argp++) || *saslmech == '-')
+ adios (NULL, "missing argument to %s", argp[-2]);
+ continue;
}
}
if (*cp == '+' || *cp == '@') {
if ( strcmp( POPSERVICE, "kpop" ) == 0 ) {
kpop = 1;
}
- if (kpop || ( rpop > 0))
+ if (kpop || sasl || ( rpop > 0))
pass = getusername ();
else
ruserpass (host, &user, &pass);
/*
* initialize POP connection
*/
- if (pop_init (host, user, pass, snoop, kpop ? 1 : rpop, kpop) == NOTOK)
+ if (pop_init (host, user, pass, snoop, kpop ? 1 : rpop, kpop,
+ sasl, saslmech) == NOTOK)
adios (NULL, "%s", response);
/* Check if there are any messages */