Victor Duchovni: > On Mon, Sep 22, 2008 at 09:08:55AM -0300, jakjr wrote: > > > Hi Guys, > > > > I have one big distribution list (100K emails). I'm using virtual_alias_maps > > for that like this: > > > > virtual_alias_maps = hash:/etc/postfix/virtual > > > > where virtual: > > [EMAIL PROTECTED] > > [EMAIL PROTECTED], > > . > > [EMAIL PROTECTED] > > By default Postfix truncates virtual(5) expansion at 1000 recipients. > For lists this large you MUST not use virtual(5), rather use a ":include:" > valued local alias, AND set an "owner-list" alias to make sure that > bounces are NOT send to the sender.
I just did a quick run-time profile of the cleanup daemon's CPU usage, and it was no surprise that most time was spent manipulating email addresses. I expected less that the time was spent in a quadratic algorithm. Specifically, most time was being spent in tok822_append(), as it is called by tok822_group(). Function tok822_append() is called from several places, and I had to "inline" it to find out which calls are expensive. The expense is incurred when tok822_append() appends a list of multiple tokens, which makes the algorithm quadratic. This could be avoided by passing in a pointer to the last list element, and keeping that pointer up to date as the program evolves. The "owner" member of an address token is never tested for its actual value, only for zero or non-zero. Therefore in many cases the quadratic behavior can be avoided altogether. However, this is not something I would change while recovering from a seven-hour time shift. Wietse