WARNING: Ignoring deprecated option --unzip
Jethro R Binks
jethro.binks at strath.ac.uk
Tue Jan 27 21:14:13 GMT 2009
On Tue, 27 Jan 2009, Alex Broens wrote:
> On 1/27/2009 4:46 PM, Steve Freegard wrote:
> > Alex Broens wrote:
> > > Could be misbehaved bots are eating up all your available sessions.
> > >
> > > if you have a zillion of inactive open connections try reducing your
> > > smtpd_timeout
> > >
> > > start off with and tune according to timeout requirements
> > >
> > > smtpd_timeout = 90s
> > > (read the postfix docs and understand what this setting can do for you,
> > > good & bad)
> >
> > RFC default is 300 seconds you might get away with less; but diagnosing
> > failures here won't be fun. Change this with caution...
>
> ....RFCs written before the day of the bot... :-) did I mention that he
> should read the docs about the caveats?
It works both ways. The RFCs, originally written at a time when networks
were slower and less reliable and hardware less capable, have generous
timeouts for the SMTP conversation. So yes, in default configurations,
MTAs have to be very very patient, and bots can potentially hang on to MTA
connections.
But if the MTAs play by these rules, then so should the clients.
However, many bot client SMTP implementations do not play by the rules
very well (possibly intentionally). If your server is slow to respond at
each stage, and the client poorly written, the client can sometimes fall
over itself stuffing SMTP commands down a link to a server that is too
chilled to answer so quickly, and hence they get out of sequence, or
simply lose patience and disconnect. The writers of some bot SMTP clients
also realise that there's probably little point hanging around on and on
waiting for a slow MTA to respond to each command. Much more efficient
for them to dump that MTA and move on to another more responsive one
elsewhere into which more junk can be pumped.
So, ideally, introduce delays into your SMTP conversations to shed off the
crap clients. Size your OS TCP stack to accomodate the max number of
concurrent connections you want to see or can handle. If you reach that
limit, the legitimate senders will try again later or move on to another
MX for your domain. If you are perpetually at that limit, there isn't
much else you can do other than resize your OS TCP stack (and possibly
hardware), add more MXs, or implement other DDoS attack prevention
machanisms possibly with the assistance of your ISP (e.g., identifying the
most prolific culprits and blocking their ability to create TCP sessions
at the firewall level - enough to ride the wave). If you're playing this
game, you have to accept that there may come a time when there is pretty
much _nothing_ you can do - as many large sites and their providers have
found.
All this does produce collateral damage from people who have unwisely
tinkerered with their MTA's timers (for being an SMTP client), or whose
vendors didn't write a very good MTA in the first place. I accept that,
having introduced delays, some of my time is taken up talking to operators
of MTAs that haven't played by the rules, and suggesting how they might
fix them to operate properly. That's the trade-off for the successful
shedding of crap SMTP clients (mostly junk senders).
On 1/27/2009 4:46 PM, Steve Freegard wrote:
> Our products have a better way of handling this; if a host is
> blacklisted or acts peculiarly then we have a separate timeout for it
> (60s) which is way safer than reducing this globally.
Indeed, if your MTA permits it, you can increase (or decrease) delays
based on other criteria. So you may "whitelist" the MTAs of sites you
trust (or ones you are told to accept mail from even if their MTA is
broken), reducing the delays, or add more delay at certain points if you
have reason to suspect the legitimacy of the connecting host.
Additionally, if you have reasons to believe that you really do not wish
to accept mail from a connecting client (maybe the client is on a
blocklist that you particularly trust), under some circumstances rather
than just issuing an appropriate 5xx rejection response, you can consider
forcibly dropping the SMTP session (rather than letting the client decide
it wants to continue, perhaps with more RCPTs that you will likewise keep
rejection). That will reduce the number of bots etc hanging around
chewing up your connection slots.
All these techniques need to be weighed up for your own environment; in
mine, it greatly decreases the load on the heavyweight stuff that follows:
SpamAssassin, MailScanner, virus scanners, and such like, at a cost of
some support load increase.
Jethro.
--
. . . . . . . . . . . . . . . . . . . . . . . . .
Jethro R Binks
Computing Officer, IT Services, University Of Strathclyde, Glasgow, UK
More information about the MailScanner
mailing list