The only remote transport (smtp) is normally configured to handle more than one address at a time, so that when several addresses are routed to the same remote host, just one copy of the message is sent. Local transports, however, normally handle one address at a time. That is, a separate instance of the transport is run for each address that is routed to the transport. A separate copy of the message is delivered each time.
In special cases, it may be desirable to handle several addresses at once in a local transport, for example:
The three local transports (appendfile, lmtp, and pipe) all have the same options for controlling multiple (“batched”) deliveries, namely batch_max and batch_id. To save repeating the information for each transport, these options are described here.
The batch_max option specifies the maximum number of addresses that can be delivered together in a single run of the transport. Its default value is one. When more than one address is routed to a transport that has a batch_max value greater than one, the addresses are delivered in a batch (that is, in a single run of the transport), subject to certain conditions:
If the generic envelope_to_add option is set for the transport, the Envelope-to: header that is added to the message contains all the addresses that are batched together.
The appendfile and pipe transports have an option called use_bsmtp, which causes them to deliver the message in “batched SMTP” format, with the envelope represented as SMTP commands. The check_string and escape_string options are forced to the values
check_string = "." escape_string = ".."
when batched SMTP is in use. A full description of the batch SMTP mechanism is given in section 44.11. The lmtp transport does not have a use_bsmtp option, because it always delivers using the SMTP protocol.
If you are not using BSMTP, but are using a pipe transport, you can include $pipe_addresses as part of the command. This is not a true variable; it is a bit of magic that causes each of the recipient addresses to be inserted into the command as a separate argument. This provides a way of accessing all the addresses that are being delivered in the batch.
If you are using a batching appendfile transport without use_bsmtp, the only way to preserve the recipient addresses is to set the envelope_to_add option. This causes an Envelope-to: header line to be added to the message, containing all the recipients.