Sdílet prostřednictvím


How to Use Telnet to Test SMTP Communication

Microsoft Exchange Server 2007 will reach end of support on April 11, 2017. To stay supported, you will need to upgrade. For more information, see Resources to help you upgrade your Office 2007 servers and clients.

 

Applies to: Exchange Server 2007, Exchange Server 2007 SP1, Exchange Server 2007 SP2, Exchange Server 2007 SP3

This topic explains how to use Telnet to test Simple Mail Transfer Protocol (SMTP) communication between messaging servers. By default, SMTP listens on port 25. If you use Telnet on port 25, you can enter the SMTP commands that are used to connect to an SMTP server and send a message exactly as if your Telnet session was an SMTP messaging server. You can see the success or failure of each step in the connection and message submission process.

The following list describes the scenarios where you may want to use Telnet to test SMTP communication to or from the transport servers that exist in your Microsoft Exchange Server organization:

  • Connect to your organization's Edge Transport server from a host that is located outside your perimeter network and send a test message.

  • Connect to a remote messaging server from your organization's Edge Transport server and send a test message.

Before You Begin

By default, the message transfers that occur between Hub Transport servers are encrypted and authenticated. You can only use Telnet on port 25 to submit messages to an internal Hub Transport server that has a Receive connector that is configured to allow anonymous access or Basic authentication to receive messages. Anonymous access is required for Internet-facing servers. When you send a message to a Receive connector that accepts Basic authentication, you must have a utility to convert the text strings that are used for the username and password into the Base64 format. Because the user name and password are easily discernable when Basic authentication is used, we don't recommend Basic authentication without encryption.

The Internet-facing SMTP messaging servers of many organizations are configured to validate the source IP address, the corresponding domain name system (DNS) domain name, and the reverse lookup IP address of any Internet host that tries to send a message to the server. If you connect a test computer to the Internet and try to send a test message to a remote messaging server by using Telnet on port 25, your message may be rejected. To satisfy security requirements that may be imposed by the remote messaging server, you can connect to the remote messaging server from your Edge Transport server. The accepted domains that are configured on the Edge Transport server have the appropriate DNS mail exchange (MX) records, address (A) records, and reverse lookup records that identify the Edge Transport server as a legitimate and traceable e-mail message source for those accepted domains on the Internet.

The procedures in this topic show how to use the Microsoft Telnet client that is included with Microsoft Windows Server 2003 and Windows XP. Earlier versions of Windows or third-party Telnet clients may require different syntax. The commands in the Windows Telnet client are not case-sensitive. The SMTP command verbs are capitalized for clarity.

You can't use the backspace key after you have connected to the destination SMTP server within the Telnet session. If you make a mistake as you type an SMTP command, you must press ENTER and then type the command again. Unrecognized SMTP commands or syntax errors result in an error message that resembles the following:

500 5.3.3 Unrecognized command

Using the Nslookup Command-Line Tool to Find the IP Address of an SMTP Server

To connect to a destination SMTP server by using Telnet on port 25, you must have the fully qualified domain name (FQDN) or the IP address of the SMTP server. The easiest way to find this information is to use the Nslookup command-line tool to find the MX record for the destination domain.

To use the Nslookup tool to find the IP address of an SMTP server

  1. At a command prompt, type nslookup, and then press ENTER. This command opens the Nslookup session.

  2. Type set type=mx and then press ENTER.

  3. Type set timeout=20 and then press ENTER. By default, Windows DNS servers have a 15-second recursive DNS query time-out limit.

  4. Type the name of the domain for which you want to find the MX record. For example, to find the MX record for the fabrikam.com domain, type fabrikam.com., and then press ENTER.

    Note

    The trailing period ( . ) indicates a FQDN. The use of the trailing period prevents any default DNS suffixes that are configured for your network from being unintentionally added to the domain name.

    The output of the command will resemble the following:

    fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com
    fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com
    mail1.fabrikam.com internet address = 192.168.1.10
    mail2 fabrikam.com internet address = 192.168.1.20
    

    You can use any of the host names or IP addresses that are associated with the MX records as the destination SMTP server. A lower value of preference indicates a preferred SMTP server. You can use multiple MX records and different values of preference for load balancing and fault tolerance.

  5. When you are ready to end the Nslookup session, type exit, and then press ENTER.

Note

Firewall or Internet proxy restrictions that are imposed on your organization's internal network may prevent you from using the Nslookup tool to query public DNS servers on the Internet.
MX records are not strictly required for internal message flow inside an Exchange organization. If you have to find the FQDN of any Hub Transport server or subscribed Edge Transport server in your organization, you can use the following command in the Exchange Management Shell: Get-ExchangeServer | where {$.isHubTransportServer -eq $true -or $.isEdgeServer -eq $true} | Format-List Fqdn,ServerRole
For more information, see Get-ExchangeServer and Pipelining.

