狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

釣魚系列-電子郵件系統之SMTP、IMAP協議介紹

admin
2024年4月9日 23:47 本文熱度 904




SMTP協議介紹

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,郵件通過這個協議在MUA和MTA、MTA和MTA之間傳輸。有了第一篇的基礎,相信大家也都了解到了,整個互聯網郵箱體系能夠正常運行的核心就是SMTP協議,這個協議好比郵箱界的 HTTP。有了 SMTP ,大家都遵守同一套的傳輸規范, 它保證了你發出去的郵件對方的MTA能收到,也保證了對方MTA發過來的郵件你可以收到。要保持你的郵箱系統能夠正常運作,甚至 POP3/IMAP 協議都不是必須的,如果你不需要通過客戶端收郵件的話,那么你其實可以通過登錄郵件服務器主機直接使用mail/mailx 或者mutt 這樣的命令行工具就可以進行郵件的收發。我們現在最常用的webmail,如網易、gmail的網頁郵箱其實也沒有用到 POP3/IMAP協議(除非你需要配置客戶端)。



SMTP也是基于TCP協議的






下面是命令和應答清單





郵件的報文格式封裝


(這里要注意的是報文的信封部分是不會體現在郵件內容里面的。smtp協議是能夠直接通過telnet工具執行命令的)


2

使用SMTP服務器收郵件


我們這里假設有一個郵件服務商叫做 abc.mail(僅用于演示,非真實,下同),其他郵箱基本也都差不太多。首先通過nslookup命令找到mx記錄,查詢 abcmail用于收件的smtp服務器地址(一般叫Mail Exchanger,MX)

bob$ nslookup -type=mx abc.mail
abc.mail    MX preference = 15, mail exchanger = mx6.abc.mailabc.mail    MX preference = 10, mail exchanger = mx2.abc.mailabc.mail    MX preference = 10, mail exchanger = mx4.abc.mailabc.mail    MX preference = 10, mail exchanger = mx3.abc.mailabc.mail    MX preference = 10, mail exchanger = mx1.abc.mailabc.mail    MX preference = 15, mail exchanger = mx5.abc.mail


我們選擇 mx1.abc.mail 這個服務器,直接telnet它的25端口,相關輸入的命令我寫在了后面的注釋里,實際執行時要去掉:


bob % telnet mx1.abc.mail 25Connected to mx1.abc.mail.Escape character is '^]'.220 mx.abc.mail ESMTP c16-20020a170902d49000b0019e25cff4f5si9627390plg.617 - gsmtphelo app //通知smtp服務端開啟會話,helo 后面的內容可以隨便輸入,還有一個增強型的命令ehlo,能夠返回更多服務端的內容250 mx.abc.mail at your servicemail from://發件人地址250 2.1.0 OK c16-20020a170902d49000b0019e25cff4f5si9627390plg.617 - gsmtprcpt to://收件人地址250 2.1.5 OK c16-20020a170902d49000b0019e25cff4f5si9627390plg.617 - gsmtpdata //開始郵件內容編寫354  Go ahead c16-20020a170902d49000b0019e25cff4f5si9627390plg.617 - gsmtpfrom: foobar//郵件首部to: foobar//郵件首部subject: hello //郵件首部
this is text //郵件正文. //郵件內容以一個半角的.結束550-5.7.28 [156.146.145.84       1] Our system has detected an unusual rate of550-5.7.28 unsolicited mail originating from your IP address. To protect our550-5.7.28 users from spam, mail sent from your IP address has been blocked.20020a170902d49000b0019e25cff4f5si9627390plg.617 - gsmtp


郵件被拒絕發送,原因是發件方MTA的ip地址未經授權。一般來說,MX服務器默認對方也是MTA,需要進行各種安全認證,我們是通過個人電腦連接上去,自然是通不過認證了。目前各大郵箱的發送方身份認證策略都設置的比較完善了,隨便設置發件人郵箱方法行不通。

