1 --- /tmp/qmail-1.03/qmail-qmtpd.c Mon Jun 15 12:53:16 1998
2 +++ qmail-1.03/qmail-qmtpd.c Wed Jan 10 20:39:07 2001
9 void badproto() { _exit(100); }
10 void resources() { _exit(111); }
12 if (ch != ',') badproto();
18 +struct constmap mapbmf;
20 +int bmfcheck(buf,len) char *buf; int len;
23 + if (!bmfok) return 0;
24 + if (constmap(&mapbmf,buf,len)) return 1;
25 + j = byte_rchr(buf,len,'@');
27 + if (constmap(&mapbmf,buf + j,len - j)) return 1;
31 unsigned int databytes = 0;
32 unsigned int bytestooverflow = 0;
36 if (control_init() == -1) resources();
37 if (rcpthosts_init() == -1) resources();
39 + bmfok = control_readfile(&bmf,"control/badmailfrom",0);
40 + if (bmfok == -1) resources();
42 + if (!constmap_init(&mapbmf,bmf.s,bmf.len,0)) resources();
44 relayclient = env_get("RELAYCLIENT");
45 relayclientlen = relayclient ? str_len(relayclient) : 0;
52 + flagbarf = bmfcheck(buf,len);
54 if (!flagsenderok) qmail_fail(&qq);
59 case 0: failure.s[failure.len - 1] = 'D';
63 + if (flagbarf) { failure.s[failure.len -1] = 'B'; }
65 if (!failure.s[failure.len - 1]) {
71 substdio_puts(&ssout,"66:Dsorry, that domain isn't in my list of allowed rcpthosts (#5.7.1),");
74 + substdio_puts(&ssout,"63:Dsorry, your envelope sender is in my badmailfrom list (#5.7.1),");
77 substdio_puts(&ssout,"46:Dsorry, I can't handle that recipient (#5.1.3),");
78 --- /tmp/qmail-1.03/qmail-qmtpd.8 Mon Jun 15 12:53:16 1998
79 +++ qmail-1.03/qmail-qmtpd.8 Wed Jan 10 21:08:15 2001
88 --- /tmp/qmail-1.03/qmail-control.9 Mon Jun 15 12:53:16 1998
89 +++ qmail-1.03/qmail-control.9 Wed Jan 10 21:08:21 2001
92 control default used by
94 -.I badmailfrom \fR(none) \fRqmail-smtpd
95 +.I badmailfrom \fR(none) \fRqmail-smtpd, qmail-qmtpd
96 .I bouncefrom \fRMAILER-DAEMON \fRqmail-send
97 .I bouncehost \fIme \fRqmail-send
98 .I concurrencylocal \fR10 \fRqmail-send