设计SMTP问题!!!
我想学习开发邮件服务器,便我有一点问题不是很懂,例如我们知道一个邮件地址后,如abc@msn.com,我们可以在一个SMTP上发送邮件,但这个SMTP并不是abc@msn.com的所在邮件服务器,例如我们用mail.163.com来发信给abc@msn.com,我想知道的是,mail.163.com如何通过abc@msn.com这个邮箱地址来获取abc@msn.com所在的邮件服务器IP,然后把信送到那个mail server上?最主要是在编程上如何通过一个邮箱地址来获得该邮箱的所在mail server,并给他发信!请各位帮帮忙,小弟是个菜鸟,对网络不是很熟,谢谢! 问题点数:100、回复次数:5Top
1 楼Asiafly(亚洲腾飞)回复于 2004-04-03 01:38:34 得分 45
就是反复查询CNAME得到最终的ip地址。
eg:(摘自网上)
a.邮件服务器请求DNS给出主机sh.msn.com的CNAME记录,如有,假若CNAME到shmail.msn.com,则再次请求shmail.msn.com的CNAME记录,直到没有为止。
b.假定被CNAME到shmail.msn.com,然后邮件服务器请求@msn.com域的DNS给出shmail.msn.com的MX记录,(MX是邮件交换记录,它记录了发到msn.com域的邮件,实际上可以由其他什么主机来处理)
shmail MX 5 shmail.msn.com
10 shmail2.msn.com
c. 邮件服务器最后请求DNS给出shmail.msn.com的A记录,即IP地址,若返回值为1.2.3.4
d. 邮件服务器与1.2.3.4连接,传送这封给shuser@sh.msn.com的信到1.2.3.4这台服务器的SMTP后台程序Top
2 楼varkychan(kevinchan)回复于 2004-04-03 10:31:20 得分 0
谢谢 Asiafly(亚洲腾飞) 的解答,但我有点不明的是,我知道的是邮箱 abc@msn.com ,那怎么知道 sh.msn.com 呢? 例如163.com的邮箱,他的邮箱地址好像是 mail.163.com ,但一个邮箱地址只是 abc@163.com ,那我该向哪个 DNS 发送请求 CNAME 记录? 是不是就向邮箱 "@" 后面的DNS发送请求?如 msn.com ,163.com .请大家来讨论,给多点讯息!Top
3 楼cnTOMcn()回复于 2004-04-03 13:14:18 得分 45
向DNS请求解析MX记录。
这是DNS服务器的工作内容之一。
我们平时用域名查其对应的IP地址,这是DNS的A记录,可以用PING查到
如果你用邮件中的主机名,查其对应的主机(邮件)SMTP服务器的域名(注:不是IP地址),则DNS术语称MX记录,有了SMTP服务器的域名,你下一步就……直接用其域名好了。
你可以读一下DNS协议,自己做个MX记录查询,会者不难,其实代码很简单,
不过该协议不太好读:)
如果你想要,我可以帮你用VB6做个查询MX记录的控件(源码吗,暂时无法提供),
因现工作较忙,约一周后可上传到我的论坛。
-----------------------------------------------
我编了三年程序 只用过VB
我用了三年VB 只会WINSOCK和加密
http://www.offca.com/gps/iphonebbs/
**********中国网络程序开发联盟欢迎你**********
-----------------------------------------------Top
4 楼xaodoudou(我不想做潜水员)回复于 2004-04-03 14:00:38 得分 10
或许你看看 FreeBSD 上 的 关于邮件服务器上配置的文档就明白了
不过很难懂 我也不明白 我只知道那儿有Top
5 楼varkychan(kevinchan)回复于 2004-04-03 14:07:50 得分 0
谢谢两位仁兄,小弟受益非浅,如果在上面的个个人都像你们这样就好了!我想我国的计算机技术一定更进一步.请问哪里有关于网络的站点?英文的都不怕,小弟还算看得懂个大概.最好是底层的东西,这样才能更好的了解内部是如何动作的,否则经常搞到我一头雾水,不知道它是如何实现的!谢谢!Top




