Each of the PMDF systems which will be exchanging mail via BSMTP will need one incoming BSMTP channel and an outgoing BSMTP channel for each of the remote PMDF systems. The channel definitions should be along the lines of:
bsin_gateway smtp bsin.host0 bsout_remote1 smtp master user bsmtp daemon host1 BSOUT-REMOTE1 bsout_remote2 smtp master user bsmtp daemon host2 BSOUT-REMOTE2 ... bsout_remoteN smtp master user bsmtp daemon hostN BSOUT-REMOTENwhere
host0
is the name of the local PMDF host,
as used by the other remote PMDF systems, and
host1
, host2
, ...,
hostN
are the host names of the remote PMDF
systems. The strings remote1
,
remote2
, ..., remoteN
, and
REMOTE1
, ..., REMOTE2
, and
REMOTEN
are arbitrary and need just be distinct
from one another.
With the above definitions, the channel bsout_remote1 will
bundle up its BSMTP parcels and send them on to the fixed address
bsmtp@host1
. Likewise for the remaining BSOUT
channels.
The rewrite rules appear as
domain1 $U%$H@BSOUT-REMOTE1$Nbsout_remote1 .domain1 $U%$H$D@BSOUT-REMOTE1$Nbsout_remote1 domain2 $U%$H@BSOUT-REMOTE2$Nbsout_remote2 .domain2 $U%$H$D@BSOUT-REMOTE2$Nbsout_remote2 ... domainN $U%$H@BSOUT-REMOTEN$Nbsout_remoteN .domainN $U%$H$D@BSOUT-REMOTEN$Nbsout_remoteNwhere
domain1
, domain2
,
..., domainN
are the domain names of the remote
PMDF systems.
Finally, add to the FORWARD mapping table the entry
FORWARD bsmtp@host0 bsmtp@bsin.host0$Y$Dwhere, again,
host0
is the host name for the
local PMDF system which will be used by the BSOUT channels on the
remote PMDF systems. That way, when they send BSMTP parcels to
bsmtp@host0
, it will be forwarded on to the local
bsin_gateway channel.²
For example, assume that the acme.com domain will be exchanging BSMTP traffic with the acme.co.uk domain via the PMDF hosts hub.acme.com and athena.acme.co.uk. Then hub.acme.com would have the configuration
acme.co.uk $U%$H@BSOUT-REMOTE1$Nbsout_remote1 .acme.co.uk $U%$H$D@BSOUT-REMOTE1$Nbsout_remote1 ... bsin_gateway smtp bsin.hub.acme.com bsout_remote1 smtp master user bsmtp daemon athena.acme.co.uk BSOUT-REMOTE1and the FORWARD mapping table entry
FORWARD bsmtp@hub.acme.com bsmtp@bsin.hub.acme.com$Y$D
The system athena.acme.co.uk would have the configuration
acme.com $U%$H@BSOUT-REMOTE1$Nbsout_remote1 .acme.com $U%$H$D@BSOUT-REMOTE1$Nbsout_remote1 ... bsin_gateway smtp bsin.athena.acme.co.uk bsout_remote1 smtp master user bsmtp daemon hub.acme.com BSOUT-REMOTE1and the FORWARD mapping table entry
FORWARD bsmtp@athena.acme.co.uk bsmtp@bsin.athena.acme.co.uk$Y$D
With the above configurations, when a user on hub.acme.com sends mail to user@acme.co.uk, the message is routed to the bsout_remote1 channel. That channel will package the message up into a BSMTP parcel and send that parcel on to bsmtp@athena.acme.co.uk. Owing to the $Nbsout_remote1 tag in the acme.co.uk rewrite rules, those rewrite rules will be ignored when the bsout_remote1 channel enqueues the message. Instead, the normal rewrite rules for acme.co.uk will take effect and route the message containing the parcel out to the WAN (e.g., the Internet).
Note that the outbound BSMTP channels can construct
application/batch-smtp message parts containing multiple messages. As
such, sites may wish to use the after
channel keyword on
their BSOUT channels. So doing may prove advantageous for sites who
wish to bundle their mail up into large parcels and send those parcels
only once every few minutes, hours, or days. Also, the
ATTEMPT_TRANSACTIONS_PER_SESSION channel option might be used with the
BSOUT channels to prevent cases where, under heavy load, a BSOUT
channel just runs continuously bundling into a single parcel messages
queuing up to be sent out. This option puts an upper limit on the
number of messages placed in a single parcel and forces the channel to
close a parcel, send it along, and start a new parcel when there are
lots of messages to bundle up.
host0
is the official local host name for
the PMDF system. The least efficient is the FORWARD mapping table;
which method is best for a given site depends upon site-specific
issues. Use of the FORWARD mapping table is presented here because that
method works in all cases.