There are two reasons for this:

The first is that "sendmail" isn't necessarily Sendmail. It could be any
number of work-alikes, such as Postfix :-) Or it could be a shell script
or your own creation or just about anything that's chmod +x. That said,
while this program *should* be able to accept multiple recipients on the
command line as Sendmail does, it may not.

Note that your aliases table could always have an entry like this:

alias        forward
[EMAIL PROTECTED]  [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL 
PROTECTED]

And in that case, DBMail would simply call your sendmail with that whole
thing as the argument, and it had better support multiple recipients!

The second is that right now, the loop looks like this:

while( we have more recipients )
{
  Figure out how this recipient wants to be forwarded
    {
      Simple piped
      Piped with an mbox header
      Via sendmail to some external address
    }
  Execute the program
  Put a pointer to its stdin in a pipe list
}

while( we have more data )
{
  while( we have more pipes )
    {
      Send the current chunk on its way
    }
}

This is optimized for small sets of forwards, where you want to get
everthing going as quickly as possible with the least internal overhead.
Find yourself with a large number of forwards and you're toast, fast.
The hassle of first storing the message to the database, then reading it
back out to the forwarding addresses a few at a time will be expensive for
these small sets, but should scale way up without killing your server...

Aaron


On Thu, 24 Apr 2003, Magnus Sundberg wrote:

> Aaron Stone wrote:
> > On Wed, 23 Apr 2003, Jesse Norell wrote:
> >
> >
> >>>While it seems like a sensible shortcut to skip the database if not
> >>>needed, the result is that every forwarding address needs to be processes
> >>>at once. So for 100 forwards, that's 100 instances of sendmail at once!
> >>
> >>  Offhand, can dbmail simply specify multiple recipients for a message
> >>(ie. one sendmail process, 100 recipients)?  It'd of course require
> >>some max limit to be set, and wouldn't address the actual issue here,
> >>but overall seems like it'd make more sense, wouldn't it?
> >>
> Forwarding to 100 mail adresses at the same time requires 100 sendmail
> processes?
> How is this implemented in Mailman, the list server running this
> mailinglist?
> With an ordinary unix mail installation, you specify a list to forward
> your mail to, for instance [EMAIL PROTECTED] in your /etc/aliases file
>
> Why not forward one mail to sendmail to [EMAIL PROTECTED] and then let
> sendmail do the list expansion, by looking up the alias from the
> database instead of /etc/aliases. I beleive this is one of the tasks
> sendmail is written for.
>
>
> >>--
> >>Jesse Norell
> >>jesse (at) kci.net
> >>
> >>_______________________________________________
> >>Dbmail-dev mailing list
> >>[email protected]
> >>http://twister.fastxs.net/mailman/listinfo/dbmail-dev
> >>
>
> /Magnus
>
>
>
> _______________________________________________
> Dbmail-dev mailing list
> [email protected]
> http://twister.fastxs.net/mailman/listinfo/dbmail-dev
>

Reply via email to