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