1 Python 有個模塊 smtpd ,用來作為 smtp 服務器,可以自己實現郵件服務器 smtp 功能。
這個模塊有 4 個 class:
smtpd.SMTPServer : 需要實現 process_message 函數,可以自己定義處理消息的內容,再發送給相應的其他郵件服務器,不過在 windows 下實驗,實際沒有發送郵件,只是個空 smtp 服務器。
smtpd.PureProxy:作為純代理轉發 ,可以發送。用 wireshark 可見實際發送數據給外部 mx 。
smtpd.MailmanProxy: mailman 的代理轉發
smtpd.DebuggingServer: 主要做調試用。
2 smtp 用來作為客戶端發送郵件,和 foxmail 等功能類似。
一般免費 smtp 都需要驗證才能發送,也不支持 relay(轉發) .
所以只能自己投遞給郵件地址的 mx 服務器。
使用 nslookup ,設置 set type=mx , 可以查詢到 mx 服務器
這時候的 mx 服務器是不需要驗證的。如下代碼只能發送給後綴是 qq.com
的郵箱 。不過也有發送份数限制。如果通過代理服務器繞過 ip 驗證,理論上應該可以無限發送郵件。
代碼:
import smtpd
import asyncore
print 'proxy start at 25 ...'
server = smtpd.PureProxy(('127.0.0.1', 25), ('mx1.qq.com', 25))
asyncore.loop()