| Previous | Contents | Index | 
Once you have settled on a naming scheme and dealt with routing issues 
it is time to implement it. First you should establish an appropriate 
forwarding mechanism to convert incoming addresses to your internal 
format, i.e., to accept incoming mail and forward it to the 
appropriate internal mailbox. Several methods of doing this are 
discussed in Section 3.5. A specific example is also presented below. 
After establishing a method to handle incoming mail, you are ready to 
begin emitting mail to the outside world using your new address format. 
This is accomplished with either an address reversal database or 
REVERSE mapping as described in Section 3.3.2. Either of 
these will convert addresses in outbound mail messages to your 
centralized naming format. If your format leaves the mailbox portion of 
addresses alone, then you can accomplish this step more efficiently 
with domain rewrite rules similar to those described in Section 3.5.2.1. 
In this case, however, you would use the $R flag instead 
of $F.
If the conversion from internal addresses to centralized addresses is 
very algorithmic and an address in one format contains all of the 
information required to construct the equivalent address in the other 
format, then you should be able to use FORWARD and 
REVERSE mappings. However, this is rarely the case. At 
best, it is usually only possible to do this in one direction (e.g., 
Jane.Doe@Example.com -> jdoe@Example.com). It 
is far more likely that you will need to use the alias and address 
reversal databases, possibly in conjunction with the 
REVERSE mapping too. This is the situation covered in the 
example which follows.
Suppose the domain Example.Com has two general purpose computing 
machines, Marvel.Example.Com and 
Admin.Example.Com, an enclave of cc:Mail users reached via 
the gateway ccMail.Example.Com, and ALL-IN-1 IOS users 
reached via PMDF-MR using the gateway A1.Example.Com. From 
the outside world all mail to Example employees is addressed to 
first.last@Example.Com and 
Example.Com is actually the host Marvel.Example.Com. 
Suppose further that within ALL-IN-1, the mailbox name 
space is of the form "Last, 
First", in cc:Mail it is 
"First Last", and on vaxa.Example.Com 
and Admin.Example.Com mailbox names correspond to 
usernames. The name space for the four machines is shown in 
Table 3-6. 
| Internal address | Centralized address | 
|---|---|
| Marvel.Example.Com mailboxes | |
| richardsr@Marvel.Example.Com | Mr.Fantastic@Example.Com | 
| grimmb | The.Thing | 
| storms | Invisible.Girl | 
| stormj | Human.Torch | 
| Admin.Example.Com mailboxes | |
| wchristopher@Admin.Example.Com | Warren.Christopher@Example.Com | 
| lbentsen | Lloyd.Bentsen | 
| laspin | Les.Aspin | 
| jreno | Janet.Reno | 
| bbabbitt | Bruce.Babbitt | 
| mespy | Mike.Espy | 
| rbrown | Ronald.Brown | 
| rreich | Robert.Reich | 
| dshalala | Donna.Shalala | 
| hcisneros | Henry.Cisneros | 
| fpena | Federico.Pena | 
| holeary | Hazel.OLeary | 
| rriley | Richard.Riley | 
| jbrown | Jesse.Brown | 
| ccMail.Example.Com mailboxes | |
| "Harry Blackmun"@ccMail.Example.Com | Harry.Blackmun@Example.Com | 
| "William Rehnquist" | William.Rehnquist | 
| "John Paul Stevens" | John.Paul.Stevens | 
| "Sandra Day OConnor" | Sandra.Day.OConnor | 
| "Antonin Scalia" | Antonin.Scalia | 
| "Anthony Kennedy" | Anthony.Kennedy | 
| "David Souter" | David.Souter | 
| "Clarence Thomas" | Clarence.Thomas | 
| "Ruth Bader Ginsberg" | Ruth.Bader.Ginsburg | 
| A1.Example.Com mailboxes | |
| "Burford, Anne"@A1.Example.Com | Anne.Burford@Example.Com | 
| "Deaver, Michael" | Michael.Deaver | 
| "Donovan, Raymond" | Raymond.Donovan | 
| "Meese, Ed" | Ed.Meese | 
| "Nofziger, Lyn" | Lyn.Nofziger | 
For this case, we can easily map back and forth between the centralized 
format and cc:Mail or ALL-IN-1 addresses. 
However, we can only take advantage of this with outbound messages. For 
inbound messages you still need to know which host, 
ccMail.Example.Com or A1.Example.Com, to 
which to direct a message. We will use an alias database to handle 
incoming mail.
There should be a DNS MX record for 
Example.Com which points to 
Marvel.Example.Com. Moreover, 
Marvel.Example.Com should either use 
Example.Com as its official local host name (host name on 
the local channel), or rewrite Example.Com to its official 
local host name. By doing this, mail to 
user@Example.Com is equated to the local channel 
and user is then looked up in to the alias file 
or database. This then allows us to use the alias database as a means 
of forwarding incoming mail for Example.Com to its 
correct, internal destination. Also, USE_REVERSE_DATABASE 
should be set to 5,
      USE_REVERSE_DATABASE=5  | 