3

使用SMTP服務器發郵件

abc.mail 發送郵件的服務器為 smtp.abc.mail ,我們先來測試一下25端口:


bob% telnet smtp.abc.mail 25            Connected to smtp.abc.mail.Escape character is '^]'.220 smtp.abc.mail ESMTP d13-20020a170902b70d00b001a1d553de0fsm5958849pls.271 - gsmtpehlo app250-smtp.abc.mail at your service,250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8250 smtp.abc.mail at your servicemail from:530 5.7.0 Must issue a STARTTLS command first. d13-20020a170902b70d00b001a1d553de0fsm5958849pls.271 - gsmtp


可以看到發件人需要進行認證,而認證必須在tls連接中進行,從而有效保護傳輸的信息安全。telnet是不支持tls連接的,這里使用openssl工具來進行安全連接:


openssl s_client -starttls smtp -connect smtp.abc.mail:587 -crlf -ign_eof...ehlo app250-smtp.abc.mail at your service, 250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8auth login334 VXNlcm5hbWU6Zm9vYmFy //用戶名base64編碼,演示用非真實334 UGFzc3dvcmQ6Zm9vYmFy //應用專用密碼base64編碼,演示用非真實235 2.7.0 Acceptedmail from:250 2.1.0 OK z14-20020a6553ce000000b00502f017657dsm5485604pgr.83 - gsmtprcpt to:250 2.1.5 OK z14-20020a6553ce000000b00502f017657dsm5485604pgr.83 - gsmtpdata354  Go ahead z14-20020a6553ce000000b00502f017657dsm5485604pgr.83 - gsmtpfrom: foobarto: foobarsubject: helo
text.250 2.0.0 OK  1681052959 z14-20020a6553ce000000b00502f017657dsm5485604pgr.83 - gsmtp


587端口是smtp 的 starttls的端口(也可以使用25端口),可以看到建立tls連接后出現了auth命令。這里要注意的是,主流的各大郵箱已經禁用在非安全設備上直接使用用戶名密碼的登錄方式,直接登錄會失敗。需要先在郵箱控制面板中生成應用專用密碼,再進行登錄。上述操作后,郵件發送成功,在163郵箱可以收到這封郵件了。

或者也可以使用下面這個命令通過465端口建立tls連接,效果是一樣的:


openssl s_client -connect smtp.abc.mail:465 -crlf -ign_eof



4

IMAP協議介紹


IMAP協議, Internet Mail Access Protocal (交互式郵件訪問協議),是一個應用層協議(端口是143)。IMAP協議比POP3協議復雜的多,也是按照C/S的工作方式,現在較新的版本是IMAP4。


與POP3協議類似,IMAP也是提供面向用戶的郵件收取服務。常用的版本是IMAP4。IMAP4改進了POP3的不足,用戶可以通過瀏覽信件頭來決定是否收取、刪除和檢索郵件的特定部分,還可以在服務器上創建或更改文件夾或郵箱,它除了支持POP3協議的脫機操作模式 外,還支持聯機操作和斷連接操作。它為用戶提供了有選擇的從郵件服務器接收郵件的功能、基于服務器的信息處理功能和共享信箱功能。IMAP4的脫機模式不同于POP3,它不會自動刪除在郵件服務器上已取出的郵件,其聯機模式和斷連接模式也是將郵件服務器作為“遠程文件服務器”進行訪問,更加靈活方便。目前只使用POP3協議的郵箱已經很少了,主流是IMAP,故本文章以介紹IMAP協議為主。


imap同樣也是直接可以用命令行登錄的,下面我們來測試一下,因為目前主流郵件服務商都已經禁用了非安全的143端口,我們直接通過 tls 端口 993 來登錄,需要輸入的命令行后面添加了注釋:


openssl s_client -connect imap.abc.mail:993 -crlf -ign_eofa login foobar password //輸入用戶名密碼,每個命令前要輸入一個 a 作為開始* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584a OK foorbar@abc.mail authenticated (Success)a list "" * //列出所有的郵箱* LIST (\HasNoChildren) "/" "Call log"* LIST (\HasNoChildren) "/" "INBOX"* LIST (\HasNoChildren) "/" "Notes"* LIST (\HasNoChildren) "/" "SMS"* LIST (\HasNoChildren) "/" "Sent"a OK Successa select inbox //選擇inbox收件箱* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $NotPhishing $Phishing Old)* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $NotPhishing $Phishing Old \*)] Flags permitted.* OK [UIDVALIDITY 5] UIDs valid.* 6901 EXISTS* 0 RECENT* OK [UIDNEXT 6934] Predicted next UID.* OK [HIGHESTMODSEQ 463331]a OK [READ-WRITE] inbox selected. (Success)


上述命令使用用戶名+專用密碼登錄,列出郵箱列表,并選擇了inbox郵件箱。imap 命令比較多,詳細命令可參考附件列表里的資料。



5

關于端口號


由于電子郵件存在的歷史非常長,使用的端口號也經歷了不少階段,導致看起來有些混亂。最早大家都是明文傳輸,smtp使用25,imap使用143,還比較清楚。后來隨著互聯網的發展,大家意識到不能在網上裸奔了,加密很重要,于是誕生了smtps(465),imaps(993),這兩個端口使用的是ssl協議。再后來ssl協議也被淘汰了,取而代之的是tls協議,配套開發了starttls協議,可以復用原來的明文端口,即可以先連接smtp的25端口,根據服務端是否支持starttls,再判斷是否啟用加密連接,相對更加靈活。同時,由于25端口被客戶端廣泛用于發送垃圾郵件,所以客戶端(MUA)的starttls端口被定義成了587端口。再后來,大家又覺得其實端口不是重點,tls加密才是最重要的,所以現在的465和993都是同時支持ssl/tls的(ssl基本已不再使用),不管使用starttls還是普通tls,加密級別和安全性都是一樣的。




6

SMTP服務器分類

· 發件服務器:這個就是我們通常意義上了解的smtp服務器,域名形式通常為 smtp.域名,如smtp.163.com,smtp.gmail.com等,普通用戶接觸最多的是這類服務器,郵件客戶端里面配的一般也是這個地址。作用是接收郵件客戶端發送過來的郵件,并轉發到其他的郵件服務器中。早期使用的是25端口,近年來隨著安全傳輸要求的不斷提升,一般25端口已被禁用,以使用465(SSL/TLS)及587(STARTTLS)端口為主。為防止垃圾郵件的發送,通常都會做發件人的身份驗證,認證通過后 smtp 服務器才會允許以該發件人身份向其他郵件服務器發送郵件。


· 收件服務器:一般叫 Mail Exchanger,MX服務器,地址可通過查詢 dns 的mx記錄獲取。一般只是在郵件服務商之間傳輸郵件時用到,普通用戶接觸不多。MX服務器通常只開通25端口,上面既可以跑明文流量,也可以跑加密流量(通過starttls命令聲明進行加密傳輸)。MX服務器一般會校驗,收件人地址是本地用戶,才會接收。同時,由于是MTA之間的傳輸,MX一般也會對發送方的MTA進行嚴格校驗(還記得文章開頭收郵件失敗嗎?),具體方式有SPF、DKIM、DMARC、rDNS等,后續在講郵件身份認證時會講到。


一般來說,出于職責權限劃分及處理性能的考慮,大的郵件服務商都會把收件服務器和發件服務器分開單獨部署。自建的小站,用戶也沒幾個,合并部署問題不大。



7

常見郵件協議和端口樣例


新浪免費郵箱:

新浪COM免費郵箱(@sina.com):

收信(pop3)服務器的地址為:pop.sina.com 端口:110,使用SSL的加密端口:995 (或pop3.sina.com)

