SMTP Protocol
(sonet.all@gmail.com)
1. Find MX Record
nslookup
> set q=mx
> program.com.tw
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
program.com.tw mail exchanger = 5 se2.program.com.tw.
program.com.tw mail exchanger = 10 mail.program.com.tw.
<>
nslookup -q=mx yahoo.com
nslookup -q=mx google.com
2. SMTP Protocol (Simple Mail Transfer Protocol)
b. Example of the SMTP Procedure
S: EHLO program.com.tw
R: 250-se2.program.com.tw
250-PIPELINING
250-8BITMIME
250 SIZE 52428800
S: MAIL FROM:
R: 250 OK
S: RCPT TO:
R: 250 OK
S: RCPT TO:
R: 504 Authentication failed for SMTP service. --> (system logout)
S: RCPT TO:
R: 550 User (test_account@program.com.tw) unknown.
S: DATA
R: 354 Start mail input; end with .
From: luke@program.com.tw
To: TEST
Subject: [測試信件]
Content-Type: text/plain; charset="utf-8"
您好,
=============================================
. <-- n.="" n="" r="" span="">-->
R: 250 OK
3. MIME(Multipurpose Internet Mail Extensions)
MIME-Version: 1.0
Received: by 10.52.168.69 with HTTP; Wed, 17 Apr 2013 20:07:28 -0700 (PDT)
Date: Thu, 18 Apr 2013 11:07:28 +0800
Delivered-To: sonet.all@gmail.com
Message-ID:
Subject: for demo
From: =?UTF-8?B?6Jab5YWx5ZKMKGx1a2Up?=
To: =?UTF-8?B?6Jab5YWx5ZKMKGx1a2Up?=
Content-Type: multipart/mixed; boundary=20cf307cfbe2188ff404da99e72b
--20cf307cfbe2188ff404da99e72b
Content-Type: multipart/alternative; boundary=20cf307cfbe2188ff004da99e729--20cf307cfbe2188ff004da99e729
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
5ris6Kmm5aS+5qqUDQoNCi0tIA0KDQp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQogICBCMkMg6Zu75a2Q55m856WoIOWKoOWAvOacjeWLmeS4reW/gyAgKOW+rueoi+W8j+acg+WToSkNCg0KTGlmZSsg6IGw5piO5oiR55qE5raI6LK755Sf5rS777yBaHR0cDovL3d3dy5saWZlcGx1cy50dw0Kfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0K--20cf307cfbe2188ff004da99e729
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64
PGRpdiBkaXI9Imx0ciI+PGRpdj48YnI+PC9kaXY+5ris6Kmm5aS+5qqUPGJyIGNsZWFyPSJhbGwiPjxkaXY+PGJyPjwvZGl2Pi0tIDxicj48ZGl2Pjxicj48L2Rpdj48ZGl2Pn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn48L2Rpdj48ZGl2PsKgIMKgQjJDwqDpm7vlrZDnmbznpagg5Yqg5YC85pyN5YuZ5Lit5b+DIMKgKOW+rueoi+W8j+acg+WToSnCoDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+TGlmZSsg6IGw5piO5oiR55qE5raI6LK755Sf5rS777yBPGEgaHJlZj0iaHR0cDovL3d3dy5saWZlcGx1cy50dy8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmxpZmVwbHVzLnR3PC9hPjwvZGl2Pg0KPGRpdj5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+PC9kaXY+DQo8L2Rpdj4NCg==--20cf307cfbe2188ff004da99e729--
--20cf307cfbe2188ff404da99e72b
Content-Type: application/octet-stream; name="=?UTF-8?B?5ZyW6KGoMS5kaWF+?="
Content-Disposition: attachment; filename="=?UTF-8?B?5ZyW6KGoMS5kaWF+?="
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hfncm3cs0
H4sIAAAAAAACA+1dzXLbRhK++ylYzHGVEeZ/JoqdchSn4qqN44qVbDYXFURCFDYQoAUh2/JhL3vdF9in2Lfa2sfY6RnKFklAIgkMTNjDVBKTHk5jwO4PX/f0dH/9zdvLbPQ6KedpkT8eYxSNR0k+KaZpPns8/uXk+y/V+Jsnj76epvFX5t9ZGV+OzDfyObx7PL6oqquvDg/fvHmDspt5XBUlytJrNE8O/xFnWXxoBh2Onzwaje5OMI2rGD5bfBpXVZmeXVfJKI8vk8fjs3jyx6wsrvPp2I1ajJsUWVGOXsfZ4/EX5/Y1PlxMc7g0zz1zX8Wz5KxM4j+ap47MS+tdpr5KytVpL6+KeWqGVDdXa0Ma5oH/3hmzGDU3g/LZky+esi/cJS0++DBX3YU2Cqku43KW5utyzL3J3I0gSBFCzM3gWulIMolv78n24s76FZf1K67sV1w6P70qyqqM02pd5FlRZEmcO6lVeZ3sLmc+iTOjYvctq8UqztOqKh64/vM4m2+yAPfxe2vb1nJnZTq933CXRjTM8iadVhenbz3dLjf7jafZX6fz9CxL6q4+zavOpr/pZvrVX8ei94evt9QGN1vj42GqEp7w7R8Ps+t0mswfULPlMQ0zXSyGHT5011fHbXpj3EcrD2srIotvknIx/f/++a///vs/49Hix12gzSieVOnr23d37kdx9rdkUi0W+n1WvJlcxGU1+nJ0kpSXaR5n4zssZDxKp4/HP0XLt2t1gWZKg4Rr9+uq+KBUGkl+gPHqPVhHkKb5z85Wpy/NMuJ8liUfRBzgCGl+RBT8kSK2m7jLpIrHD6j6NJ1Uu82eZMnl6aQo83UG0tkNszIsUq3ftFuUUkjpuy8lWsi6SNLZRdUsjCDKlqTtKMw8B5OHFhYhHLkXZjrCWGDSQhhAznW5rg5NFHg7Eedplm0gAhazq4j5RfHmtIbKP8xTtr5X8+omS1YFJPn15eKHWUPK2mfmNmKv
4ul0mRo1KsPta0dJVfK2eggUVsY0/SDWYVgat+JbvKoMIje4F/c8k5t0rMirOmnw+eg8vkyzG3NRcT4fj+wPaKDB+J7uuz8k2eukSifxl98W2fTu77f9daxhRO3PpRhhlNJICSokp0y1E7r8WKpDWsIQOcAGoBQX7WQtE5YN0WIXQcYdmOWXSf3P+sHe8IZSaunIljiWpVenF0WZvjNKZSjEfSCz4kxsLcawE9BIb0Lm12fgcSXjncHKfeiIVhPzMjaeT+NyaojXt8XbO5wrWnAu3JZzkQgZBiER5h5ZlxHCnBRgXcT8USPBfTKjtsvahBtJJJefAAA=--20cf307cfbe2188ff404da99e72b--
4. Mail to another host or mail to gmail
a. MTA (Message transfer agent)
# perl -MMIME::Base64 -e 'print encode_base64("steveweb")'
c3RldmV3ZWI=
# perl -MMIME::Base64 -e 'print encode_base64("123")'
MTIz
S: EHLO program.com.tw
R: 250-mail.program.com.tw
250-PIPELINING
250-8BITMIME
250-AUTH=LOGIN
250-AUTH LOGIN
250-STARTTLS
250 SIZE 1004288000
S: AUTH LOGIN
R: 334 VXNlcm5hbWU6
S: c3RldmV3ZWI=
R: 334 UGFzc3dvcmQ6
S: MTIz
R: 235 Authentication successful.
S: mail from: steveweb@program.com.tw <- span="">->
R: 250 Sender <steveweb@program.com.tw> OK
S: rcpt to: sonet.all@gmail.com <- span="">->
R: 250 Recipient <sonet.all@gmail.com> OK
S: data
R: 354 Start mail input; end with .
From: luke@program.com.tw
To: TEST
Subject: [測試信件]
Content-Type: text/plain; charset="utf-8"
您好,
=============================================
. <-- n.="" n="" r="" span="">-->
QUIT
b. Secure SMTP over Transport Layer Security
The following dialog illustrates how a client and server can start a
TLS session:
S:
C:
S: 220 mail.imc.org SMTP service ready
C: EHLO mail.example.com
S: 250-mail.imc.org offers a warm hug of welcome
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 DSN
C: STARTTLS
S: 220 Go ahead
C:
C & S:
C & S:
C: EHLO mail.example.com
S: 250-mail.imc.org touches your hand gently for a moment
S: 250-8BITMIME
S: 250 DSN