In notebook:
FrontEndMasters Networking and Streams
Created at:


smtp is the protocol used to deliver email messages.

Here we can send an email from to substack@localhost.

The lines that start with a number are messages from the server.

On his Linux system, he has a running SMTP deamon.

By default, SMTP servers have no validation at all.

So he can send any email from any address, but it would not work on a public server.

Email is text based protocol similar to HTTP. It has status codes, body/content mime system.

$ nc localhost 25
220 zzz ESMTP Exim 4.84_2 Tue, 02 May 2017 21:29:36 -0700
helo localhost
250 zzz Hello localhost []
mail from:
250 OK ☛ means the server accepted the message
rcpt to: substack@localhost ☛ this will send an email locally
250 Accepted
354 Enter message, ending with "." on a line by itself
Subject: FAKE NEWS

You're fired.
. ☛ this means the message is ended (period + ENTER)
250 OK id=1d5lvL-00026H-DW ☛ sent ok
221 zzz closing connection

Since this email was sent locally, I can read the message with the mail command:

$ mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/substack": 1 message 1 new
>N  1 trump@whitehouse.  Tue May 02 21:30   16/491   FAKE NEWS

Seems legit:

& n
Message 1:
From Tue May 02 21:30:09 2017
Envelope-to: substack@localhost
Delivery-date: Tue, 02 May 2017 21:30:09 -0700
Subject: FAKE NEWS
Date: Tue, 02 May 2017 21:30:05 -0700

You're fired.

On the real Internet, the servers verify the IP address of where they receive the message from. But originally the email servers accepted any messages blindly.