[Exim] name resolution with mailman and exim

Top Page
Delete this message
Reply to this message
Author: Marc MERLIN
Date:  
To: exim-users
CC: precision
Subject: [Exim] name resolution with mailman and exim
Ok, so here's the deal:
Sourceforge hosts a lot of mailing lists with mailman, and I'm helping with
their new setup.

Mailman will spool all the incoming mailing list posts and run through the
queue once a minute with a single threaded process, and that process takes
every post and feeds them to (currently) sendmail.
One mail from, and lots of rcpt to (batches of 100 I think).
Actually, you can tell mailman not to spool and talk to the MTA directly,
but that was unreliable apparently.


The problem is that some list subscribers are in countries where DNS is slow
and unreliable.
This, in turn, causes the mailman queue running process to hang while
sendmail is trying to resolve those receipient domains, and too often
mailman just hangs for too long and the queue run takes more than one minute
to process.
After that, you guessed it, more mail comes in that the list server can
process...

This is ultimately a problem in mailman that should be fixed by having
multiple concurrent queue runners, but apparently that doesn't quite work
yet.

So, I'd like to switch the MTA to exim and see if we can do better.

I can tell exim not to verify the sender's address, but frankly, it doesn't
make a big difference compared to all the DNS queries that have to happen.
I'm guessing that by default, exim will have the same problem and hang until
each domain in rcpt to has been successfully resolved.

I could tell exim to just spool mail right away (i.e. do not attempt
immediate deliveries). Do I just want to set
queue_only_load = 0
or is there another way to do this?
Apparently, when this was done on sourceforge, sendmail was a bit
overwhelmed as its queue handling sucks. Exim, with:
split_spool_directory = true
should be doing much better.


That said, I'd much prefer another approach.
Is there a way to tell exim: process whatever you can do right away,
whatever resolves right now, and queue the rest?
(sendmail seems to have resolver code inside of it and that code can be
tuned wrt to timeouts, but since it's not a separate process, it still hangs
the whole process.
An approach like squid's, with separate DNS resolving processes would be
ideal, but I don't think you can do that with exim)

Any other suggestions?

Thanks,
Marc
-- 
Microsoft is to operating systems & security ....
                                      .... what McDonalds is to gourmet cooking


Home page: http://marc.merlins.org/ | Finger marc_f@??? for PGP key