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 |