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 |