Whenever the
sendmail program executes the program specified
by the P= delivery agent equate (P=), that program is given its
argv vector as specified by the
A= delivery agent equate (A=). As the last step in building that
argv, sendmail appends one or
more recipient addresses.
The decision as to whether it appends one address or many is
determined by the F=m delivery agent flag. If this
flag is absent, the delivery agent is given only one recipient.
Otherwise, if it is present, the delivery agent can be given many
recipients (subject to any limitation imposed by the
MaxRecipientsPerMessage option, MaxRecipientsPerMessage). In either case, if there are more recipients
than argv can accept, the delivery agent is rerun
as many times as is necessary to handle them all.
Note that sendmail is able to distinguish only
between failures involving one, many, or all of the recipients when
it is delivering with SMTP or LMTP. Otherwise, it judges delivery as
successful if a zero exit(2) value is returned
by a delivery agent. If the delivery agent fails to deliver to one of
many recipients, it exits with a nonzero value, and because of that
single failure, sendmail will presume that
delivery to all recipients failed. If the error is temporary, this
can result in duplicate delivery to each recipient listed prior to
the bad recipient.