--On Mittwoch, 11. Februar 2004 11:41 +0100 Alessandro Vesely <ves...@tana.it>
wrote:
Or try the reinjection method suggested by Sam. No database required. Use
the existing filter model.
And the injection method suggested was?
I was going to try reinjecting it with SMTP. But that's quite tricky because
the filter cannot know that the content had been filtered already (and when
the filter is paranoid, a digital signature seems the only way).
$TCPREMOTEHOST (and/or maybe $TCPLOCALPORT) is all you need.
Courier currently lacks some mechanism to exclude hosts from filtering.
One easy to implement solution could be to skip the filtering-stage
alltogether when RELAYCLIENT (and maybe BLOCK="") ist set.
But if you reinject the message via pipe to sendmail it wont be filtered
since this is by default limited to messages received via smtp, and this
also gets you around the per-source limit of couriertcpd.
Messing around with the control- and datafiles is still an ugly hack though,
I gave up some time ago and now doing all the filtering including dnsbl-
lookup within the localmailfilter (whitelist) api in a perl script which
was in use for years with (patched) qmail.
This costs two forks of perl for every message but cpu has become cheap and
it makes everything much easier.
Drawbacks are the inability to add custom headers, no access to HELO, and
there is no possibility to make submit drop the currently processed message
while still acknowledge with 2xx which would be required for any chaining.