REVERSE mapping and address reversal database to all 
header addresses instead of just reverse pointing addresses.
The alias database source file shown in Example 3-9, the 
address reversal database source file shown in Example 3-10, and the 
REVERSE mapping table shown in Example 3-11 together 
implement this centralized naming scheme.d For instance, a 
message coming from jreno@Admin.Example.Com will have its 
From: address changed to 
Janet.Reno@Example.Com in accord with the entry in the 
address reversal database. Similarly messages from "Harry 
Blackmun"@ccMail.Example.Com and "Sandra Day 
OConnor"@Example.Com will have their From: 
addresses changed to Harry.Blackmun@Example.Com and 
Sandra.Day.OConnor@Example.Com by the second and first 
entries in the REVERSE mapping table. Incoming mail 
messages to Janet.Reno@Example.Com will be forwarded to 
jreno@Admin.Example.Com in accord with the entry in the 
alias database.
| Example 3-9 Alias Database Source File | 
|---|
      ! ! Marvel.Example.Com users ! Mr.Fantastic richardsr@Marvel.Example.Com The.Thing grimmb@Marvel.Example.Com Invisible.Girl storms@Marvel.Example.Com Human.Torch stormj@Marvel.Example.Com ! ! Admin.Example.Com users ! Warren.Christopher wchristopher@Admin.Example.Com Lloyd.Bentsen lbentsen@Admin.Example.Com Les.Aspin laspin@Admin.Example.Com Janet.Reno jreno@Admin.Example.Com Bruce.Babbitt bbabbitt@Admin.Example.Com Mike.Espy mespy@Admin.Example.Com Ronald.Brown rbrown@Admin.Example.Com Robert.Reich rreich@Admin.Example.Com Donna.Shalala dshalala@Admin.Example.Com Henry.Cisneros hcisneros@Admin.Example.Com Federico.Pena fpena@Admin.Example.Com Hazel.OLeary holeary@Admin.Example.Com Richard.Riley rriley@Admin.Example.Com Jesse.Brown jbrown@Admin.Example.Com ! ! ccMail.Example.Com users ! Harry.Blackmun "Harry Blackmun"@ccMail.Example.Com William.Rehnquist "William Rehnquist"@ccMail.Example.Com John.Paul.Stevens "John Paul Stevens"@ccMail.Example.Com Sandra.Day.OConnor "Sandra Day OConnor"@ccMail.Example.Com Antonin.Scalia "Antonin Scalia"@ccMail.Example.Com Anthony.Kennedy "Anthony Kennedy"@ccMail.Example.Com David.Souter "David Souter"@ccMail.Example.Com Clarence.Thomas "Clarence Thomas"@ccMail.Example.Com Ruth.Bader.Ginsburg "Ruth Bader Ginsberg"@ccMail.Example.Com ! ! A1.Example.Com users ! Anne.Burford "Burford, Anne"@A1.Example.Com Michael.Deaver "Deaver, Michael"@A1.Example.Com Raymond.Donovan "Donovan, Raymond"@A1.Example.Com Ed.Meese "Meese, Ed"@A1.Example.Com Lyn.Nofziger "Nofziger, Lyn"@A1.Example.Com  | 
| Example 3-10 Reverse Database Source File | 
|---|
      ! ! Marvel.Example.Com users ! richardsr@Marvel.Example.Com Mr.Fantastic@Example.Com grimmb@Marvel.Example.Com The.Thing@Example.Com storms@Marvel.Example.Com Invisible.Girl@Example.Com stormj@Marvel.Example.Com Human.Torch@Example.Com ! ! Admin.Example.Com users ! wchristopher@Admin.Example.Com Warren.Christopher@Example.Com lbentsen@Admin.Example.Com Lloyd.Bentsen@Example.Com laspin@Admin.Example.Com Les.Aspin@Example.Com jreno@Admin.Example.Com Janet.Reno@Example.Com bbabbitt@Admin.Example.Com Bruce.Babbitt@Example.Com mespy@Admin.Example.Com Mike.Espy@Example.Com rbrown@Admin.Example.Com Ronald.Brown@Example.Com rreich@Admin.Example.Com Robert.Reich@Example.Com dshalala@Admin.Example.Com Donna.Shalala@Example.Com hcisneros@Admin.Example.Com Henry.Cisneros@Example.Com fpena@Admin.Example.Com Federico.Pena@Example.Com holeary@Admin.Example.Com Hazel.OLeary@Example.Com rriley@Admin.Example.Com Richard.Riley@Example.Com jbrown@Admin.Example.Com Jesse.Brown@Example.Com  | 
| Example 3-11 REVERSE Mapping Table | 
|---|
      REVERSE "*$ *$ *"@ccMail.Example.Com $0.$1.$2@Example.Com$Y "*$ *"@ccMail.Example.Com $0.$1@Example.Com$Y "*,$ *"@A1.Example.Com $1.$0@Example.Com$Y  | 
The alias and address reversal databases are generated from your source 
files with the PMDF CRDB (OpenVMS) or pmdf 
crdb (UNIX or NT) utility as described in Sections 
3.1.2 and 3.3.2. See Chapter 30 and  Chapter 31 for information 
on the CRDB or crdb utility itself. When generating these 
databases on VMS, it is best to use an intermediate file so as to 
eliminate any windows during which the "live" databases are 
in a mixed state. For instance, use the OpenVMS commands,
      $ PMDF CRDB alias-source-file PMDF_TABLE:aliases.tmp $ PMDF CRDB reverse-source-file PMDF_TABLE:reverse.tmp $ RENAME PMDF_TABLE:aliases.tmp PMDF_ALIAS_DATABASE $ RENAME PMDF_TABLE:reverse.tmp PMDF_REVERSE_DATABASE  | 
      # pmdf crdb alias-source-file PMDF_ALIAS_DATABASE # pmdf crdb reverse-source-file PMDF_REVERSE_DATABASE  | 
      C:\ pmdf crdb alias-source-file PMDF_ALIAS_DATABASE C:\ pmdf crdb reverse-source-file PMDF_REVERSE_DATABASE  | 
If you are using the PMDF multithreaded SMTP server (tcp_* 
channels), then be sure to restart the SMTP server after generating new 
database files. If you have merely added entries to an existing 
database file, then you do not need to restart the SMTP server.
      d  Many sites maintain a single source 
        file from which, using a site-supplied procedure, they generate 
        
    
     | 
  
| Previous | Next | Contents | Index |