Using Telnet on Port 25 to test SMTP Communication

The procedure in this section shows how to use Telnet on port 25 to test SMTP communication. The procedure uses the values that are described in the following list:

  • Destination SMTP server   mail1.fabrikam.com

  • Source domain   contoso.com

  • Sender's e-mail address   chris@contoso.com

  • Recipient's e-mail address   kate@fabrikam.com

  • Message subject   Test from Contoso

  • Message body   This is a test message

Note

You should always use a valid sender e-mail address so that any non-delivery report (NDR) messages that are generated by the destination SMTP server are delivered to the sender of the message.

To use Telnet on port 25 to test SMTP communication

  1. At a command prompt, type telnet, and then press ENTER. This command opens the Telnet session.

  2. Type set localecho and then press ENTER. This optional command lets you view the characters as you type them. This setting may be required for some SMTP servers.

  3. Type set logfile <filename>. This optional command enables logging of the Telnet session to the specified log file. If you only specify a file name, the location of the log file is the current working directory. If you specify a path and a file name, the path must be local to the computer. Both the path and the file name that you specify must be entered in the Microsoft DOS 8.3 format. The path that you specify must already exist. If you specify a log file that doesn't exist, it will be created for you.

  4. Type open mail1.fabrikam.com 25 and then press ENTER.

  5. Type EHLO contoso.com and then press ENTER.

  6. Type MAIL FROM:chris@contoso.com and then press ENTER.

  7. Type RCPT TO:kate@fabrikam.com NOTIFY=success,failure and then press ENTER. The optional NOTIFY command defines the particular delivery status notification (DSN) messages that the destination SMTP server must provide to the sender. DSN messages are defined in RFC 1891. In this case, you are requesting a DSN message for successful or failed message delivery.

  8. Type DATA and then press ENTER. You will receive a response that resembles the following:

    354 Start mail input; end with <CLRF>.<CLRF>
    
  9. Type Subject: Test from Contoso and then press ENTER.

  10. Press ENTER. RFC 2822 requires a blank line between the Subject: header field and the message body.

  11. Type This is a test message and then press ENTER.

  12. Press ENTER, type a period ( . ) and then press ENTER. You will receive a response that resembles the following:

    250 2.6.0 <GUID> Queued mail for delivery
    
  13. To disconnect from the destination SMTP server, type QUIT and then press ENTER. You will receive a response that resembles the following:

    221 2.0.0 Service closing transmission channel
    
  14. To close the Telnet session, type quit and then press ENTER.

Interpreting the Results of a Telnet Session with an SMTP Server

This section provides details about the responses that may be provided to the commands that you entered in the previous example.

Note

The 3-digit SMTP response codes that are defined in RFC 2821 are the same for all SMTP messaging servers. The text descriptions may differ slightly for some SMTP messaging servers. In this example, the destination computer is running Exchange Server 2007.

Open mail1.fabrikam.com 25

Successful Response   220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at <day-date-time>

Failure Response   Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed

Possible Reasons for Failure

  • The destination SMTP service is unavailable.

  • There are restrictions on the destination firewall.

  • There are restrictions on the source firewall.

  • An incorrect FQDN or IP address for the destination SMTP server was specified.

  • An incorrect port number was specified.

EHLO contoso.com

Successful Response   250 mail1.fabrikam.com Hello [<sourceIPaddress>]

Failure Response   501 5.5.4 Invalid domain name

Possible Reasons for Failure   There are invalid characters in the domain name. Alternatively, there are connection restrictions on the destination SMTP server.

Note

EHLO is the Extended Simple Message Transfer Protocol (ESMTP) verb that is defined in RFC 2821. ESMTP servers can advertise their capabilities during the initial connection. These capabilities include their maximum accepted message size and their supported authentication methods. HELO is the older SMTP verb that is defined in RFC 821. Most SMTP messaging servers support ESMTP and EHLO.

MAIL FROM:chris@contoso.com

Successful Response   250 2.1.0 Sender OK

Failure Response   550 5.1.7 Invalid address

Possible Reasons for Failure   There is a syntax error in the sender's e-mail address.

Failure Response   530 5.7.1 Client was not authenticated

Possible Reasons for Failure   The destination server does not accept anonymous message submissions. You receive this error if you try to use Telnet to submit a message directly to a Hub Transport server.

RCPT TO:kate@fabrikam.com NOTIFY=success,failure

Successful Response   250 2.1.5 Recipient OK

Failure Response   550 5.1.1 User unknown

Possible Reasons for Failure   The specified recipient does exist in the organization.

For More Information

For more information, see the following topics: