12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include "common.h"
- #include "send.h"
- /* configuration */
- #define LOGBiobuf "log/status"
- /* log mail delivery */
- extern void
- logdelivery(dest *list, char *rcvr, message *mp)
- {
- dest *parent;
- String *srcvr, *sender;
- srcvr = unescapespecial(s_copy(rcvr));
- sender = unescapespecial(s_clone(mp->sender));
- for(parent=list; parent->parent!=0; parent=parent->parent)
- ;
- if(parent!=list && strcmp(s_to_c(parent->addr), s_to_c(srcvr))!=0)
- syslog(0, "mail", "delivered %s From %.256s %.256s (%.256s) %d",
- rcvr,
- s_to_c(sender), s_to_c(mp->date),
- s_to_c(parent->addr), mp->size);
- else
- syslog(0, "mail", "delivered %s From %.256s %.256s %d", s_to_c(srcvr),
- s_to_c(sender), s_to_c(mp->date), mp->size);
- s_free(srcvr);
- s_free(sender);
- }
- /* log mail forwarding */
- extern void
- loglist(dest *list, message *mp, char *tag)
- {
- dest *next;
- dest *parent;
- String *srcvr, *sender;
- sender = unescapespecial(s_clone(mp->sender));
- for(next=d_rm(&list); next != 0; next = d_rm(&list)) {
- for(parent=next; parent->parent!=0; parent=parent->parent)
- ;
- srcvr = unescapespecial(s_clone(next->addr));
- if(parent!=next)
- syslog(0, "mail", "%s %.256s From %.256s %.256s (%.256s) %d",
- tag,
- s_to_c(srcvr), s_to_c(sender),
- s_to_c(mp->date), s_to_c(parent->addr), mp->size);
- else
- syslog(0, "mail", "%s %.256s From %.256s %.256s %d", tag,
- s_to_c(srcvr), s_to_c(sender),
- s_to_c(mp->date), mp->size);
- s_free(srcvr);
- }
- s_free(sender);
- }
- /* log a mail refusal */
- extern void
- logrefusal(dest *dp, message *mp, char *msg)
- {
- char buf[2048];
- char *cp, *ep;
- String *sender, *srcvr;
- srcvr = unescapespecial(s_clone(dp->addr));
- sender = unescapespecial(s_clone(mp->sender));
- sprint(buf, "error %.256s From %.256s %.256s\nerror+ ", s_to_c(srcvr),
- s_to_c(sender), s_to_c(mp->date));
- s_free(srcvr);
- s_free(sender);
- cp = buf + strlen(buf);
- ep = buf + sizeof(buf) - sizeof("error + ");
- while(*msg && cp<ep) {
- *cp++ = *msg;
- if (*msg++ == '\n') {
- strcpy(cp, "error+ ");
- cp += sizeof("error+ ") - 1;
- }
- }
- *cp = 0;
- syslog(0, "mail", "%s", buf);
- }
|