Previous   Next   Contents       (Exim 4.50 Specification)

25. Address batching in local transports

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.

Previous  Next  Contents       (Exim 4.50 Specification)