HP OpenVMS Systems Documentation

Content starts here

Compaq TCP/IP Services for OpenVMS

Previous Contents Index

Chapter 17
Configuring and Managing SMTP

The Simple Mail Transfer Protocol (SMTP) is a standard protocol that provides a reliable and efficient mail delivery system between systems communicating in a TCP/IP network. SMTP specifies the format of control messages sent between two machines to exchange electronic mail, but it does not specify the mail interface.

The TCP/IP Services product implements SMTP as an OpenVMS symbiont that works with the OpenVMS Mail utility.

This chapter reviews key concepts and describes:

See the DIGITAL TCP/IP Services for OpenVMS User's Guide for information about using SMTP to send and receive mail.

17.1 Key Concepts

To be reliable, electronic mail systems must be able to cope with situations where the recipient is temporarily unavailable, for example, if the recipient's host is down or off line. Mail must also be able to handle situations where some of the recipients on a distribution list are available and some are not.

SMTP is a store-and-forward mail protocol that accepts mail from an originating host and forwards it through one or more intermediate hosts before it reaches its final destination. Note that this behavior differs from OpenVMS Mail, where mail is sent directly from the originating node to the destination node.

17.1.1 How SMTP Clients and Servers Communicate

In most implementations, SMTP servers listen at port 25 for client requests. In the TCP/IP Services implementation of SMTP, the SMTP receiver is invoked by the auxiliary server when an inbound TCP/IP connect comes in to port 25 (if the SMTP service is enabled). The auxiliary server runs the command procedure specified in the SMTP service database entry that runs the receiver. The receiver image is SYS$SYSTEM:TCPIP$SMTP_RECEIVER.EXE. The receiver process runs in the TCPIP$SMTP account.

The SMTP symbiont processes all mail on the host. It receives jobs one at a time from the generic SMTP queue and delivers them either locally by means of OpenVMS Mail, or remotely by means of SMTP.

The configuration procedure TCPIP$CONFIG sets up the SMTP queues for you. See Section 17.2 for more information on configuring SMTP.

After receiving a client request, the SMTP server responds, indicating its status (available or not available). If the server is available, it starts an exchange of control messages with the client to relay mail. (Like FTP, SMTP does not define a message format. SMTP commands are sent as ASCII text, and the SMTP server at the remote host parses the incoming message to extract the command.)

The following steps occur:

  1. The auxiliary server listens for requests, starts the SMTP receiver, and accepts the TCP connection.
  2. The client identifies itself by sending its fully qualified domain name.
  3. The server replies with its own fully qualified domain name.
  4. The client sends the full e-mail address of the sender enclosed in angle brackets; if the server is able to accept the mail, it returns a readiness code.
  5. The client sends the full mail address (also enclosed in angle brackets) of the message's intended recipient.
  6. The client sends the body of the message.

A minimum of five control message commands are required to conduct the preceding sequence. Table 17-1 describes these commands.

Table 17-1 SMTP Client Commands
Command Description
HELO Identifies the originating host to the server host. Use the /DOMAIN qualifier to provide the name of the originating host.
MAIL FROM:< reverse-path> Identifies the address at which undeliverable mail should be returned. Usually is the originating host.
RCPT TO:< forward-path> Address of the intended receiver. If sending mail to multiple recipients, use one RCPT TO command for each recipient.
DATA Signals the end of the RCPT TO commands and tells the recipient to prepare to receive the message itself.
QUIT Indicates no more commands.

These commands are described in RFC 821.

17.1.2 Understanding the SMTP Control File

With TCP/IP Services SMTP, each mail message is packaged into a special-purpose binary file called a control file. This control file is submitted to a generic SMTP queue to be processed by the SMTP symbiont. Each control file contains one SMTP mail message. Note that an SMTP message addressed to multiple recipients is stored in one control file.

Control file names provide information about the mail contained within. The format for the control file name is as follows:



