Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

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