🖥️ 第五章 电子邮件与互联网服务
📄 一句话概括

电子邮件靠"存转发"异步送达:SMTP 只管把信寄出去(端口 25),POP3 负责把信从服务器信箱取回本地(端口 110)——寄与取是两套独立协议,合起来才是一封邮件的完整旅程。

📝 本篇和前面几篇的关系

第四章讲的是"服务器响应从属计算机"的内网场景(文件、打印、DHCP 都在局域网里办事);本章第一次把镜头拉到互联网上——邮件和网页要跨公网、跨运营商地走。前面学的端口号(网络 3.17)、TCP 可靠传输(网络 3.18)在这里全部落地成具体岗位。

一、先看全景:本章要认识的七类服务器

5.1 这一节是本章地图。电子邮件和互联网服务一共涉及七类服务器,分成两大场景:

电子邮件场景(存转发世界) - SMTP 服务器——管"寄出":接件、中转、投递,端口 25 - POP3 服务器——管"取信":验明收件人身份,把信从服务器信箱交给他,端口 110

互联网服务场景(实时应答世界) - Web 服务器——发网页,端口 80(加密版 443) - DNS 服务器——把域名翻译成 IP 地址,端口 53 - SSL 服务器——负责浏览器与网页服务器之间的加密,端口 443 - FTP 服务器——跨互联网传文件,端口 21(控制)+ 20(数据) - Proxy 服务器——代替客户端收发互联网通信,常见 8080 等

一个规律贯穿全章:协议定规矩,服务器照规矩上班。SMTP、POP3、HTTP 这些名字首先是协议(一套通信规则),实现这套协议、常年在线等别人连的机器,才叫"××服务器"。这正是第一章那句"服务器是角色,不是硬件"的应用层版本。

二、电子邮件为什么是"异步"的

打电话是同步的:双方必须同时在线。电子邮件是异步的:

这个设计是邮件和网页最大的气质差异:网页是"你问我才答"的被动式实时应答,邮件是"先寄进信箱、什么时候看随你"。第四章讲的被动式形态在 Web 场景原样上演,而邮件系统多了一层时间缓冲——信箱就是那层缓冲。

三、SMTP:只管把信寄出去

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)承担旅程的前半段。

它干三件事: 1. 接件——你的邮件客户端把写好的信交给发送方的 SMTP 服务器 2. 中转——这封信如果不是本域的,就按收件人地址继续往外转,可能经过多台 SMTP 服务器接力 3. 投递——最后一台 SMTP 服务器(收件人域名的邮件服务器)把信放进收件人的服务器信箱里

三个关键认识:

历史教训——早期的 SMTP 不验证身份。任何人都可以连上任何 SMTP 服务器说"我是 [email protected],帮我转发这封信",垃圾邮件一度泛滥成灾。现在公开的邮件服务都要求 SMTP 认证(发信前先验账号密码),并且常用 587 端口做"客户端提交",25 端口留给服务器之间的中转。

四、POP3:把信从信箱取回本地

POP3(Post Office Protocol 版本 3,邮局协议)承担旅程的后半段。

工作过程: 1. 收件人的邮件客户端主动连上 POP3 服务器(端口 110) 2. 报上账号密码,验明身份 3. 把信箱里的信下载到本地电脑 4. 默认情况下,下载后服务器上的副本会被删除(也可以设置"在服务器上保留副本")

为什么叫"邮局协议"——它的隐喻非常直白:服务器就是一个邮局,信箱是邮局的信箱格,你必须本人(凭身份)来取;取走之后,邮局的格子里就不剩什么了。

POP3 的时代烙印:它为"一人一台电脑"而设计。 单机时代这样毫无问题——信取回本地,断网也能翻旧信。但它有两个先天短板:

这两个短板正是 5.8(IMAP 服务器)要解决的问题——教材把它排在后面,我们先记住钩子:POP3 = 取走,IMAP = 同步。

五、端口号对照与"两台服务器常是一台机器"

岗位 协议 常用端口 方向 一句话职责
寄出/中转 SMTP 25(中转)/ 587(提交) 推 把信一站站往前送
取信 POP3 110 拉 验身份、下载到本地

实战里,一台物理服务器完全可以同时运行 SMTP 和 POP3 两套服务(监听不同端口)——它们是角色,不是机器。所以别被"邮件服务器"这个词骗了:它至少是两个角色的合体,现代邮件系统还往往加上 IMAP(5.8)和 Webmail(用浏览器收发信)。

顺带一提:无论寄信还是取信,走的都是 TCP(网络 3.18)——信不能丢、不能乱序,所以选可靠传输;这正是第三章"TCP 求准"判断标准的又一次应验。

六、常见误区

  1. "发邮件给对方,对方电脑得开着"——恰好相反,邮件系统的全部意义就是对方不在线也能收到。同步的打电话才要求双方在线。
  2. "SMTP 服务器把信交到收件人手里"——SMTP 只投进服务器信箱。最后一步是收件人用 POP3/IMAP 自己来取的。
  3. "25 端口 = 发邮件的端口,配客户端就填 25"——如今客户端发信通常填 587(带认证的提交端口),25 主要用于服务器之间的中转。配置邮箱客户端时照服务商说明填。
  4. "POP3 取走的信服务器上还有一份"——默认取走即删(可设置保留)。误以为服务器永远留底,换电脑时会吃大亏。

七、动手 Demo:亲手查一封邮件的"投递地址"

上一章 Demo12 我们用过 DNS;这次查的是 DNS 电话簿里专门服务邮件的那一栏——MX 记录。

打开 PowerShell,输入:

nslookup -type=mx qq.com

看到什么算成功:返回若干行 mail exchanger = mx...qq.com 之类的记录,还带优先级数字(数字越小越优先)。这就是"全世界寄往 @qq.com 的信,都投给这几台服务器"的公开答案。

再进一步:

Test-NetConnection mx1.qq.com -Port 25

(主机名以你查到的 MX 记录为准。)

看到什么算成功:TcpTestSucceeded : True——你的电脑真的能连上对方邮件服务器的 25 端口。看到 False 也很正常:很多运营商封锁了住户宽带的 25 端口出站,就是为了防止家用电脑沦为垃圾邮件中转站——这就是上面第三节那个历史教训在今天的现实形态。

30 秒实验:把命令换成 -Port 110 连它试试。多半连不通——110 是给收件人取信用的,你不是它的收件人,而且现代服务商通常要求加密连接(995 端口的 POP3S 等)。端口对不上岗位,门就不该开。

自测三问(点开对答案) 1. 一封邮件从发出到被收件人打开,依次经过哪几个"站点"?——发件人客户端 → 发送方 SMTP(中转)→ 收件方 SMTP 投入服务器信箱 → 收件人客户端经 POP3 取回本地。 2. SMTP 是推还是拉?POP3 呢?——SMTP 是推(信被逐站推进);POP3 是拉(收件人主动来取)。 3. POP3 的两个时代短板是什么?解药是谁?——多设备不同步、服务器不留底;解药是 IMAP(5.8)。

相关笔记