don't reinvent the wheel. If this is what you want, use the anti-UCE spam
patch from Sam (see qmail pages)
Franky
> ----------
> From: Hotdog[SMTP:[EMAIL PROTECTED]]
> Reply To: [EMAIL PROTECTED]
> Sent: Thursday, September 16, 1999 7:00 PM
> To: [EMAIL PROTECTED]
> Subject: Patch for spam
>
> Hi,
> I want to write the following patch for qmail. At some small site,you
> can only filtrate the spam by the filter invoke from dotqmail, but our
> server will receive over 100000 junk mails per day,qmail-send &
> qmail-local take so much time to delivert these letters. Kill the spam in
> qmail-smtpd should be the best way.
> But the problem is how to write the function 'spamcheck(int spamflag)' ?
>
>
>
> In qmail-smtpd.c:
>
> + spam=0;
> received(&qqt,"SMTP",local,remoteip,remotehost,remoteinfo,fakehelo);
> blast(&hops);
> + spamcheck(&spam); //The functin will read some control file,such as
> control/badkeyword, if matched,then ...
> hops = (hops >= MAXHOPS);
> if (hops) qmail_fail(&qqt);
> qmail_from(&qqt,mailfrom.s);
> qmail_put(&qqt,rcptto.s,rcptto.len);
>
> qqx = qmail_close(&qqt);
> if (!*qqx) { acceptmessage(qp); return; }
> if (hops) { out("554 too many hops, this message is looping
> (#5.4.6)\r\n"); return; }
> + if (spam) { out("551 Spam shit! You are not welcome!\r\n"; return; );
> if (databytes) if (!bytestooverflow) { out("552 sorry, that message size
> excee...
> if (*qqx == 'D') out("554 "); else out("451 ");
> out(qqx + 1);
> out("\r\n");
>
> then,it will do something like this:
>
> 220 mydomain.com ESMTP
> helo iamspam
> 250 mydomain.com
> mail from:<>
> 250 ok
> rcpt to:<someone@>
> 250 ok
> data
> 354 go ahead
> From: [EMAIL PROTECTED]
>
>
> win money from .... <---'win money' is in control/badkeyword,so
> this letter should be refused.
>
>
> .
> 551 Spam shit! You are not welcome!
>
>
>
> Thanks very much!
>
>
>
> Hotdog
> [EMAIL PROTECTED]
>