Blame


1 5cdb1798 2005-10-29 devnull #include "common.h"
2 5cdb1798 2005-10-29 devnull #include "send.h"
3 5cdb1798 2005-10-29 devnull
4 5cdb1798 2005-10-29 devnull /* configuration */
5 5cdb1798 2005-10-29 devnull #define LOGBiobuf "log/status"
6 5cdb1798 2005-10-29 devnull
7 5cdb1798 2005-10-29 devnull /* log mail delivery */
8 5cdb1798 2005-10-29 devnull extern void
9 5cdb1798 2005-10-29 devnull logdelivery(dest *list, char *rcvr, message *mp)
10 5cdb1798 2005-10-29 devnull {
11 5cdb1798 2005-10-29 devnull dest *parent;
12 5cdb1798 2005-10-29 devnull String *srcvr, *sender;
13 5cdb1798 2005-10-29 devnull
14 5cdb1798 2005-10-29 devnull srcvr = unescapespecial(s_copy(rcvr));
15 5cdb1798 2005-10-29 devnull sender = unescapespecial(s_clone(mp->sender));
16 5cdb1798 2005-10-29 devnull
17 5cdb1798 2005-10-29 devnull for(parent=list; parent->parent!=0; parent=parent->parent)
18 5cdb1798 2005-10-29 devnull ;
19 5cdb1798 2005-10-29 devnull if(parent!=list && strcmp(s_to_c(parent->addr), s_to_c(srcvr))!=0)
20 5cdb1798 2005-10-29 devnull syslog(0, "mail", "delivered %s From %.256s %.256s (%.256s) %d",
21 5cdb1798 2005-10-29 devnull rcvr,
22 5cdb1798 2005-10-29 devnull s_to_c(sender), s_to_c(mp->date),
23 5cdb1798 2005-10-29 devnull s_to_c(parent->addr), mp->size);
24 5cdb1798 2005-10-29 devnull else
25 5cdb1798 2005-10-29 devnull syslog(0, "mail", "delivered %s From %.256s %.256s %d", s_to_c(srcvr),
26 5cdb1798 2005-10-29 devnull s_to_c(sender), s_to_c(mp->date), mp->size);
27 5cdb1798 2005-10-29 devnull s_free(srcvr);
28 5cdb1798 2005-10-29 devnull s_free(sender);
29 5cdb1798 2005-10-29 devnull }
30 5cdb1798 2005-10-29 devnull
31 5cdb1798 2005-10-29 devnull /* log mail forwarding */
32 5cdb1798 2005-10-29 devnull extern void
33 5cdb1798 2005-10-29 devnull loglist(dest *list, message *mp, char *tag)
34 5cdb1798 2005-10-29 devnull {
35 5cdb1798 2005-10-29 devnull dest *next;
36 5cdb1798 2005-10-29 devnull dest *parent;
37 5cdb1798 2005-10-29 devnull String *srcvr, *sender;
38 5cdb1798 2005-10-29 devnull
39 5cdb1798 2005-10-29 devnull sender = unescapespecial(s_clone(mp->sender));
40 5cdb1798 2005-10-29 devnull
41 5cdb1798 2005-10-29 devnull for(next=d_rm(&list); next != 0; next = d_rm(&list)) {
42 5cdb1798 2005-10-29 devnull for(parent=next; parent->parent!=0; parent=parent->parent)
43 5cdb1798 2005-10-29 devnull ;
44 5cdb1798 2005-10-29 devnull srcvr = unescapespecial(s_clone(next->addr));
45 5cdb1798 2005-10-29 devnull if(parent!=next)
46 5cdb1798 2005-10-29 devnull syslog(0, "mail", "%s %.256s From %.256s %.256s (%.256s) %d",
47 5cdb1798 2005-10-29 devnull tag,
48 5cdb1798 2005-10-29 devnull s_to_c(srcvr), s_to_c(sender),
49 5cdb1798 2005-10-29 devnull s_to_c(mp->date), s_to_c(parent->addr), mp->size);
50 5cdb1798 2005-10-29 devnull else
51 5cdb1798 2005-10-29 devnull syslog(0, "mail", "%s %.256s From %.256s %.256s %d", tag,
52 5cdb1798 2005-10-29 devnull s_to_c(srcvr), s_to_c(sender),
53 5cdb1798 2005-10-29 devnull s_to_c(mp->date), mp->size);
54 5cdb1798 2005-10-29 devnull s_free(srcvr);
55 5cdb1798 2005-10-29 devnull }
56 5cdb1798 2005-10-29 devnull s_free(sender);
57 5cdb1798 2005-10-29 devnull }
58 5cdb1798 2005-10-29 devnull
59 5cdb1798 2005-10-29 devnull /* log a mail refusal */
60 5cdb1798 2005-10-29 devnull extern void
61 5cdb1798 2005-10-29 devnull logrefusal(dest *dp, message *mp, char *msg)
62 5cdb1798 2005-10-29 devnull {
63 5cdb1798 2005-10-29 devnull char buf[2048];
64 5cdb1798 2005-10-29 devnull char *cp, *ep;
65 5cdb1798 2005-10-29 devnull String *sender, *srcvr;
66 5cdb1798 2005-10-29 devnull
67 5cdb1798 2005-10-29 devnull srcvr = unescapespecial(s_clone(dp->addr));
68 5cdb1798 2005-10-29 devnull sender = unescapespecial(s_clone(mp->sender));
69 5cdb1798 2005-10-29 devnull
70 5cdb1798 2005-10-29 devnull sprint(buf, "error %.256s From %.256s %.256s\nerror+ ", s_to_c(srcvr),
71 5cdb1798 2005-10-29 devnull s_to_c(sender), s_to_c(mp->date));
72 5cdb1798 2005-10-29 devnull s_free(srcvr);
73 5cdb1798 2005-10-29 devnull s_free(sender);
74 5cdb1798 2005-10-29 devnull cp = buf + strlen(buf);
75 5cdb1798 2005-10-29 devnull ep = buf + sizeof(buf) - sizeof("error + ");
76 5cdb1798 2005-10-29 devnull while(*msg && cp<ep) {
77 5cdb1798 2005-10-29 devnull *cp++ = *msg;
78 5cdb1798 2005-10-29 devnull if (*msg++ == '\n') {
79 5cdb1798 2005-10-29 devnull strcpy(cp, "error+ ");
80 5cdb1798 2005-10-29 devnull cp += sizeof("error+ ") - 1;
81 5cdb1798 2005-10-29 devnull }
82 5cdb1798 2005-10-29 devnull }
83 5cdb1798 2005-10-29 devnull *cp = 0;
84 5cdb1798 2005-10-29 devnull syslog(0, "mail", "%s", buf);
85 5cdb1798 2005-10-29 devnull }