yymmddmmshh is the timestamp taken when the file is created.
user-name is the user name of the process in which the control file was created. Values for this name include:
  • TCPIP$SMTP --- The mail arrived through SMTP. The file was created by the SMTP receiver process running in the TCPIP$SMTP account.
  • MAIL$SERVER --- The mail arrived over DECnet and was destined for an SMTP address. In this case, the control file is created by the DECnet MAIL11 network object that runs the MAIL$SERVER account. This happens when the user sets mail forwarding to an SMTP address.
  • SYSTEM --- If the control file is in the TCPIP$SMTP account directory, this indicates the message is either undeliverable mail, or a mail message from the SYSTEM account.
  • username --- Mail composed by the user and sent to an SMTP address.
scnode is the value of the SYSGEN SCSNODE parameter.

Control files are written to the TCPIP$SMTP account's login directory. The default directory for this account is SYS$SPECIFIC:[TCPIP$SMTP].

17.1.3 Understanding OpenVMS Mail Headers

The OpenVMS Mail utility contains up to four headers on a mail message:

  • From:
  • To:
  • Subj:
  • CC:

SMTP supports a large set of mail headers, including:

  • Resent-Reply-To:
  • Resent-From:
  • Reply-To:
  • Resent-Sender:
  • Sender:
  • ReturnPath:

When it composes the OpenVMS Mail message, SMTP uses the text from the first SMTP header in the list that it finds for the OpenVMS Mail From header.

17.1.4 Understanding SMTP Addresses

SMTP addresses are of the form userID@domain.name, where domain.name refers to a domain for which there is a DNS MX record. Mail exchange (MX) records tell SMTP where to route the mail for the domain.

17.1.5 How SMTP Routes Mail

To find a destination address, SMTP routing looks up addresses in this order:

  1. Local MX database
  2. BIND MX records
  3. BIND A records
  4. Local hosts database

Most messages are routed using the BIND records. Local MX records are useful if you want to customize your system's mail routing. DNS-based records are networkwide. If you have local MX records, remember that they are case sensitive and are available on the local node only. Using Local MX Records

SMTP uses the information stored in local MX records, if available, to route mail. MX tells the SMTP where to route mail for a particular destination domain. The DNS (such as BIND) maintains the MX records, but SMTP makes use of them. Each MX record contains the following fields:

Destination domain Matches the domain portion of the address. This is the key field of the MX record. For example, if mail is to be sent to jones@xyzcorp.com , MX lookup is done on the destination domain xyzcorp.com .

Multiple MX records for the same destination are allowed. Therefore, in a sense, the destination domain field allows duplicate keys.

Gateway host name Specifies the name of the host through which mail sent to the destination domain should be routed.
Preference Prioritizes multiple MX records for the same destination domain. The lower the preference value, the higher the priority for the MX record. That is, lower-preference MX records are attempted before higher-preference records.

Multiple MX records to the same domain can have the same preferences.

Creating multiple MX records for the same destination domain provides the following advantages:

  • Enables load balancing between mail routers. In this case, use the same preferences for all the MX records with the same destination domain.
  • Ensures that mail can still be delivered even if one of the routers becomes unavailable.
  • Provides MX-based routes for mail inside and outside a firewall.

Use the SET MX_RECORDS command to enter routing information to the MX database. For example, the following command assigns MERLIN as the gateway for CROW with a preference 100:


MX routing first checks the local preference but tries it only once in the lookup process.

See the Compaq TCP/IP Services for OpenVMS Management Command Reference for a detailed desciption of the SET MX_RECORDS command. Using SMTP Zones and Alternate Gateways

When configuring SMTP, you supply the name of the domain for your environment with the /ZONE qualifier to the SET CONFIGURATION SMTP command. If you do not supply a domain name, the zone defaults to one level higher than your local domain. For example, if the fully qualified domain name is a.b.com , the default value of /ZONE is b.com (assuming that, because TCPIP has been started, the domain is known).

