Autor: Paul Fecha: A: exim-users Asunto: [exim] serialize_hosts and single tcp connection batch mail
Hi All,
We were trying a "single tcp mail batch" setup environment and things didn't
quite work out as expected.
Below are the results we noticed and what configuration options we set.
Hopefully someone out there has done a similar setup and has a working
configuration for this:
host01 - external IP - accepts SMTP from the world
host02 - external IP - accepts SMTP from the world
mail01 - external IP - only accetps mail from host01 and host02
mail02 - external IP - only accepts mail from host01 and host02
Normally we have very relaxed settings and mail is delivered immediately.
This results in lots of exim's processes (and connections) and users a large
amount of resources.
What we wanted was for a single TCP connection between host01 to mail02 and
host02 to mail02 and have all mail sent via this single connection. Ideally
send 500 odd emails and then make a new connection. We set serialize_hosts
for the relevant transport on host01 and host02 and set mail02's
configuration to allow a large amount of messages via a single connection.
This is in the configuration on host01 and host02:
2005-07-19 02:45:09 1DuHeq-0004Ne-CG == someusers@???
R=mail02_director T=mail02_transport defer (-53): connection limit reached
for all hosts
What we found was a single connection was normally established and only one
or two exim processes running on mail02 (excellent!).
However when host01 and host02 got new incoming mail (as in 24x7) they would
try and deliver and then defer instantly as the connection limit had been
reached for mail02.
The connection limit is hard set to 1 when you set serialize_hosts. So it
would simply defer the mail until the next retry would hit it.
If I was to do a manual retry (/usr/local/exim/bin/exim -M <msgid>) then it
would more often than not get the same result, being the connection limit
reached.
I would expect it to be always reached as 1 socket is always open and having
mail fired down it. This just leave us with a large amount of backlogged
mail on the queue's locally at host01 and host02 that won't get delivered
for a long time.
Should we split our mail systems on host01 and host02 to have one process to
accept mail and queue locally and have another process to run queue dumps
every 5 minutes to pipe the mail down 1 connection. Is there a better way of
doing this?
I've done numerous searches on the archives, Google, mailing lists, exim
spec and faq's but couldn't find the answer I was looking for (not sure what
the answer is really?)