Linux · 2015-06-10

Send a test mail using Telnet

Emulating an SMTP session with Telnet

Let us try to send an email to the user now. As the “example.com” domain does not really existing your DNS settings will likely not point to the right server. So we are simulating an SMTP session with the telnet command. Install the telnet package if you haven’t already:

$> aptitude install telnet

Then establish a TCP connection to the SMTP port:

$> telnet localhost smtp

The server should reply:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailtest ESMTP Postfix (Debian/GNU)

Great. Postfix is listening and wants us to speak SMTP. First we need to be friendly:

ehlo example.com

Postfix appreciates our friendliness and tells us which features it provides:

250-my-new-mailserver
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Hey, Postfix, we have a mail from [email protected]:

mail from:<[email protected]>

Looks like Postfix is happy with that because return codes that start with a ‘2’ are good news:

250 2.1.0 Ok

Tell Postfix who the recipient of the mail is:

rcpt to:<[email protected]>

Postfix accepts that:

250 2.1.5 Ok

Then we are ready to send the actual mail:

data

Postfix agrees and tells us we can send the actual mail now and end our input with a dot on an empty line:

354 End data with <CR><LF>.<CR><LF>

Okay, type in the mail:

subject:主题

from:<[email protected]>   与上面  mail from  输入的一样   自己的邮箱

to:<[email protected]>    与上面的rctp to 一样


Hi John, just wanted to drop you a note. .

Postfix tells us it has received the mail and queued under a queue ID:

250 2.0.0 Ok: queued as A9D64379C4

Thanks, Postfix, we are done:

quit

Checking the logs

Take a look at the /var/log/mail.log file now. You should see something similar to:

postfix/smtpd[...]: connect from localhost[127.0.0.1]
postfix/smtpd[...]: 5FF712A6: client=localhost[127.0.0.1]
postfix/cleanup[...]: 5FF712A6: message-id=<...>
postfix/qmgr[...]: 5FF712A6: from=<[email protected]>, size=364, nrcpt=1 (queue active)
postfix/pipe[...]: 5FF712A6: to=<[email protected]>, relay=dovecot, ..., status=sent (delivered via dovecot service)
postfix/qmgr[...]: 5FF712A6: removed
postfix/smtpd[...]: disconnect from localhost[127.0.0.1]

The delivery has worked. Postfix has correctly determined that the destination domain is a virtual domain and forwarded the email to the ‘dovecot’ service.

Checking the user’s mailbox

The email should now be somewhere under /var/vmail/example.com/john. Let us take a look:

$> cd /var/vmail/example.com/john/Maildir
$> find
.
./cur
./new
./new/1179521979.V801I2bbf7M15352.mailtest
./tmp

There sits the email. Try to read the mail with the “mutt” program:

$> mutt -f .

The new email is shown:

q:Quit  d:Del  u:Undel  s:Save  m:Mail  r:Reply  g:Group  ?:Help
   1 N   May 18 [email protected] (0.1K)

Press ENTER to read the email:

From: [email protected]
To: undisclosed-recipients: ;

Hi John,

just wanted to drop you a note.

So the email arrived at John’s account. Perfect. Choose ‘q’ twice to exit mutt again.