| 協議 | 全稱 | 端口 | 核心職責 | 典型軟件 |
| SMTP | Simple Mail Transfer Protocol | 25/465/587 | 發送、轉發、投遞郵件 | Postfix, Exim, Exchange |
| POP3 | Post Office Protocol v3 | 110/995 | 下載郵件到本地,通常刪除服務端 | Dovecot, Courier |
| IMAP | Internet Message Access Protocol | 143/993 | 同步郵件狀態,多端一致,服務端保留 | Dovecot, Courier |
郵件地址結構與郵箱存儲
username@domain.com
- @ 前綴:用戶名(郵箱賬號)
- @ 後綴:域名(郵件服務器標識,DNS MX 記錄指向 MTA)
郵件服務器為每個賬號分配存儲配額,超限將拒收新郵件。
完整郵件傳輸流程(以 lisi@sina.com → wangwu@sohu.com 為例)
- 提交階段:Lisi 通過 MUA(SMTP 協議)連接 sina SMTP 服務器,認證後提交郵件
- 路由判斷:sina MTA 解析收件域
sohu.com,查詢 DNS MX 記錄獲取 sohu SMTP 地址
- 服務器間轉發:sina MTA 通過 SMTP 將郵件轉發給 sohu MTA
- 入庫存儲:sohu MTA 驗證收件人存在,將郵件存入 wangwu 郵箱(MDA)
- 讀取階段:Wangwu 通過 MUA(POP3/IMAP 協議)連接 sohu MDA,下載/同步郵件
關鍵技術細節
DNS MX 記錄:郵件路由導航
# 查詢域名郵件交換記錄
dig MX sohu.com
# 輸出示例
sohu.com. 3600 IN MX 10 mx1.sohu.com.
sohu.com. 3600 IN MX 20 mx2.sohu.com.
優先級數字越小優先級越高,發送方按優先級嘗試連接。
SMTP 會話簡化流程
S: 220 smtp.sina.com ESMTP Postfix
C: EHLO client.example.com
S: 250-PIPELINING
S: 250-SIZE 10240000
S: 250-AUTH LOGIN PLAIN
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: bGlzaUBzaW5hLmNvbQ==
S: 334 UGFzc3dvcmQ6
C: cGFzc3dvcmQxMjM=
S: 235 Authentication successful
C: MAIL FROM:
S: 250 2.1.0 Ok
C: RCPT TO:
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with .
C: Subject: Test
C: From: lisi@sina.com
C: To: wangwu@sohu.com
C:
C: Hello World
C: .
S: 250 2.0.0 Ok: queued as 12345
C: QUIT
S: 221 2.0.0 Bye
POP3 vs IMAP 選型指南
| 場景 | 推薦協議 | 理由 |
| 單設備、離線閱讀、節省服務器空間 | POP3 | 下載後可刪除服務端,適合早期帶寬受限環境 |
| 多設備同步、服務端歸檔、標記已讀/標星同步 | IMAP | 郵件留在服務器,狀態實時同步,現代標準選擇 |
| 企業郵箱、團隊協作、共享郵箱 | IMAP + 共享命名空間 | 支援 ACL 權限控制、共享文件夾 |
JavaMail API 核心類預覽
下篇將實戰講解:
Session:郵件會話上下文,持有認證與協議配置
Message/MimeMessage:郵件實體(主題、正文、附件、頭部)
Transport:SMTP 發送實現
Store/Folder:POP3/IMAP 接收與郵箱操作
Authenticator:認證器
參考資源
- RFC 5321 (SMTP)、RFC 1939 (POP3)、RFC 3501 (IMAP)
- 《JavaMail API 開發指南》- Sun Microsystems
- Apache James / Postfix + Dovecot 搭建測試環境
- 上一篇文章: Java 內部類深度講解:語法規則、三大形式、優缺點與匿名內部類實戰
- 下一篇文章: Linux 大文件刪除後磁盤空間未釋放?lsof 定位進程佔用與在線清空實戰
Copyright ©
程式碼之家 All Rights Reserved