/* * * User mailbox filtering by SIEVE mechanisms * */ struct sieve { int state; /* 0: END */ int uid; /* input */ const struct Zpasswd *pw; /* input */ const char *username; /* input */ const char *spoolfile; /* input */ int command; struct ctldesc *dp; struct rcpt *rp; int pipeuid; char pipecmdbuf[2048]; void *opaqueblock; int keep_or_discard; /* <0: discard, ==0: not set, >0: keep */ }; extern int sieve_start __((struct sieve *svp)); extern void sieve_iterate __((struct sieve *svp)); extern void sieve_end __((struct sieve *svp)); extern int sieve_command __((struct sieve *svp)); #define SIEVE_NOOP 0 #define SIEVE_USERSTORE 1 #define SIEVE_RUNPIPE 2 #define SIEVE_DISCARD 3