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