* Wietse Venema <wie...@porcupine.org>:
> I created postscreen because it is becoming too expensive to spend
> one server process per zombie connection.  Instead, one postscreen
> process manages up to thousands of inbound connections simultaneously,
> and drops the majority of them before they can affect Postfix's
> availability for legitimate clients.

I've got a terrible headache right now, preventing me from thinking
this through properly, but I guess that this paragraph actually
outlines two problems, not one.

The first seems to be the fact that Postfix is handling incoming
connections synchronously, spawning an smtpd process per client. The
solution to this is asynchronous programming, but it seems you decided
that you'd rather implement this in a new helper program instead of
performing substantial changes to the way incoming connections are
handled in the existing code base. Can't say I blame you - during
university, while doing a project with Gröbner bases, I had the
opportunity to experience the unique problems and challenges one faces
when dealing with asynchronous frameworks first hand. FWIW, I think
that the design decision to create a new program was the right one to
make. With the passing of file descriptors, it's even an elaborate one
:-)

The second point you mentioned is that you are planning on rejecting
the majority of zombies with a set of - possibly fixed - tests within a
single process. That means those tests do not only have to be
effective, but also efficient (I might confuse those two, sorry,
headache). The efficiency of such a test is something that can ideally
be proved mathematically - or just deducted by common sense. It's
effectiveness, OTOH, is something that can only be testimonied by
intensive data gathering and accurate statistical analysis. In other
words, you seem to think that the tests you implemented until now -
PREGREET, HANGUP, DNSBL - are both, effective and efficient, and
therefore sufficient to reach the goals you wanted to reach with the
creation of postscreen.

So, thinking about my initial posting again and reading the cited
paragraph as well as the remainder of your reply, comparing complexity
with gain, I'd like to withdraw my feature request.


Stefan

Reply via email to