Blame


1 5cdb1798 2005-10-29 devnull #define MAXSAME 16
2 5cdb1798 2005-10-29 devnull #define MAXSAMECHAR 1024
3 5cdb1798 2005-10-29 devnull
4 5cdb1798 2005-10-29 devnull /* status of a destination*/
5 5cdb1798 2005-10-29 devnull typedef enum {
6 5cdb1798 2005-10-29 devnull d_undefined, /* address has not been matched*/
7 5cdb1798 2005-10-29 devnull d_pipe, /* repl1|repl2 == delivery command, rep*/
8 5cdb1798 2005-10-29 devnull d_cat, /* repl1 == mail file */
9 5cdb1798 2005-10-29 devnull d_translate, /* repl1 == translation command*/
10 5cdb1798 2005-10-29 devnull d_alias, /* repl1 == translation*/
11 5cdb1798 2005-10-29 devnull d_auth, /* repl1 == command to authorize*/
12 5cdb1798 2005-10-29 devnull d_syntax, /* addr contains illegal characters*/
13 5cdb1798 2005-10-29 devnull d_unknown, /* addr does not match a rewrite rule*/
14 5cdb1798 2005-10-29 devnull d_loop, /* addressing loop*/
15 5cdb1798 2005-10-29 devnull d_eloop, /* external addressing loop*/
16 5cdb1798 2005-10-29 devnull d_noforward, /* forwarding not allowed*/
17 5cdb1798 2005-10-29 devnull d_badmbox, /* mailbox badly formatted*/
18 5cdb1798 2005-10-29 devnull d_resource, /* ran out of something we needed*/
19 5cdb1798 2005-10-29 devnull d_pipeto, /* pipe to from a mailbox*/
20 5cdb1798 2005-10-29 devnull } d_status;
21 5cdb1798 2005-10-29 devnull
22 5cdb1798 2005-10-29 devnull /* a destination*/
23 5cdb1798 2005-10-29 devnull typedef struct dest dest;
24 5cdb1798 2005-10-29 devnull struct dest {
25 5cdb1798 2005-10-29 devnull dest *next; /* for chaining*/
26 5cdb1798 2005-10-29 devnull dest *same; /* dests with same cmd*/
27 5cdb1798 2005-10-29 devnull dest *parent; /* destination we're a translation of*/
28 5cdb1798 2005-10-29 devnull String *addr; /* destination address*/
29 5cdb1798 2005-10-29 devnull String *repl1; /* substitution field 1*/
30 5cdb1798 2005-10-29 devnull String *repl2; /* substitution field 2*/
31 5cdb1798 2005-10-29 devnull int pstat; /* process status*/
32 5cdb1798 2005-10-29 devnull d_status status; /* delivery status*/
33 5cdb1798 2005-10-29 devnull int authorized; /* non-zero if we have been authorized*/
34 5cdb1798 2005-10-29 devnull int nsame; /* number of same dests chained to this entry*/
35 5cdb1798 2005-10-29 devnull int nchar; /* number of characters in the command*/
36 5cdb1798 2005-10-29 devnull };
37 5cdb1798 2005-10-29 devnull
38 5cdb1798 2005-10-29 devnull typedef struct message message;
39 5cdb1798 2005-10-29 devnull struct message {
40 5cdb1798 2005-10-29 devnull String *sender;
41 5cdb1798 2005-10-29 devnull String *replyaddr;
42 5cdb1798 2005-10-29 devnull String *date;
43 5cdb1798 2005-10-29 devnull String *body;
44 5cdb1798 2005-10-29 devnull String *tmp; /* name of temp file */
45 5cdb1798 2005-10-29 devnull String *to;
46 5cdb1798 2005-10-29 devnull int size;
47 5cdb1798 2005-10-29 devnull int fd; /* if >= 0, the file the message is stored in*/
48 5cdb1798 2005-10-29 devnull char haveto;
49 5cdb1798 2005-10-29 devnull String *havefrom;
50 5cdb1798 2005-10-29 devnull String *havesender;
51 5cdb1798 2005-10-29 devnull String *havereplyto;
52 5cdb1798 2005-10-29 devnull char havedate;
53 5cdb1798 2005-10-29 devnull char havemime;
54 5cdb1798 2005-10-29 devnull String *havesubject;
55 5cdb1798 2005-10-29 devnull char bulk; /* if Precedence: Bulk in header */
56 5cdb1798 2005-10-29 devnull char rfc822headers;
57 5cdb1798 2005-10-29 devnull int received; /* number of received lines */
58 5cdb1798 2005-10-29 devnull char *boundary; /* bondary marker for attachments */
59 5cdb1798 2005-10-29 devnull };
60 5cdb1798 2005-10-29 devnull
61 5cdb1798 2005-10-29 devnull /*
62 5cdb1798 2005-10-29 devnull * exported variables
63 5cdb1798 2005-10-29 devnull */
64 5cdb1798 2005-10-29 devnull extern int rmail;
65 5cdb1798 2005-10-29 devnull extern int onatty;
66 5cdb1798 2005-10-29 devnull extern char *thissys, *altthissys;
67 5cdb1798 2005-10-29 devnull extern int xflg;
68 5cdb1798 2005-10-29 devnull extern int nflg;
69 5cdb1798 2005-10-29 devnull extern int tflg;
70 5cdb1798 2005-10-29 devnull extern int debug;
71 5cdb1798 2005-10-29 devnull extern int nosummary;
72 5cdb1798 2005-10-29 devnull
73 5cdb1798 2005-10-29 devnull /*
74 5cdb1798 2005-10-29 devnull * exported procedures
75 5cdb1798 2005-10-29 devnull */
76 5cdb1798 2005-10-29 devnull extern void authorize(dest*);
77 5cdb1798 2005-10-29 devnull extern int cat_mail(dest*, message*);
78 5cdb1798 2005-10-29 devnull extern dest *up_bind(dest*, message*, int);
79 5cdb1798 2005-10-29 devnull extern int ok_to_forward(char*);
80 5cdb1798 2005-10-29 devnull extern int lookup(char*, char*, Biobuf**, char*, Biobuf**);
81 5cdb1798 2005-10-29 devnull extern dest *d_new(String*);
82 5cdb1798 2005-10-29 devnull extern void d_free(dest*);
83 5cdb1798 2005-10-29 devnull extern dest *d_rm(dest**);
84 5cdb1798 2005-10-29 devnull extern void d_insert(dest**, dest*);
85 5cdb1798 2005-10-29 devnull extern dest *d_rm_same(dest**);
86 5cdb1798 2005-10-29 devnull extern void d_same_insert(dest**, dest*);
87 5cdb1798 2005-10-29 devnull extern String *d_to(dest*);
88 5cdb1798 2005-10-29 devnull extern dest *s_to_dest(String*, dest*);
89 5cdb1798 2005-10-29 devnull extern void gateway(message*);
90 5cdb1798 2005-10-29 devnull extern dest *expand_local(dest*);
91 5cdb1798 2005-10-29 devnull extern void logdelivery(dest*, char*, message*);
92 5cdb1798 2005-10-29 devnull extern void loglist(dest*, message*, char*);
93 5cdb1798 2005-10-29 devnull extern void logrefusal(dest*, message*, char*);
94 5cdb1798 2005-10-29 devnull extern int default_from(message*);
95 5cdb1798 2005-10-29 devnull extern message *m_new(void);
96 5cdb1798 2005-10-29 devnull extern void m_free(message*);
97 5cdb1798 2005-10-29 devnull extern message *m_read(Biobuf*, int, int);
98 5cdb1798 2005-10-29 devnull extern int m_get(message*, long, char**);
99 5cdb1798 2005-10-29 devnull extern int m_print(message*, Biobuf*, char*, int);
100 5cdb1798 2005-10-29 devnull extern int m_bprint(message*, Biobuf*);
101 5cdb1798 2005-10-29 devnull extern String *rule_parse(String*, char*, int*);
102 5cdb1798 2005-10-29 devnull extern int getrules(void);
103 5cdb1798 2005-10-29 devnull extern int rewrite(dest*, message*);
104 5cdb1798 2005-10-29 devnull extern void dumprules(void);
105 5cdb1798 2005-10-29 devnull extern void regerror(char*);
106 5cdb1798 2005-10-29 devnull extern dest *translate(dest*);
107 5cdb1798 2005-10-29 devnull extern char* skipequiv(char*);
108 5cdb1798 2005-10-29 devnull extern int refuse(dest*, message*, char*, int, int);