We have a slightly unusual setup in that we pipe messages via SpamAssassin
just before delivery using the aliases:
| smapc -u <username> | dbmail-smtp -u <username>
but I think the problem we have found will occur with any locally piped
message.
We recently had a single message that was about 10MB in size and it was
delivered to 50 or so users. The way forward.c functions in the case of a
pipe is to open one pipe for each recipient, then read the input stream and
write it to each pipe. In this case it opens up 50 spamc and 50 dbmail-smtp
processes. In processing the 10MB message, the machine (a reasonably
powerful one) almost died.
Limiting max recipient and/or limiting message size is not really an
option, so we are looking for other solutions. Especially solutions that
are likely to be included in the dbmail code, so we do not have to maintain
a patch.
What we are thinking of is either writing the message to a temporary file,
then sending to the pipes sequentially, or writing to a temp table in the
database, and doing the same.
We would appreciate any suggestions as to the best approach, and the
approach most likely to be incorporated in dbmail.
----------------------------------------------------------------
Philip Warner | __---_____
Albatross Consulting Pty. Ltd. |----/ - \
(A.B.N. 75 008 659 498) | /(@) ______---_
Tel: (+61) 0500 83 82 81 | _________ \
Fax: (+61) 03 5330 3172 | ___________ |
Http://www.rhyme.com.au | / \|
| --________--
PGP key available upon request, | /
and from pgp5.ai.mit.edu:11371 |/