Mail for delivery outside of your zone is sent to its destination by the alternate gateway, as defined by the /GATEWAY qualifier. If you define an alternate gateway, SMTP routes mail to destinations outside the SMTP zone defined on the alternate gateway. SMTP uses MX records for routing mail within the zone and, if no alternate gateway is defined, elsewhere as well.

The following example defines the alternative gateway MY.ALT.MYZONE.COM and the zone MYZONE.COM.


See the Compaq TCP/IP Services for OpenVMS Management Command Reference manual for a detailed desciption of the SET CONFIGURATION SMTP command.

To send mail to the alternate gateway, SMTP does an MX lookup on the alternate gateway and uses the resulting list of MX records to get the mail to the alternate gateway. To understand the advantages of this method over a simple lookup of A records, consider the following example.

The alternate gateway and zone are configured as follows:

Alternate gateway:  relay.abc.com
Zone:               abc.com

Further, there is no A record configured for the destination domain relay.abc.com. Therefore, relay.abc.com is not a valid host name. This is demonstrated by the following command:

%TCPIP-W-NORECORD, Information not found
-RMS-E-RNF, record not found

There is no such host as relay.abc.com because relay.abc.com is only an MX destination domain with multiple records at the same preference.

MX records have been set up accordingly. For example:


                                 BIND MX database

   Server:          host.abc.com

   Gate address     Preference       Gate name          100              mail11.abc.com          100              mail13.abc.com          200              mail2.abc.com          200              mail1.abc.com          300              mail21.abc.com          300              mail12.abc.com

In this example, when SMTP receives a mail message destined for a domain outside of the abc.com domain, it uses the list of MX records to send the mail to the entity called relay.abc.com . Even when mail is routed through the alternate gateway, the MX lookup list is used.

This type of configuration provides redundancy. Even if one or more of the systems pointed to by the MX records is down, mail can be routed through one of the systems that is running.

If the alternate gateway was reached through a simple A record (hostname) lookup and the host was down or could not be reached, all outbound mail outside the zone would have to wait until the host came back on line.

You can define the alternate gateway using an IP address; this bypasses the MX lookup logic. For example:


In this case, all mail destined for the alternate gateway will go to the specified IP address ( with no MX lookup.

17.2 Configuring SMTP

Use the configuration procedure TCPIP$CONFIG to set up SMTP on your host. If you need to reconfigure or further refine your SMTP environment, use the SET CONFIGURATION SMTP command. With this command, you can change the way SMTP:

  • Relays messages
  • Determines the route
  • Determines how many times it retries a relay and the length of time between delivery attempts
  • Sends and receives timeouts

For a complete description of this command, its qualifiers, and options, see Compaq TCP/IP Services for OpenVMS Management Command Reference.

17.2.1 Mail Utility Files

Table 17-2 lists the utility files created during the SMTP configuration.

Table 17-2 Default SMTP Utility Files
File Name Description
LOGIN.COM Used by the auxiliary server.
TCPIP$SMTP_RECV_RUN.COM Used by the auxiliary server, and stored in the TCPIP$SYSTEM directory.
TCPIP$SMTP_LOGFILE.LOG Log of mail queue and symbiont activities.
TCPIP$SMTP_RECV_RUN.LOG Log of incoming mail.

To analyze the consistency of the SMTP queues against the directories containing the SMTP utility files, enter the ANALYZE MAIL command.

17.2.2 Creating a Postmaster Account

The postmaster account is a required account that receives all undeliverable mail. The SMTP process runs under user account TCPIP$SMTP. Compaq recommends that you do not change this account.

SMTP requires that the system be able to receive mail addressed to the user name POSTMASTER. Set OpenVMS Mail to forward the mail addressed to POSTMASTER to the SYSTEM account. For example:


This ensures that mail messages that could be neither delivered nor bounced back to the sender are sent to the SYSTEM user (usually the system manager).

You can modify the From: address on undelivered mail by specifying a user name as the value for the following logical name:


In this example, user-name is the user name without the domain portion of the address. For more information, see Section 17.5.

By default, undelivered mail bears the following From address:


17.3 Creating a Local Alias File

You can used a local alias to define a list of domains that SMTP will interpret as local. If SMTP receives mail for any of the domains specified as local aliases, it will deliver the mail on the local system using OpenVMS Mail rather than forward it on to another system.

This is useful in an OpenVMS Cluster environment, where you want mail sent to any of the cluster hosts to be delivered locally rather than take the extra step of relaying it from one cluster node to another. It is also useful if you want to set up your OpenVMS host to receive inbound mail either for different domains unrelated to the actual domain of your host or for alias names of your host.

For example, if your host was a.b.com and you had entries for x.y.com and y.z.com in your local alias file, any mail to x.y.com and y.z.com would be delivered locally on your host. (To implement this fully, set up DNS MX records so that mail to the x.y.com and y.z.com domains is routed to your host.) For more information about setting up DNS records, see Chapter 5.

To define a list of domains that SMTP interprets as local:

  1. Create the file TCPIP$SMTP_LOCAL_ALIASES.TXT.
  2. Include a list of domain names that are to be recognized as local. The domain names should have a maximum of 64 characters with one line per name, up to a maximum of 255 names. For example:

    ! This is the local alias file.
  3. Copy the TCPIP$SMTP_LOCAL_ALIASES.TXT file to one of the following locations:
    • TCPIP$SMTP_COMMON, where each host listed in the TCPIP$SMTP_LOCAL_ALIASES.TXT file receives clusterwide messages
    • SYS$SPECIFIC:[TCPIP$SMTP] (local system use)
  4. Stop and then restart SMTP for the change to take effect.

If SMTP cannot locate the TCPIP$SMTP_LOCAL_ALIASES.TXT file, it looks for the file TCPIP$SMTP_COMMON:UCX$SMTP_LOCAL_ALIASES.TXT. This ensures functionality for mixed clusters (that is, clusters running the current version of TCP/IP Services and earlier versions of the product (UCX)), where the TCPIP$SMTP_COMMON and UCX$SMTP_COMMON logicals point to the same directory. Note that when SMTP looks for UCX$SMTP_LOCAL_ALIASES.TXT it looks for it in the TCPIP$SMTP_COMMON: directory rather than in the UCX$SMTP_COMMON: directory.

17.4 Managing SMTP

Table 17-3 summarizes the commands you use to monitor and manage SMTP.

Table 17-3 SMTP Management Commands
Command Function Required Privilege
ANALYZE MAIL Verifies the consistency of the SMTP queues against the SMTP working directory. SYSPRV or BYPASS.
DISABLE SERVICE SMTP Stops SMTP service. Follows OpenVMS file protection rules.
ENABLE SERVICE SMTP Initializes communications for SMTP. Follows OpenVMS file protection rules.
REMOVE MAIL Deletes the specified mail entries from the SMTP queues.  
SEND MAIL SMTP requeues a mail message for delivery. SYSPRV or BYPASS for messages other than yours.
SET CONFIGURATION SMTP Modifies the characteristics of the SMTP sender and receiver. SYSPRV or BYPASS.
SHOW CONFIGURATION SMTP Displays the system characteristics for SMTP. Follows OpenVMS file protection rules.
SET SERVICE SMTP Defines, modifies, or deletes the SMTP service in the services database. SYSPRV or BYPASS.
SHOW MAIL Displays information about mail for the specified user. SYSPRV or BYPASS.
SHOW SERVICE SMTP Displays statistical information about the SMTP server. Follows OpenVMS file protection rules.
START MAIL Starts the SMTP queuing mechanism. SYSPRV or BYPASS.
STOP MAIL Stops the SMTP queuing mechanism. SYSPRV or BYPASS.

Previous Next Contents Index