Re: [Exim] "421 too many recipients" got from other MTAs

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Enrico Zini
CC: exim-users
Subject: Re: [Exim] "421 too many recipients" got from other MTAs
On Mon, 25 Mar 2002, Enrico Zini wrote:

> Since all press review mails are identical, I use multiple recipients to
> speed up delivery. I limited the number of recipients per message to
> 2000 because I feared that the whole list would create some problems
> somewhere.


I suspect it would be more efficient to use an even lower limit.

> All is working wonderfully, except a remote MTA is giving "421 too many
> recipients" errors to our exim server.


The RFC minimum maximum (if you see what I mean) is 100.

> The question is: will exim eventually retry later with shorter recipient
> lists, or will the recipients served by that mail host never receive
> their mail?


Exim will not automatically reduce the number of recipients. It has no
memory of that sort of thing. However, you didn't say where the 421 was
coming. If the SMTP dialogue is like this:

mail from:<xxx>
250 OK
mail from:<yyy>
250 OK
mail from:<zzz>
421 too many
...
data
354 go ahead
....
.
250 OK

then the server has accepted some recipients, and rejected others. Exim
will try later with the remaining recipients, so the message will
eventualy get through. On the other hand, if the server is accepting all
the recipients and then giving the 421 to DATA, the retry will again
offer all the recipients.

> I generate the message body, and then send it multiple times via SMTP to
> exim giving 2000 different recipients per send. I don't touch the
> message body between sends, so the message-id is identical. Do I need
> to change it instead?


No, I don't think so, but I am not an expert on message-id header lines.

> Do you think that exim will have problems if I send a single mail to all
> 100000+ recipients? That is, am I running for trouble if I start
> sending exim more than 100000 RCPT TO: for a single message?


Yes. (1) It will use a lot of memory. (2) It will take a long time to
route all the recipients before it delivers any of them. Routing is a
serial process. You'll get some parallelism if you split it up.
(3) Receiving servers may not like lots of recipients, as you have seen.

I would stick to 100 recipients, sorted by domain, and use a scheme for
feeding the messages to Exim gently. There was a thread about this on
the mailing list a few months ago.


--
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.