郵件傳輸協議SMTP和SMTPS


      在《使用Spring Boot 優雅地發送郵件》中,我們實現了spring boot集成spring-boot-starter-mail,使用JavaMailSender發送電子郵件的功能。在配置文件中設置了端口和郵件傳輸協議,現在思考一個問題——它們是什么呢?這里就剝繭抽絲般的揭開其神秘面紗。 

1. 三種郵件傳輸協議概述

      作為一個勤學好問的程序猿,我們當然也要了解下郵件發送的協議,這個是關乎郵件發送的最根本的內容。 

      在上述郵件發送的過程中,郵件客戶端和郵件服務器之間,以及兩個郵件服務器之間進行郵件傳遞,是要遵守一定的規則,這個規則就是郵件傳輸協議。常見的電子郵件協議SMTP、POP3、IMAP,它們都隸屬於TCP/IP協議族,默認狀態下,分別通過TCP端口25、110和143建立連接。下面分別對其進行簡單介紹。

  1. SMTP:簡單郵件傳輸協議(Simple Mail Transfer Protocol),用於發送電子郵件的傳輸協議;主要用來從郵件客戶端向郵件服務器發送郵件,也可以用來在郵件服務器之間轉發郵件。
  2. POP3:Post Office Protocol,用於接收電子郵件的標准協議;
  3. IMAP:全稱是 Internet Message Access Protocol,互聯網消息協議,是POP3的代替協議;

      后兩者用來從郵件服務器獲取郵件。

 

 

       這三種協議都有對應SSL加密傳輸的協議,分別是SMTPS,POP3S和IMAPS。下面介紹SMTP和SMTPS協議。 

2. SMTP協議

      SMTP:簡單郵件傳輸協議,是一個基於文本的協議。在其上指定了一個消息的一個或多個接收者(收件人和抄送人),然后消息文本會被傳輸。可以使用簡單的telnet程序來測試一個SMTP服務器。

      如今絕大多數郵件服務器都使用該協議。當你給別人發郵件時,你的服務器的某個動態端口(大於1024)就會和郵件服務器的25端口建立一個連接,你發送的郵件會通過這個連接傳送到郵件服務器上,保存起來。需要注意的是,現在國內外的大雲主機商(例如:阿里雲),多數不允許連接外網的25端口。 

3. SMTPS協議

       SMTPS(SMTP-over-SSL)是SMTP協議基於SSL安全協議之上的一種變種協議,它繼承了SSL安全協議的非對稱加密的高度安全可靠性,可防止郵件泄露。SMTPS和SMTP協議一樣,也是用來發送郵件的,只是更安全些,防止郵件被黑客截取泄密,還可實現郵件發送者抗抵賴功能。防止發送者發送之后刪除已發郵件,拒不承認發送過這樣一份郵件。端口465和587便是基於SMTPS協議開放的。

      465端口(SMTPS):它是SMTPS協議服務所使用的其中一個端口,它在郵件的傳輸過程中是加密傳輸(SSL/TLS)的,相比於SMTP協議攻擊者無法獲得郵件內容,郵件在一開始就被保護了起來。

      587端口(SMTPS):它是SMTPS協議服務所使用的另一個端口,它在郵件的傳輸過程中是加密傳輸(STARTTLS)的,相比於SMTP協議攻擊者無法獲得郵件內容,郵件在STARTTLS命令執行后才被加密。465用於Outlook上,而587可以用於任何程序上。 

Reference

https://www.jianshu.com/p/c1763b172013


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM