On Mon, 7 Jun 2004, Jens Benecke wrote:
> Hi,
>
> I'm currently running a somewhat patched version of qmail-smtpd for my
> setup, under tcpserver, started in /etc/init.d/qmail. I was thinking of
> applying the SPAMCONTROL patch to my servers' qmail setups, but qpsmtpd
> *looks* more configurable and flexible. So here come the questions :-)
>
> Here's what my qmail-smtpd currently does, addition to the "original", and
> what I'd like to keep running:
>
> - badrcptto, badmailfrom with custom 550 error messages and syslogging
> - QMAILQUEUE patch (running spamassassin + f-prot)
> - tarpitting
> - SMTP AUTH with auth data coming from an IMAP server (vpopmail database)
> - attachment blocking at SMTP level (virusscan patch) with syslogging
>
> I'm primarily interested in spam-blocking features, such as:
> - "[bad|good]mail[from/to]" features with regex support
> - custom 550 error messages for different blocked domains/addresses
> - greylisting
> - user account verification (via vpopmail/MySQL)
> - check_earlytalker
> - performance
I'm not sure about the customer 5xx error messages, but most of this stuff
already works. Certainly patching the plugins to give custom error
messages is trivial.
> How stable is the basic qpsmtpd setup, and how stable and useable are the
> plugins / extensions I'd need? How much of a "plug-in" replacement would
> qpsmtpd be for me (minimum downtime)? What about performance (I read about
> PPerl, which seems to be a bit unstable, and speedycgi)?
PPerl seems to be one of those things that works for some people and not
for others. I have no idea why, sadly. There's a remote chance that this
might fix things for those with problems, but it's remote:
diff -u -r1.47 pperl.h.header
--- pperl.h.header 2004/05/17 14:29:33 1.47
+++ pperl.h.header 2004/06/08 09:39:23
@@ -209,7 +209,8 @@
$SIG{CHLD} = \&reap_child;
}
else {
- $SIG{HUP} = $SIG{INT} = $SIG{CHLD} = $SIG{TERM} = 'DEFAULT';
+ # $SIG{HUP} = $SIG{INT} = $SIG{CHLD} = $SIG{TERM} = 'DEFAULT';
+ $SIG{$_} = 'DEFAULT' for keys %SIG;
$< = $>; # set real UID to effective UID
}
sigprocmask(SIG_UNBLOCK,$signals); # unblock signals
--
<!-- Matt -->
<:->get a SMart net</:->
I am Jack's broken heart.