| Previous | Contents | Index | 
When attempting to forward all mail for one or more hosts to another 
host, you must take into account mailbox name conflicts. Two sorts of 
conflicts may arise. First, when forwarding mail for the host 
old-host-1 to the host 
new-host, you must ascertain whether or not there 
are mailbox names on old-host-1 which also exist 
on new-host but correspond to different users. 
For example, suppose you forward mail for 
bob@old-host-1 to 
bob@new-host. Have you just now sent Bob Smith's 
mail (bob@old-host-1) to Bilbo O. Baggin's 
mailbox (bob@new-host)? The second potential 
conflict arises when forwarding both mail for 
old-host-1 and old-host-2 
to new-host: are there conflicts between mailbox 
names on old-host-1 and 
old-host-2?
After you determine what sort of conflicts may arise, you can go ahead 
and set up the appropriate form of forwarding. If there are no mailbox 
name conflicts and the mailbox names remain unchanged, then 
you can use domain rewrite rules as described in Section 3.5.2.1. That 
is, if you will simply be forwarding all mail for 
user@old-host-1, 
user@old-host-2, ... etc., to 
user@new-host with no change in the 
user part, then you can use rewrite rules. This 
is the most efficient and straightforward method. If there are 
conflicts or the mailbox name does not remain unchanged, then you will 
have to use either a FORWARD mapping, alias database, or 
directory channel. Use of the FORWARD mapping is 
preferable when you can algorithmically map the incoming address to its 
forwarding address, e.g., if addresses of the form 
First.Last@example.com map to 
Last@host.example.com. If, however, you cannot 
specify a simple algorithm, then you should use either the alias 
database or a directory channel. Use the alias database when the 
incoming addresses are local addresses (e.g., 
old-host-1 is the local host). Otherwise, use the 
directory channel---or in some cases, use of a special channel marked 
with aliaslocal may be appropriate. The directory channel 
has the least optimal performance of all the options as it entails the 
use of an extra channel processing step. See Section 3.5.2.2 for an 
example in which the FORWARD mapping is used; for 
information on the alias database or directory channel, see, 
respectively, Sections 3.1.2 or 3.2.
3.5.2.1 Using Rewrite Rules to Forward Mail
Suppose you want to forward all mail for 
old-host-1 and old-host-2 
to new-host leaving the mailbox portion of the 
address unchanged. Then, to the upper portion of the PMDF.CNF file you 
would add the two rewrite rules
      old-host-1 $U%new-host$E$F old-host-2 $U%new-host$E$F  | 
$E$F causes these rewrite rules to only affect 
envelope To: addresses. It's that easy! Well, not quite. You should 
also consider whether or not you want to "transparently" 
forward these messages. The example shown above causes the forwarding 
to be transparent in the sense that no occurrence of 
user@old-host-1 in the message header 
will be changed. If you want those occurrences to be changed also, then 
remove the $E from the rewrite rules. Moreover, if you 
want user@old-host-1 to always be 
changed to user@new-host regardless of 
whether or not the address in question is forward (e.g., 
To: or cc:) or backward pointing 
(e.g., From:), then omit the $F.
One disadvantage to using rewrite rules to do this is that it often requires identifying and listing each old host name. If that is not feasible and you can identify the old host names via pattern matching, then use the FORWARD mapping as described in Section 3.5.2.2.
3.5.2.2 Using the FORWARD Mapping to Forward Mail
The FORWARD mapping is normally used to make pattern based, cosmetic 
changes to addresses after a message's envelope To: address has been 
rewritten and the destination of the message determined. However, with 
the FORWARD mapping's $D flag, it is possible 
to start the rewriting process anew using the output of the 
FORWARD mapping. That is, the FORWARD mapping 
may be used to alter an envelope To: address and then, 
using that altered address, redirect where the message should go. 
Again, note that the FORWARD mapping is used when the 
changes can be described in a pattern based, algorithmic fashion. If 
that is not possible then you will have to use either the alias file or 
database or a directory channel.
For instance, suppose that the following forwardings need to be effected:
      First.Last@example.com -> LastF@example.com (no change in destination host) First_Last@example.com -> LastF@example.com (no change in destination host) "First Last"@example.com -> LastF@example.com (no change in destination host) First.Last@MR.example.com -> "Last, First"%A1@MR.VAXA.example.com First_Last@MR.example.com -> "Last, First"%A1@MR.VAXA.example.com "First Last"@Mr.example.com -> "Last, First"%A1@MR.VAXA.example.com *-LIST@Obsolete.example.com -> *-L@Listserv.example.com *%vax*@VAXA.example.com -> *@VAX*.example.com  | 
FORWARD mapping 
table shown in Example 3-8. The following items of note are 
identified with callouts in that example.
$D flag as there is no change in the host name portion of 
  the address.
  $ 
  " sequence is used to represent a literal space.
  $D flag is specified.
  $% 
  sequence is used to represent a literal percent sign. An unquoted 
  percent sign would be interpreted as a wild card which matches a single 
  character as in the first three entries.
FORWARD mapping; see Chapter 5 for complete details on 
the syntax and rules which apply to entries in the FORWARD 
mapping table.
| Example 3-8 Using a FORWARD Mapping Table to Forward Messages | 
|---|
      FORWARD %*.*@example.com $2$0@example.com$Y (1) %*_*@example.com $2$0@example.com$Y "%*$ *"@example.com $2$0@example.com$Y (2) ! *.*@MR.example.com "$1,$ $0"%A1@MR.VAXA.example.com$Y$D (3) *_*@MR.example.com "$1,$ $0"%A1@MR.VAXA.example.com$Y$D "*$ *"@MR.example.com "$1,$ $0"%A1@MR.VAXA.example.com$Y$D ! *-LIST@Obsolete.example.com $0-L@Listserv.example.com$Y$D *$%vax*@VAXA.example.com $0@VAX$1.example.com$Y$D (4)  | 
3.5.2.3 Using the Forward Database to Forward Mail
The forward database can be used to perform forwarding similar to that 
performed using the alias file or alias database; see Section 3.5.1 
above. But when the alias file or alias database can be used, their use 
is generally preferable to using the forward database as their use is 
more efficient.
The sort of case where use of the forward database for forwarding mail 
is appropriate is generally when different sorts of forwarding need to 
be performed depending upon the source of the message being forwarded. 
Forward database forwarding can be made source specific, via the 
USE_FORWARD_DATABASE option. For instance, autoregistered 
addresses are often a case where source specific forwarding is 
appropriate; see Section 3.7.
| Previous | Next | Contents | Index |