程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何編寫SMTP郵件服務器

如何編寫SMTP郵件服務器

編輯:Delphi
許多時候,我想不通為什麼不能直接將信件送到對方(POP或IMAP)服務器上,為什麼非要通過一個莫名其妙的SMTP郵件服務器轉交一次,實在不服氣,如果使用UNIX,這個問題就很好解決,用sendmail就能完成遞送任務,但在Windows下呢?同樣的,一定也有辦法饒開SMTP Server直接遞送到對方的遠程郵局服務器上,難得住別人,難得住我們程序員嗎?分析相關協議(RFC2645,RFC821, RFC1846,RFC1939,RFC1725,RFC1730-RFC1733 etc.),我們會知道要完成直接遞送其實相當簡單。
  首先我們看一下Email的遞送過程:Email(Encode) -> a SMTP Relay Server -> Remote SMTP Server(遠程郵局)。非常簡單,郵件編碼後被遞送到一個SMTP轉交服務器上,該服務器對信件分檢(到同一郵局的被放在一起)後,根據優先級以及信件的先後次序被發送到遠程郵局的SMTP服務器上。換句話說,只要我們知道了SMTP轉交服務器是如何確定遠程郵局SMTP服務器的地址的,就可以輕松地將饒開SMTP Relay Server直接遞送到遠程郵局服務器。
  SMTP Relay Server是如何確定遠程郵局服務器的地址的呢?如果你熟悉域名解析,就知道是怎麼回事了,我們知道電子郵件的地址由兩部分構成[email protected],郵箱(postbox)和地址(address.com),給域名服務器發送指令查詢“address.com”的遠程郵局服務器的地址即可找到遠程郵局SMTP服務器的IP 地址,該指令查詢是被稱作MX(Mail Exchange)郵件交換服務器的地址查詢。遠程郵局SMTP服務器的地址可能不止一個,這時,你可根據信件優先級的不同,將對應優先級的信件發到對應地址的遠程郵局SMTP服務器,當然,你也可以不管三七二十一,隨便選一個SMTP服務器發送,見後附“域名解析結果樣例”。簡單吧。這下,自己編寫一個SMTP Server不難了吧!
  
  問題:頭ID是個麻煩的事,有時會產生Invalid Head ID 5811的錯誤。
  
  附:域名解析結果樣例
  
  Answer List
  
  Resource name is : sina.com
  Type is : MX Class is : IN
  MX Priority : 10 MX Server : mailcn.sina.com
  
  Resource name is : sina.com
  Type is : MX Class is : IN
  MX Priority : 15 MX Server : mail.sina.com.cn
  
  
  Authority List
  
  Resource name is : sina.com
  Type is : NS Class is : IN
  Domain name is : resolver.sina.com
  
  Resource name is : sina.com
  Type is : NS Class is : IN
  Domain name is : ns2.sina.com
  
  
  Additional Response List
  
  Resource name is : mailcn.sina.com
  Type is : A Class is : IN
  IP Address is : 202.106.184.233
  
  Resource name is : mail.sina.com.cn
  Type is : A Class is : IN
  IP Address is : 202.106.187.150
  
  Resource name is : resolver.sina.com
  Type is : A Class is : IN
  IP Address is : 206.204.114.135
  
  Resource name is : ns2.sina.com
  Type is : A Class is : IN
  IP Address is : 209.133.24.135
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved