[exim] Return results of expansion to sender

Top Page
Delete this message
Reply to this message
Author: Alain Williams
Date:  
To: Exim Users
Subject: [exim] Return results of expansion to sender
Following my earlier post about the limits of expansion ...

Exim handles expansion to some 8,500 addresses without breaking sweat.

The expansion happens in ~ 1 second (may be less, can't tell) and then delivery
starts.

I promised to report how long it took, here are my results along with a couple of
questions.

First a bit about what is happening in the routers.
* Standard bits about checking remote addresses & looking in /etc/aliases.

* recognition of expansion addresses on 3 routers by regular expressions (for teaching classes/groups).
* recognition of 'all' and expansion by
    data = ${lookup mysql {select distinct SamAccount from StdInfo}}
  redirect to another router, this checks the existance of the user's cyrus directory,
  if it isn't there is drops through to the next router which is redirect to :blackhole:
  The point is that 62% students have not logged in or received mail - so don't send
  them mail on the basis of an expansion - they will prob never see it.


So:
delivered via lmtp to cyrus (batched in 20): 3,185
route to black hole: 5,318
undelivered (quota exceeded): 6
All in 7.5 minutes.
The performance is good enough for the college.

The blackholing was fast ( > 5,000/second) - this was testing the existance of the user's cyrus directory.

Delivery to Cyrus. The batching in 20s was visible in the log file, one line with '=>' followed by 19 '->'.
A '=>' was often 4-7 seconds after the previous line, but sometimes there would be 60 lines
all with the same time.

Here is the difference between '=>' & '->', the 2 columns are count & seconds:
     58 0
     25 1
     14 2
     18 3
     16 4
     13 5
      7 6
      6 7
      2 8
      2 9
      1 14
      1 15



I suspect that MS Active Directory was a bottle neck, but have no idea how to show this.


A bit about the setup:

Cyrus 2.1.15 = yes I know that it is old, updating this is on my jobs list.
Exim batches to cyrus in 20s, I will increase this after upgrade.
cyrus-sasl 2.1.15 (also needs updating), authenticating off active directory via LDAP

CPU, Dual: Intel(R) Xeon(TM) CPU 2.40GHz
RAM: 4GB
Disk: mailstore & exim spool on one dedicated disk: MegaRAID, LD1 RAID5 09634R (whatever that is)
Filesystem: Reiser
OS: SUSE SLES 8, 2.4.19 Kernel

I added the one_time option as the expansion was happening every time the queue runner ran
for the 6 over quota.

Questions
*********

* If I am delivering to all@ and the mailbox is full, we want to discard the mail.
How do I do this ? There is not a ignore_status option as with the pipe transport.
This will avoid stuff hanging around in the queue & tough on the student.

* The lecturers want to receive a delivery report -- one email reply telling them
who the mail was delivered to and who it was discarded (blackholed).

--
Alain Williams
Linux Consultant - Mail systems, Web sites, Networking, Programmer, IT Lecturer.
+44 (0) 787 668 0256 http://www.phcomp.co.uk/
Parliament Hill Computers Ltd. Registration Information: http://www.phcomp.co.uk/contact.php
#include <std_disclaimer.h>