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 steve@example.com:
mail from:<steve@example.com>
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:<john@example.com>
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:<xxx@163.com> 与上面 mail from 输入的一样 自己的邮箱
to:<xxx@qq.com> 与上面的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=<steve@example.com>, size=364, nrcpt=1 (queue active) postfix/pipe[...]: 5FF712A6: to=<john@example.com>, 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 steve@example.c (0.1K)
Press ENTER to read the email:
From: steve@example.com 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.