SMTP Tutorial 

(From http://www.castellum.net/tutorials/smtp_tutorial.htm)


Simple Mail Transfer Protocol
This tutorial is supposed to teach simple smtp commands and will allow you to see if your ISP blocks port 25.  Hopefully after this you will have a general knowledge of how SMTP works and will be able to impress your friends.  We will cover some more advanced stuff later.   SMTP is a very easy protocol to learn and once you know it you can use it in your scripts and everything else.  In the tutorial we will be using the windows telnet terminal.  If your on another OS, most of them have equivalents.  

Is your ISP blocking port 25?
Port 25 is the standard port used by smtp.  Many ISPs have started to block that port outside of their own system.  Why?  Spammers are under fire from every direction, if a ISP lets spam go out thru their doors, it is not good for them or their clients, the spam can clog their own systems and some people have tried to sue.  In order to protect themselves and their clients they have started blocking port 25, which keeps people connected thru them from connecting to any SMTP server but their own.  If you have a site that is with a web host, not your ISP, chances are that you have never been able to send email using your web host's smtp server.  If that is the case, your ISP have probably started blocking port 25.

Connecting to a smtp server:
Open your telnet program, in windows: click on the start button, select 'Run...' and type telnet into the box and press enter.  The standard telnet program should come up.

In the menu, select 'Connect', then 'Remote System...'.  The standard Connect box should come up and ask for three things: Host Name, Term Type, and Port.

Now press connect.  I will put server responses in red and your commands in blue.
First the server should say something like this

220 smtp5.jps.net ESMTP Sendmail 8.9.3/8.9.0; Wed, 29 Dec 1999 14:10:55 -0800 (PST)

The main thing in all this are the numbers in front as those have to adhere to the standard.  If you receive a 220, you are fine.  When your typing, you won't be able to see any letters, so make sure you know what your typing. Now, you will want to type this:

ehlo me

Press enter.  ehlo is a hello command, me could be your name or whatever, it doesn't matter.  Some will say to use the helo command, ehlo is the newest incarnation of it, so use it.  The server should come back with something like:

250-smtp5.jps.net Hello 216-119-33-50.o1.jps.net [216.119.33.50], pleased to meet you
250-8BITMIME
250-SIZE 20000000
250-DSN
250-ONEX
250-XUSR
250 HELP 

Main thing is the 250, which indicates successful.  If you ever need to know a little more about some of the commands, issue the help command.  It should return a nice list of commands that you can use.  If you didn't get a 250, look at the error and see if you can correct it.  If your host requires you to check your mail before connecting to the smtp server, make sure and do that.  Now we will start our email by issuing the MAIL command, it will start the mail process.  Make sure you use real addresses so you can tell if it worked.

mail from: youraddress@yourdomain.com

Press enter.  

250 youraddress@yourdomain.com... Sender ok

You should get a 250, address ok response.  That means that the from address is good.  Now we need to say who it is going to.  To do that you use the RCPT (recipient) command.

rcpt to: goingto@domain.com

Press enter.

250 goingto@domain.com... Recipient ok

Again, you should get a 250.  Now we need to enter the rest of the message.  Type:

data

Press enter.

354 Enter mail, end with "." on a line by itself 

You should get a 354 response.  You can now type your message.  You have to include all the various headers that make the email look nice.  Otherwise, it will look like the email just appeared blankly from no sender.  So, type this stuff into the window:

To: Whoever <goingto@domain.com>
From: Your Name <youraddress@yourdomain.com>
Subject: The subject of the message
Your message should go here.
Type whatever you want, it doens't really make a difference

Now, we need to end the message, this is done by putting a single dot on a line and pressing enter.  Like this

.

250 OAA24319 Message accepted for delivery

The server should return a 250.  The message has been sent, unless you want to do some more mails, quit

quit

Press enter

You should get a goodbye message and then connection lost to host..

Hopefully we will cover more in later chapters.