/* GNU mailutils - a suite of utilities for electronic mail Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #if defined(HAVE_CONFIG_H) # include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "getopt.h" #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYSEXITS_H # include #else # define EX_OK 0 /* successful termination */ # define EX__BASE 64 /* base value for error messages */ # define EX_USAGE 64 /* command line usage error */ # define EX_DATAERR 65 /* data format error */ # define EX_NOINPUT 66 /* cannot open input */ # define EX_NOUSER 67 /* addressee unknown */ # define EX_NOHOST 68 /* host name unknown */ # define EX_UNAVAILABLE 69 /* service unavailable */ # define EX_SOFTWARE 70 /* internal software error */ # define EX_OSERR 71 /* system error (e.g., can't fork) */ # define EX_OSFILE 72 /* critical OS file missing */ # define EX_CANTCREAT 73 /* can't create (user) output file */ # define EX_IOERR 74 /* input/output error */ # define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ # define EX_PROTOCOL 76 /* remote error in protocol */ # define EX_NOPERM 77 /* permission denied */ # define EX_CONFIG 78 /* configuration error */ # define EX__MAX 78 /* maximum listed value */ #endif #ifndef INADDR_LOOPBACK # define INADDR_LOOPBAK 0x7f000001 #endif #include #include #include #include #include #include #include #include #include #ifdef HAVE_MYSQL # include "../MySql/MySql.h" #endif /* Debug */ extern int debug_level; #define dbg() if (debug_level) debug /* mailquota settings */ #define MQUOTA_OK 0 #define MQUOTA_EXCEEDED 1 #define MQUOTA_UNLIMITED 2 extern char *quotadbname; extern int exit_code; extern void setgroupquota (char *str); extern int check_quota (char *name, size_t size, size_t *rest); int mda (FILE *fp, char *username, mailbox_t mbox); char *make_progfile_name (char *pattern, char *username); #ifdef WITH_GUILE struct mda_data { FILE *fp; char *progfile; char *progfile_pattern; char **argv; char *tempfile; }; int prog_mda (struct mda_data *data); extern int debug_guile; #endif