發信(smtp)服務器的地址為:smtp.sina.com 端口:25, 使用SSL的加密端口:587或465

新浪CN免費郵箱(@sina.cn):

收信(pop3)服務器的地址為:pop.sina.cn 端口:110,使用SSL的加密端口:995 (或pop3.sina.cn)

發信(smtp)服務器的地址為:smtp.sina.cn 端口:25, 使用SSL的加密端口:587或465

新浪收費郵箱(SinaVIP):

POP3服務器:pop3.vip.sina.com (端口:110),使用SSL的加密端口:995

SMTP服務器:smtp.vip.sina.com (端口:25),使用SSL的加密端口:587或465

126免費郵箱:

POP3服務器地址:pop.126.com(端口:110),使用SSL的加密端口:995

SMTP服務器地址:smtp.126.com(端口:25),使用SSL的加密端口:994或465

163免費郵箱:

POP3服務器地址:pop.163.com(端口:110),使用SSL的加密端口:995

IMAP服務器地址:imap.163.com(端口:143),使用SSL的加密端口:993

SMTP服務器地址:smtp.163.com(端口:25),使用SSL的加密端口:994或465

網易免費企業郵箱(免費的域名郵箱):

SMTP服務器地址:smtp.ym.163.com 默認端口為:25 (如勾選ssl安全鏈接,端口號為994或465)

POP3服務器地址:pop.ym.163.com 默認端口為:110 (如勾選ssl安全鏈接,端口號為995)

IMAP服務器地址:imap.ym.163.com 默認端口為:143 (如勾選ssl安全鏈接,端口號為993)

網易收費企業郵箱: 

SMTP服務器地址:smtp.qiye.163.com 默認端口為:25 (如勾選ssl安全鏈接,端口號為994或465)

POP3服務器地址:pop.ym.163.com 默認端口為:110 (如勾選ssl安全鏈接,端口號為995)

IMAP服務器地址:imap.ym.163.com 默認端口為:143 (如勾選ssl安全鏈接,端口號為993)

中國移動139免費郵箱:

POP3服務器地址:POP.139.com(端口:110),使用SSL的加密端口:995

SMTP服務器地址:SMTP.139.com(端口:25),使用SSL的加密端口:587或465

QQ免費郵箱:

POP3服務器地址:pop.qq.com(端口:110),使用SSL的加密端口:995

SMTP服務器地址:smtp.qq.com(端口:25),使用SSL的加密端口:465

QQ企業收費郵箱:

POP3服務器地址:pop.exmail.qq.com (SSL強制被啟用 端口:995)

SMTP服務器地址:smtp.exmail.qq.com(SSL強制被啟用 端口:465)

海外QQ企業郵箱用戶

接收郵件服務器:hwpop.exmail.qq.com ,使用SSL,端口號995

發送郵件服務器:hwsmtp.exmail.qq.com ,使用SSL,端口號465

微軟office365郵箱:

POP3服務器地址:outlook.office365.com (SSL強制被啟用 端口:995) SMTP服務器地址:smtp.office365.com(SSL強制被啟用 端口:587)

TOM郵箱:

POP3服務器地址:pop.tom.com(端口:110),使用SSL的加密端口:995 SMTP服務器地址:smtp.tom.com(端口:25),使用SSL的加密端口:587或465

搜狐郵箱:

POP3服務器地址:pop3.sohu.com(端口:110),使用SSL的加密端口:995

SMTP服務器地址:smtp.sohu.com(端口:25),使用SSL的加密端口:587或465


8

參考資料

1、SMTP協議介紹

https://blog.csdn.net/qq_35644234/article/details/68961603

2、測試imap服務器命令詳解

https://blog.csdn.net/sinat_37213335/article/details/88291078

3、細說電子郵件的端口號

https://taoshu.in/email-ports.html

4、https://www.jianshu.com/p/1797d82c1afe


該文章在 2024/4/9 23:47:48 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved