On Thu, Mar 31, 2011 at 10:15:55AM +0200, Ultrabug wrote:

> Dear list,
> 
> I'm facing a problem where I have to adapt and optimize my smtp servers
> to a host's constraints which are as follow :
> 
> - maximum 3 connections to each MX of the host (he has 10 MX so
> potentially I should be able to make 30 connections)

What happens if you happen to exceed the limit on particular host
among the 10? If it just quickly returns a 4XX code, and does not
penalize future connections, ignore this limit and let Postfix do
what it does by default.

> - maximum 1000 connections per MX per hour

Connection caching should help if volume is high enough to worry about
this. Note this is just less than one connection every 3 seconds, but
Postfix caches idle connections for 2 seconds, so if your output rate
is 1200 messages spaced perfectly 3 seconds apart, you lose, but this
is fairly unlikely.

> - maximum 100 emails sent per connection

Postfix has no such limit, instead a connection is retired if idle
for more than 2 seconds, or after 300s (tunable). Again the site
should just return a 4XX response to RSET, and Postfix will drop
the connection and build a new connection, probably to another host.

> My problem is that this setup is far from optimal compared to the
> limitations and it slows down a lot my email delivery rate to these domains.
> 
> Anyone have any tips on how I could do this better please ?

The receiving sites policies are stupid if they don't implement
them sensibly by just returning 4XX responses without penalizing
subsequent transactions.

Have you in fact observed that default Postfix settings run into trouble
with this site? Have you considered the less aggressive concurrency
feedback controls in Postfix 2.5?

    slow_initial_concurrency = 2
    slow_destination_concurrency_limit = 15
    slow_destination_concurrency_failed_cohort_limit = 5
    slow_destination_concurrency_positive_feedback = 1/5
    slow_destination_concurrency_negative_feedback = 1/8

and if absolutely necessary, in master.cf:

    slow      unix  -       -       n       -       -       smtp
        -o smtp_connection_reuse_time_limit=30s

(the remote side starts rejecting traffic consistently instead of
sending 421 for the 100th RSET over a given connection).

-- 
        Viktor.

Reply via email to