Testing SMTP Server from the command line

In a previous post I explained how to use the SMTPDIAG tool to test that SMTP and DNS were configured correctly. The tool does not however send a test message.

In this post I wil demonstrate two methods of sending test emails via the command line.

Method 1 – Telnet

I am going to assume that your server is Windows Server 2008 R2, although these steps will work on Server 2003 also. Another assumption is that you have the telnet client installed. If you don’t have it installed follow the steps in this post and then follow these instructions:

1. Fire up the command prompt and type telnet:

C:\Users\admin>telnet

2. At the telnet prompt, type set LocalEcho then press ENTER:

Welcome to Microsoft Telnet Client
Escape Character is 'CTRL+]'
Microsoft Telnet>set LocalEcho

3. Then type open localhost 25 and then press ENTER.

Welcome to Microsoft Telnet Client
Escape Character is 'CTRL+]'
Microsoft Telnet>set LocalEcho
Local echo on
Microsoft Telnet>open localhost 25

The output will look similar to this:

220 mail.vsysad.com Microsoft ESMTP MAIL Service, Version: 7.5.7601.17514 ready at Fri, 23 Aug 2013 01:02:03 +0000

4. Type helo me and then press ENTER. You should receive a 250 response from the SMTP Server meaning that it has accepted your command:

helo me
250 mail.vsysad.com Hello [127.0.0.1]

5. Then type the mail from:email@domain.com – obviously fill in the email address you are actually sending from and then press ENTER. The output will be similar to the below:

mail from:blog@vsysad.com
250 2.1.0 blog@vsysad.com....Sender OK

6. Type rcpt to:youremail@yourdomain.com – the address you are sending to and then press ENTER. The output will be similar to the below:

rcpt to:recipient@gmail.com
250 2.1.5 recipient@gmail.com

7. Type Data and then press ENTER, resulting in the following:

Data
354 Start mail input; end with <CRLF>.<CRLF>

8. Type Subject:This is a test email and then hit ENTER twice. Then type This is a test email being sent via telnet and hit ENTER. Hit ENTER again, then type a full stop (.), and then hit ENTER once more:

Subject:This is a test email

This is a test email being sent via telnet

.

9. The resulting output would be similar to this:

250 2.6.0 <WEB1Ze4CkNl4THZaN1E00000004@mail.vsysad.com> Queued mail for delivery

It means that an email has been generated and is in the queue and is ready to be delivered.

10. Now that you have finished, type quit and the connection to the SMTP Server will be closed:

quit
221 2.0.0 mail.vsysad.com Service closing transmission channel

Connection to host lost.

A screenshot of all the commands being run is below:

20130824104951

That’s it. Now go to your email account and verify that the email has arrived successfully. In my case I received the email below to my Gmail account:

20130824112821

Method 2 – PowerShell

The PowerShell method is much less tedious and is my recommended way of sending email via the command line on Windows. Assuming that PowerShell is installed on your server, launch the console and simply run the command below, ensuring that you complete the sending and receiving email addresses plus the subject and body text:

PS C:\Users\admin> Send-MailMessage -SMTPServer localhost -To xxxxx@gmail.com -From blog@vsysad.com -Subject "This is a test email" -Body "Hi Japinator, this is a test email sent via PowerShell"

The above command sent an email to my Gmail account, a screenshot of the email generated is below:

20131031223718

The PowerShell method is far easier to use. You can save the command in a .ps1 file and run it on demand whenever you need to test sending/routing of mail.

References:
How To Test SMTP Services Manually in Windows Server 2003
PowerShell Send-MailMessage command line reference

Testing SMTP Server using SMTPDIAG tool

I have been using a Microsoft diagnostic tool to test mail flow called SMTPDIAG. I used it on my cloud server to confirm that all the conditions required for successful mail delivery were met. The tool tests SMTP and DNS. Click here to download the tool.

Once downloaded run SmtpDiag.EXE and extract the files to a location of your choice. Then open a command prompt, go to that location and run the following command:

smtpdiag from@yourdomain.com recipient@theirdomain.com

The first parameter from@yourdomain.com is the email address that the tool is sending the email from and the second parameter recipient@theirdomain.com is the receiving email address. The tool will run through a basic set of tests and will flag any issues it encounters. To view more diagnostic information run the same command with a /v switch at the end.

smtpdiag from@yourdomain.com recipient@theirdomain.com

A sample test I ran can be seen below:

20130427232109

You can see that the recipient has a Gmail address so the tool will test name resolution for the domain gmail.com and comfirm it has the relevant MX records. You will notice that the first test result shows this failure:

Failed to connect to the domain controller. Error: 8007054b

This error can be ignored as the server is not an Exchange server and it not part of an Active Directory domain.

The results confirm that SMTP and DNS resolution is working fine!

You can also use telnet and Powershell to test mail sending/routing via SMTP Server. Please refer to this link to see how to do this.