电子邮件靠"存转发"异步送达: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 这些名字首先是协议(一套通信规则),实现这套协议、常年在线等别人连的机器,才叫"××服务器"。这正是第一章那句"服务器是角色,不是硬件"的应用层版本。
二、电子邮件为什么是"异步"的
打电话是同步的:双方必须同时在线。电子邮件是异步的:
- 你点"发送"的那一刻,不需要对方开机
- 信先存进邮件系统的服务器里,等对方上线再取
- 这就是存转发(store and forward):沿途每台服务器先"存"下来,再"转"给下一站
这个设计是邮件和网页最大的气质差异:网页是"你问我才答"的被动式实时应答,邮件是"先寄进信箱、什么时候看随你"。第四章讲的被动式形态在 Web 场景原样上演,而邮件系统多了一层时间缓冲——信箱就是那层缓冲。
三、SMTP:只管把信寄出去
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)承担旅程的前半段。
它干三件事: 1. 接件——你的邮件客户端把写好的信交给发送方的 SMTP 服务器 2. 中转——这封信如果不是本域的,就按收件人地址继续往外转,可能经过多台 SMTP 服务器接力 3. 投递——最后一台 SMTP 服务器(收件人域名的邮件服务器)把信放进收件人的服务器信箱里
三个关键认识:
- SMTP 不负责最后一步"交到收件人手里"。它把信投进信箱就算完成任务——至于信箱里的信什么时候被取走、被谁取走,是 POP3 的事
- 对方怎么找到"收件人域的邮件服务器"? 靠 DNS 的 MX 记录(Mail eXchange):
@qq.com的信该送给哪台服务器,DNS 说了算。网络课 3.21 讲过 DNS 是"网络电话簿",MX 就是电话簿里专门给邮件用的那一栏 - SMTP 是推(push)协议:信是被"推"着一站站往前走的;而 POP3 是拉(pull)协议:收件人主动来"拉"走信箱里的信
历史教训——早期的 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 求准"判断标准的又一次应验。
六、常见误区
- "发邮件给对方,对方电脑得开着"——恰好相反,邮件系统的全部意义就是对方不在线也能收到。同步的打电话才要求双方在线。
- "SMTP 服务器把信交到收件人手里"——SMTP 只投进服务器信箱。最后一步是收件人用 POP3/IMAP 自己来取的。
- "25 端口 = 发邮件的端口,配客户端就填 25"——如今客户端发信通常填 587(带认证的提交端口),25 主要用于服务器之间的中转。配置邮箱客户端时照服务商说明填。
- "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)。- ☐ 5.4-5.6 网页服务三根支柱(HTTP、DNS、SSL)
相关笔记
- 网页服务的三根支柱 —— 本篇下半场:从异步邮件切到实时网页
- 网络 3.21 网络的电话簿 —— MX 记录的家:DNS 资源记录
- 网络 3.18 可靠传输 TCP —— 寄信取信都选它的原因
- 网络 3.17 端口号 —— 25/110 这些编号从哪来
- 系统与司令塔 —— "协议定规矩、服务器照规矩上班"的地基
- 基础设施类服务器 —— SMTP 与 SIP 同属"文本指令对话"协议家族