4 DATA
5 QUIT
这就有问题了.我做的smtp服务器可收它发过来的信.但我的smtp服务器向它(tom.com,163.com)发信,它竟然不接收?
这中间过程有什么要注意的地方?RFC821等RFC文章看了一次.没发现有什么其它的要注意的地方?
望有做过smtp服务器的人.帮下忙,提点一下..感激不尽....
19 个解决方案
没有做过smtp方面的东西,但是以前接触过协议;说的不对,仅供参考
个人的看法是,你的smtp服务器发信件的第二步可能不是太妥,这步可能不是自己做的
还有就是发送到对方pop服务器,有些需要验证用户信息,不知你有无加验证信息。
pop3服务器?
163.com或tom.com接收的信件.是本地smtp向163或tom的smtp服务器发信还是向它们的pop服务器发信?
smtp是25端口. pop是110端口
我本地的smpt是收到163.com或tom.com发过来的测试信.是用25端口接收的啊??不是110端口的pop服务器啊??
我搞错了??
我的是本地smtp收到一封rcpt to为tom.com或163.com的信件.要转发到它们的邮箱.但按照它们的序列.他们不接收啊?
如果是接受:你连的是它的SMTP服务器,用它的SMTP端口
如果是发送:你连的是它的pop服务器,163.com只是对方Pop服务器的域名,发送的话应该是用它pop的端口。
我本地的smtp服务器和163.com或tom.com的smtp服务器对连啊?我发信,它收信.怎么连到它的pop服务器去了????不解
比如我sss@xx.com 的一个用户通过xx.com这个域名服务器(smtp自做的)向对方发信(xx@163.com或xx@tom.com)
163.com或tom.com接收信??我是向它smtp服务器发还是pop服务器发???糊涂了!!!!!!
收发邮件服务器可以是在一台服务器可以是同一域名如163.com,但你要收发必须得通过不通端口连到两个服务上。你查一下相关资料吧
我想有个明确的答复.资源我看了不少了.rcf看了一遍了.
我自已的smtp服务器.怎么和另一个smtp服务器(smtp.tom.com或smtp.163.com)交互信件.
也就是信件转发.我想知道它的序列是什么?
我上面也列出了.1)helo 2)mail from 等,但它们(smtp.tom.com,163.com)不认.谁做过的告诉一下我好了.
注:域名a 记录.mx记录等都解析到同一台服务器.它们(smtp.tom.com,smtp.163.com)反解析应该是没问题的.他它们为什么就是不认?
163.com的mx记录是 mx.mail.163.split.netease.com
tom.com的mx记录是 tommx.163.net
你应该向这两个地址发信
现在要求SMTP时候必须加身份验证,需要将用户名和密码进行base64编码,然后用auth命令进行认证,详细你可以参照用sniffer抓一下outlook发包的过程,按照outlook的过程进行重新编码试试。
smtp.tom.com,smtp.163.com 应该只接收 xxx@tom.com, xxx@163.com 的邮件
mx.mail.163.split.netease.com,tommx.163.net 应该只接收发往xxx@tom.com, xxx@163.com 的邮件
噢...确实是shw014所说的..我查了下确实是这样..
那能不能再说下.我该向它发什么序列的指令??
shw014() 有空再指教下了...
不行啊?我向tom的tommx.163.net连接的时候.它返回给我的是554..并不是250啊?为什么啊?
很多smtp服务器不会接收不明ip发来的信,因为很可能是垃圾
不明ip??那怎么样才让该ip让它明呢??我是有固定ip地址的服务器的啊?也有域名指向该服务器的啊?
我觉得必须是知名得email服务商得ip才行,他们之间可能有约定。互相信任对方得ip
一般情况下,利用SMTP服务器转发是需要认证的。
我写过一篇文章,通过分析fetchmail的代码来大概介绍了一下ESMTP的认证方式,这里可以看到:
http://blog.csdn.net/monnand/archive/2006/08/17/1076581.aspx
如果想看RFC,那就看一看RFC2821,RFC821已经被RFC2821替代了。
关于认证方式,可以看看我那篇文章还有我那文章里面提到的参考资料。
如果文章中的代码看不懂,可以直接跳到后面第三节,是对三种认证方式的流程总结
一般情况下,如果向一个SMTP服务器发送邮件,可以分成如下几种情况:
1 不用转发。比如我要给一个163的邮箱发邮件,那么我直接发送到163的SMTP服务器中。关于如何通过邮箱地址获得对方SMTP服务器的地址,可以通过DNS的MX查询。我曾经写过一篇文章,通过分析qmail的代码来讲解DNS的MX查询。里面还实现了一个简单的DNS的MX查询程序。在这里:
http://blog.csdn.net/monnand/archive/2006/07/15/924731.aspx
这种情况下,是不需要认证的。但是一般的服务器会反向解析你的域名(因为你在EHLO或者HELO时候提供了你的域名),看看你提供的域名是否与DNS查询到的结果相同。如果不同,将会把你看做是垃圾邮件的发送者
2 需要转发,这是大多数MUA(比如foxmail啦,outlook啦)的实现方式。你在使用这些MUA的时候都会让你设置一个SMTP服务器。有的是需要认证的(现在大多数的都需要认证)。也就是说,不管你发送邮件到什么地方,都会把邮件发送给某个特定的SMTP服务器,由这个服务器进行转发。认证方式看我的文章就好了:
http://blog.csdn.net/monnand/archive/2006/08/17/1076581.aspx
不明白的话可以给我发邮件,或者在我blog上面留言。