Previous | Contents | Index |
The first step in converting a VMS To: style addess to PMDF's format is
to remove the foreign protocol "wrapper" from addresses of
the form IN%"address"
and then apply the translations of
Table 18-1. The foreign protocol wrapper is usually, but not
always, IN%" "
.
Sequence | Is translated to | |
---|---|---|
' | " | (double quote) |
\' | ' | (single quote) |
\d | " | (double quote) |
\s | ' | (single quote) |
\D | " | (double quote) |
\S | ' | (single quote) |
\\ | \ | (backslash) |
IN%"'tony li'@hmc.edu" maps to "tony li"@hmc.edu IN%"\'tonyli\'@hmc.edu" maps to 'tonyli'@hmc.edu |
The next step is to apply any protocol-address-specific mapping that
has been supplied. PMDF checks the mapping file to see if a mapping
table named PROTOCOL-TO-PMDF
exists. If this table exists,
it is applied separately to each address inside of the foreign protocol
wrapper. Specifically, a probe string of the form (note the use of the
vertical bar character, |)
channelname|protocolname|address |
channelname
is the name of the
PMDF channel associated with the incoming mail. This will be
d
if network mail is being received and a d
channel exists; otherwise it will be l
.
protocolname
is the name of the foreign protocol
used including the percent sign; this is usually, but not always,
IN%
. And address
is simply the
address being converted.
If a mapping entry matches the probe string, the result of the application of the mapping replaces the original addresses. If no entry matches the address is not changed in any way.
The availability of the actual protocol name used makes it possible for
PMDF to handle multiple protocol names and associate different syntax
rules with each one. (Of course, this is only possible if the necessary
syntax modifications can be expressed in the mapping table.) For
example, suppose you want to define a new foreign protocol
REVERSE%
that accepts addresses of the form
user@domain
, but the elements in domain are reversed. That
is, instead of writing IN%"user@ymir.example.com"
you
would write IN%"user@com.example.ymir"
. The following
mapping would accomplish this for all domain specifications of six
parts or less:
PROTOCOL-TO-PMDF *|REVERSE$%|%*@%*.*.*.*.*.* $1$2@$9.$8.$7.$6.$5.$3$4 *|REVERSE$%|%*@%*.*.*.*.* $1$2@$8.$7.$6.$5.$3$4 *|REVERSE$%|%*@%*.*.*.* $1$2@$7.$6.$5.$3$4 *|REVERSE$%|%*@%*.*.* $1$2@$6.$5.$3$4 *|REVERSE$%|%*@%*.* $1$2@$5.$3$4 *|REVERSE$%|%*@%* $1$2@$3$4 |
This more complex iterative mapping will reverse domain specifications containing eight or fewer parts:
PROTOCOL-TO-PMDF *|REVERSE$%|%*@%*.* $R{REVERSE}$1$2|$5.|$3$4 *|REVERSE$%|%*@%* $1$2@$3$4 {REVERSE}*|*|%*.%* $R{REVERSE}$0|$1$4$5.|$2$3 {REVERSE}*|*|* $0@$1$2 |
It would also be necessary to define a logical name for the new
REVERSE%
protocol:
$ DEFINE/SYSTEM/EXEC MAIL$PROTOCOL_REVERSE PMDF_SHARE_LIBRARY |
The final step in converting a VMS To: address to PMDF's format is to
convert DECnet-style addresses into RFC 822 addresses. Specifically,
addresses of the form IN%system::user
are converted into RFC 822 addresses of the form
USER@SYSTEM
. Multiple routing systems
can be specified; the result will be a "percent-style"
address, e.g.,
IN%sys1::sys2::user
will be
converted to USER%SYS2@SYS1
.
The forced conversion of such addresses to upper case is performed by
VMS MAIL and is unavoidable. Double quotes can be used to eliminate the
conversion to upper case; they also make it possible to specify more
than one address inside a single foreign protocol wrapper.
Previous | Next | Contents | Index |