SUMMARY
This article describes how to telnet to port 25 on a computer that runs Simple Mail Transfer Protocol (SMTP) services to troubleshoot SMTP communication problems. The information in this article, including error messages, only applies to issues when attempting to resolve SMTP communication issues with Microsoft Exchange-based servers and is not intended for general troubleshooting purposes.
You can use the following troubleshooting steps that are appropriate for the type of problem that you are experiencing. For example, if you are having problems sending over SMTP between two of your Microsoft Exchange 2000 Server servers, you can test the SMTP connectivity by using Telnet on the sending server to connect to port 25 on the destination server. By default, SMTP listens on port 25. Alternatively, if you are having problems receiving SMTP mail from the Internet, you can follow the steps that are listed in this article to test connectivity to your SMTP server from a host that resides on the Internet and that is not on your network.
NOTE: This article only outlines information for a connectivity test for messaging with Exchange Server, if you are not able to connect to the Exchange Server, please search the KB for other symptoms or error messages you are experiencing. For additional information on troubleshooting Exchange transport issues, please refer to the following article in the Microsoft knowledgebase:
257265 General troubleshooting for transport issues in Exchange 2000 Server and in Exchange Server 2003
MORE INFORMATION
There are several different variations of SMTP in the Microsoft product line. The Microsoft Windows product line has an SMTP service that is included with Internet Information Services (IIS), and in Microsoft Windows NT Server 4.0, the SMTP service was included in the Option Pack. In more recent versions of Windows, IIS has been integrated in the operating system, and you can add IIS by using
Add or Remove Programs in Control Panel. Additionally, Exchange 2000 and Microsoft Exchange Server 2003 use the existing SMTP service from IIS with additional features. Microsoft Exchange Server versions 4.0, 5.0, and 5.5 all come with their own versions of SMTP in the form of the Internet Mail Connector (IMC) or Internet Mail Service (IMS).
Note In Exchange 5.0 and later, the Internet Mail Connector (IMC) is renamed the Internet Mail Service.
Before you start the Telnet session, you must have the full SMTP e-mail address of the destination user who you want to send this test message to. This e-mail address must be in the following format:
You must also have the fully qualified domain name (FQDN) or the IP address of the server computer that is running the SMTP services (for example, 10.120.159.1). If the servers are in your organization, you may already have this information. If the servers are external, the easiest way to find this information is to use Nslookup.exe to find the DNS records that contain this information.
For additional information about NSlookup, click the following article number to view the article in the Microsoft Knowledge Base:
For additional information about obtaining Internet Mail Exchanger records, click the following article number to view the article in the Microsoft Knowledge Base:
203204
XFOR: How to Obtain Internet Mail Exchanger Records
Make sure that SMTP has started on the server that runs the SMTP service. To test if SMTP has started, you can run the basic tests that are listed in this article and verify that you receive the 220 response from the remote server. This also verifies that SMTP is running.
Notes- Some Telnet applications require you to turn on local echoing to see the commands that you are typing. To do this while in a Microsoft Telnet session, type set local_echo at the command prompt.
- In Microsoft Windows XP, type set localecho instead of set local_echo.
Basic Testing
Follow these steps to make sure that the host computer and the remote SMTP server can communicate.
If you receive the following error message after you type any one of the following commands, the SMTP server does not recognize what you typed because of a syntax error or an erroneous command:
500 Command not recognized
Check the command and type it again or verify that you are communicating directly to a Microsoft SMTP server.
Note Microsoft Telnet does not permit you to use the Backspace key. If you make a mistake when you type a command, you must press ENTER, and then start a new command.
In the following steps, you run Telnet from the command line. To open a command line, Click
Start, click
Run, type
cmd in the
Open box, and then click
OK.
- You can start a Telnet session by using the Telnet command in the following format:
Note Press ENTER after you type each line. telnet servername portnumber
For example, type: telnet mail.contoso.com 25
Note You can replace servername with the IP address or the FQDN of the SMTP server that you want to connect to.
Remember to press ENTER after each command.
If the command works, you receive a response from the SMTP server that is similar to the following: 220 site.contoso.com Microsoft Exchange Internet Mail Connector <version number of the IMC>
Note There are different versions of Microsoft SMTP or third party SMTP servers, and you may receive different responses from the receiving server. What is important is that you receive the 220 response with the FQDN of the server and the version of SMTP. Additionally, all versions of Microsoft SMTP include the term "Microsoft" in the 220 response. - Start communication by typing the following command: Note You can use the HELO command, but EHLO is a verb that exists in the Extended SMTP verb set that is supported in all current Microsoft implementations of SMTP. It is a good idea to use EHLO, unless you believe that there is a problem with the Extended SMTP Verbs.
If the command is successful, you receive the following response:
- Type the following command to tell the receiving SMTP server who the message is from:
Note This address can be any SMTP address that you want, but it is a good idea to consider the following issues:
- Some SMTP mail systems filter messages based on the MAIL FROM: address and may not permit certain IP addresses to connect or may not permit the IP address to send e-mail to the SMTP mail system if the connecting IP address does not match the domain where the SMTP mail system resides. In this example, that domain is test.com.
- If you do not use a valid e-mail address when you send a message, you cannot determine if the message had a delivery problem, because the non-delivery report (NDR) cannot reach an IP address that is not valid. If you use a valid e-mail address, you receive the following response from the SMTP server:
250 OK - MAIL FROM Admin@test.com
- Type the following command to tell the receiving SMTP server whom the message is to.
Note It is a good idea to always use a valid recipient SMTP address in the domain that you are sending to. For example, if you are sending to john@domain.com, you must be certain that john@domain.com exists in the domain. Otherwise, you will receive an NDR.
Type the following command with the SMTP address of the person you want to send to:
You receive the following response:
250 OK - Recipient User@ Domain.Com
- Type the following command to tell the SMTP server that you are ready to send data:
You receive the following response:
354 Send data. End with CRLF.CRLF
- You are now ready to start typing the 822/2822 section of the message. The user will see this part of the message in their inbox. Type the following command to add a subject line:
Press ENTER two times. You do not receive a response from this command.
Note The two ENTER commands comply with Request for Comments (RFC) 822 and 2822. 822 commands must be followed by a blank line. - Type the following command to add message body text:
This is a test message you will not see a response from this command.
- Type a period (.) at the next blank line, and then press ENTER.
You receive the following response:
- Close the connection by typing the following command:
You receive the following response:
- Verify that the recipient received the message that you sent.
If any error event messages appear in the application event log, or if there are problems receiving the message, check the configuration or the communication to the host.
Advanced Testing
In addition to the basic testing steps that are listed in this article, you can use a delivery receipt to test mail in both directions. You can use this method to verify that the SMTP server can accept an inbound connection and generate a delivery receipt back to the sender to test outbound connectivity of the SMTP server.
To request a delivery receipt for the test message, see step 4 in the "Basic Testing" section of this article to make sure that the information provided is a valid e-mail address that can receive the delivery receipt. Then in step 5 in the "Basic Testing" section of this article, type the following command in the Telnet session:
RCPT TO:User@Site.Domain.Com notify=success,failure