Windows命令實現匿名郵件發送

在日常工具開發中,經常會有發送郵件的需求。在一些高級語言中,如Python,C#中,都有專門的郵件發送模塊,如Python 中的 smtplib 模塊。那麼,一封郵件到底是如何發送到一個特定的郵箱呢?


舉個例子:使用[email protected] 發送一封郵件到 [email protected]


首先,看下郵件系統的組成部分,如下圖



再看下郵件發送的整個過程,如下圖:


①發送者使用SMTP協議,將郵件發送到自己郵箱服務器

②163郵件服務器使用SMTP協議,將郵件發送到QQ郵件服務器

③收件人使用POP3協議,從服務器端讀取郵件


在上面過程中我們會發現兩個問題:

①163郵件服務器需要驗證發送方是否是合法用戶。也就是說在整個發送過程中,需要使用到[email protected]的密碼才能完成整個郵件發送過程。

163郵件服務器如何發送郵件到QQ郵件服務器的呢?其實,這中間有個域名解析的過程。發送方會根據收件人的信箱來解析其服務器域名(qq.com),在該解析過程中,詢問其郵件服務器的地址。


既然驗證過程是在163郵件服務器,那麼我們是不是可以直接繞過去,直接模擬請求跟QQ郵件服務器進行交互呢?答案是肯定的,而郵件發送的整個過程可以抽象成下圖

我們可以發現關鍵的地方是如何解析QQ郵件服務器的地址。此處我們使用Windows命令nslookup來進行域名解析。查看qq.com的郵件服務器地址,可以使用命令:nslookup -qt=mx qq.com,結果如下:


其中 mail exchanger 後面就是qq.com 的郵件服務器地址。


這樣,我們就繞過了密碼驗證的過程,將郵件直接發送到了收件人的郵件服務器,想要了解代碼如何實現,點擊“閱讀原文”查看更多內容~


原文鏈接

如需轉載該篇文章,請註明來自“搜狗測試”


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章