2024年6月12日发(作者:)

邮件协议整理

写在前面

最开始的邮件传输是根据SMTP实现的,但由于历史原因,Internet上的很多网关不能

正确传输8 bit内码的字符,比如汉字等。所以出现了对邮件内容编码的需要。这样,在邮

件协议中除了smtp、pop外,又增加了与编码相关的MIME。

概括地说,smtp、pop与邮件的接收、发送过程相关,这两者负责邮件的传输;而MIME

与邮件内容(这里,邮件内容包括发件人信息、收件人/抄送人信息、邮件正文、附件)相

关,约定了被传输邮件的格式。可以这样理解,smtp、pop完成了邮差的工作,mime解决

了信件(包括信封)格式的问题。没有mime之前,邮差只能给美国人送邮件;有了mime

之后,邮差可以提供国际快递业务了。

1. Smtp

SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,是一组用于由源地址到目的

地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助

每台计算机在发送或中转信件时找到下一个目的地。

关于SMTP的详细介绍参考rfc821,/html/rfc821

Rfc2821, /html/rfc2821

验证过程

>:auth login ---进行用户身份认证

<:334 VXNlcm5hbWU6 ---BASE64编码“Username:”

>:Y29zdGFAYW1heGl0Lm5ldA== ----发送BASE64编码的用户名

<:334 UGFzc3dvcmQ6 ---BASE64编码"Password:"

>:MTk4MjIxNA== ---客户端发送BASE64编码的密码

<:235 auth successfully ---成功

客户端命令:

HELO/EHLO

AUTH LOGIN

MAIL FROM:

RCPT TO:

DATA

向服务器发出请求

用户身份认证

发件人信息,

收件人信息,告诉服务器邮件发送给谁,

可重复多次,发送给多个收件人

邮件内容

本次请求结束 QUIT

服务器返回值:

220 Service ready

221 Service closing transmission channel

250 Requested mail action okay, completed

354 Start mail input; end with .

其它参考【rfc821】、【rfc2821】

示例:

对data命令的应答

R: 220 Simple Mail Transfer Service Ready

S: HELO

R: 250

S: MAIL FROM:

R: 250 OK

S: RCPT TO:

R: OK

S: DATA

R: 354 Start mail input; end with .

S: Blah

S: ...etc. etc. etc.

S: .

R: 250 OK

S: QUIT

R: 221 Service closing transmission channel

【注意】 DATA命令之后,若邮件服务器返回354状态值表示开始接收数据;用户开始发

送数据,邮件数据连续发送,并以.结束。因为后面采用对邮件内容采用了

mime编码的原因,data数据中不会出现.字段与上面的结束符冲突。

The mail data may contain any of the 128 ASCII character codes, although experience has

indicated that use of control characters other than SP, HT, CR, and LF may cause problems and

SHOULD be avoided when possible.

2. pop

POP的全称是 Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用TCP

的110端口。

参考rfc1939,/html/rfc1939

常用命令

大部分邮件服务器使用明文的用户名、密码进行认证。

命令 参数 状态 描述

------------------------------------------

USER username 认证 此命令与下面的pass命令若成功,将导致状态转换

PASS password 认证