邮件服务器必须掌握基础知识之一SMTP和POP3对话全过程详解
本帖最后由 woxizishen 于 2014-10-17 08:50 编辑前言
不管是邮件管理员还是运维人员,这些基础知识掌握对你们只有好处没有坏处,排除问题的时候还是能帮助很大的忙的。
1.在介绍对话之前,首先给大家介绍下对话过程使用的命令
HELO/EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示任何的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话
郵件傳送SMTP對話全過程.
一次簡單的SMTP對話全過程(使用helo無驗證方式進行對話)
client:telnet cn.king.com 25 (登陸到MTA服務器)
server:220 cn.king.com ESMTP Postfix (服務器回應)
第一次對話:MTA返回一個成功表示連接成功。這裡能看到對方使用什麽樣的MTA軟件。
client:helo cn.king.com 使用helo和MTA服務器對話,也就是打招呼唄,很多垃圾郵件不按照SMTP規範,不進行此操作或helo收件者MTA的領域名稱。
server:250 cn.king.com(服務器回應)
第二次對話:客戶端向MTA打招呼發送一個helo或ehlo命令
client:mail from:<steven_zhang@cn.king.com>(這裡填寫你的發件人地址)
server:250 Ok(服務器回應OK)
第三次對話:客戶端向MTA表明自己的發件人郵件地址
client:rcpt r(故意輸入錯誤)
server:501 Syntax: RCPT TO: <address>(提示你輸入正確的語法參數)
client:rcpt to:<steven_zhang@cn.king.com>(這裡填寫你的收件人地址)
server:250 Ok(服務器回應OK)
第四次對話:客戶端向MTA表面自己的要發往的目的收件人地址。
client:data(開始準備傳送數據)
server:354 End data with <CR><LF>.<CR><LF>(服務器回應你如何結束)
第五次:輸入data準備發送數據。服務器回應你輸入.點 表示結束
(以上階段就是第一部份提到的要是數據前過濾就在上面幾個階段進行)
client:from: zhangxiao<zhangxiao@cn.kb.com>(這個可不寫,只是你想重新修改發件人地址時用唄,但實際傳送發件人地址在查看郵件頭時還是以你最開始設定mail from的爲準,
這裡只是修改郵件頭上面的from後面的地址而已,而不是Return-Path:後面的地址噢)
client:to:<steven_zhang@cn.king.com>(這個可不寫,寫多個那就是to給多個收件人而已)
client:subject:zhangxiao(主旨啦)
主旨和內容之間要空一行,否則都視為主旨內容。
client:this is a tetsss messageaaaa(郵件內容)
client:.(結束并發送郵件用這個點就OK了)
250 Ok: queued as B0C1A5BD2DD
quit(斷開連接)
221 Bye
第六次對話:這裡主要就是你輸入的郵件內容和主旨內容唄。
(這裡就是前面第一部份講到的郵件數據后過濾機制階段,也就是對郵件內容和郵件主旨或郵件頭進行篩選過濾唄)
一次帶身份驗證的SMTP對話全過程(通用網易和各大郵件提供商)基本步驟同1,只是中間多了一個驗證身份過程。當你helo完對方的郵件服務器,馬上就要開始進行身份驗證,這裡以網易來測試(貌似我测试pop3后没几个月,在里面秒删上千封邮件,网易已经关闭了直接通过命令登入,不过大家可以再试下,说不定又开通了,我之前通过一条命令删除我的网易web邮箱上千封邮件)。
client:helo或者ehlo 發送的郵件主機(最好填網易的smtp.163.com MTA主機名稱,如果你隨便填一個或者填收件人的郵件主機是很容易被當成垃圾郵件來阻擋了)
client:auth login 進行驗證登陸
server:334 dXNlcm5hbWU6 (網易的MTA服務端就返回一個加密的base64碼給你,你當然是看不懂的啦,用base64工具對dXNlcm5hbWU6解密后,名稱就是username,也就是提示你輸入帳號)
client:MTM4MjIwMTA= (這裡加密的base64碼就是我在網易註冊的郵件帳號,還是通過base64工具對我的帳號加密后,將加密的編碼複製到這裡而已)
server:334 UGFzc3dvcmQ6 (網易的MTA服務端還是返回一個加密的base64碼給你,這個解密后就是password名稱,提示你要輸入密碼唄
client:d294aXppc2hlbjI= (這裡加密的base64碼就是我在網易註冊的郵件帳號,還是通過base64工具對我的帳號加密后,將加密的編碼複製到這裡而已,這個是我隨便編的我不可能把密碼告訴你們吧)
server:235 Authentication successful(提示驗證成功)
後面的操作不多說了就是和上面1的對話過程一模一樣。
一次pop3對話過程client: telnet pop3.163.com 110 (登陸到網易pop3服務器)
server: +OK Welcome to coremail Mail Pop3 Server (163coms[8db726ec93e9d4e3e9a2fd3d31b052
51s]) (網易服務器返回一個歡迎介面,這個+OK表示服務器響應成功的意思啦)
第一階段:pop3服務器響應一個成功。
client: user chinaunix (自己輸入你在網易註冊的郵件帳號)
server: +OK core mail (網易服務器返回pop3服務器的名稱)
第二階段: pop3服務器響應此用戶存在并告訴你pop3服務器的軟件版本
client: pass 123456 (自己輸入你在網易註冊的郵箱密碼)
server: +OK 300 message(s) (網易服務器響應成功,則返回一個你的郵箱共有多少封郵件,多大容量)
第三階段: pop3服務器返回你的郵箱有多少封郵件,占了多大容量。
client: stat (查看郵箱總封數和使用的總容量大小)
server: +OK 300 55228311(網易服務器則返回你查詢的結果)
client: list 155 (查看某一封郵件的大小,如果直接list 則顯示所有郵件)
server: +OK 155 4649(網易服務器則返回你查詢的結果)
client: retr 22(查看序號22郵件的全部內容)
server:將郵件全部內容展現給你看。
client:dele 2 (刪除你list所有郵件當中的第2封郵件)
server:+OK core mail(pop3服務器響應命令執行成功)
這裡有個技巧,當你使用的webmail郵件多的嚇死人,打開網頁慢的要死,或者幾千甚至上萬封郵件,估計你在webmail手動刪除會痛苦不堪不說,還會浪費你大量時間。
那就用
dele 1
dele 2
dele 3
dele 4
....
把一大串這樣的數字直接複製到你登陸后的pop3服務器里,這樣立馬就全部幹掉。不過需要注意的是,有些ISP提供的pop3服務器,在你執行完畢后,直接就把你T掉,讓你斷線。呵呵,沒關係,郵件還是會被刪除的。不過請慎重使用這個噢,因為如果真的是那種pop3服務器,你想後悔就來不及了,因為直接斷掉不給你取消刪除郵件的機會,也就是不讓你執行rset,就把你踢出去。
第四階段:當你對任何郵件進行刪除操作時,pop3服務器并未立即刪除,你必須輸入quit登出后,服務器才將你標示dele的郵件全部刪除。當你不想刪除你標示的郵件,就執行rset命令取消前面的操作。
邮件服务器如果有需要使用SSL证书加密信息传输,可以看下沃通SSL证书 www.wosign.com,提供技术支持 繁体字看的相当累.....................:lol 之前一直弄不太明白,感谢楼主 回复 4# General_715
弄不明白那是因为国内几乎没撒完整的资料,都是讲的似懂非懂或者半截
页:
[1]