用腾讯邮箱 SMTP 发邮件出现 550 错误是什么情况?

2013-07-31 13:57:08 +08:00
 sethverlo
用的是 Ruby on Rails 的 Action Mailer,发邮件的时候发现一个问题:

发邮件到 xxx@xu.com (其实是当时随手填的)的时候,会直接报错 550;然后用 Gmail 发送就没有问题。

在网上搜了一下说 550 是收件人错误,但是 xu.com 这个网站是可以访问的,理论上来说是可以有邮箱后缀的。

日志如下:

Sent mail to (15731ms)
Completed 500 Internal Server Error in 15783ms

Net::SMTPFatalError (550 Mailbox not found
):
7353 次点击
所在节点    问与答
10 条回复
ejin
2013-07-31 18:06:14 +08:00
xu.com 没有设置mx记录,SMTP服务器根本不知道要往哪发。你这邮件自然也没地方发了,报错还不许了?

楼主去复习下dns里的mx记录是做什么的
sethverlo
2013-07-31 21:12:17 +08:00
@ejin 那么请问 22@22.co 呢?还有 ceshi22@22.com test@t1.com 321@312.com ttt@test.com 2@22.com 这些呢?更多的记录我删掉了,如果您感兴趣的话我明天可以翻一下日志。不同的是,这些还都是有退信的,可是 xu.com 这个邮箱后缀根本就是发不出去。
julyclyde
2013-07-31 21:12:39 +08:00
@ejin 没有MX会fallback到A
edgar
2013-07-31 23:03:30 +08:00
在饭否上回你了- -。
11138
2013-07-31 23:08:52 +08:00
主要原因:

xu.com. 600 IN MX 5 mxbiz1.qq.com.
xu.com. 600 IN MX 10 mxbiz2.qq.com.

内部系统直接查询得到结果“Mailbox not found”。
ejin
2013-08-01 06:25:08 +08:00
@sethverlo 我真心不知道i你做这些测试有什么意义,“理论上来说是可以有邮箱后缀的。”,理论上是理论上,但是实际上呢?你首先要看一下xu.com是否有MX记录,前面我查过了,根本没有MX记录,这样根本就没办法收信,没有MX记录你的邮件系统根本不知道要发给谁,你还觉得系统不该报错不该退信等等吗?

为什么你发信给 *@qq.com 对方会收到信,对方会退信?那是因为qq.com这个域名有mx记录,mx告诉了你他的邮件服务器是什么域名什么ip,你就往那发,发过去后出了问题没出问题那边可以处理。你现在是根本连服务器都找不到,你让你的邮件系统怎么答复你?好吧上面有人说到如果没有mx记录那就按照a记录来,a记录是有个ip,但是人家架设邮件服务器了吗?没有架设的话你的信还是送不过去,送不过去自然就报错了。

再说一次为什么要设置域名的mx记录,就比如说a记录吧,你打开www.v2ex.com,你的浏览器要去获取网页的内容,找谁要?那当然是去查询这个域名上的a记录,如果a记录不存在,可能返回cname等记录,那你的浏览器就可以一步步去找到这个服务器,然后打开端口提交请求。如果任何一步出现错误,浏览器就会告诉你该也无法显示。

最后我再说一次,我对此没任何兴趣知道么,一个疯子居然没事去测试不存在的地址,还拼命研究对方反回的错误,这就好像你打开一个网页地址,但是反回一个404错误,你却非常偏执说这个应该是有网页的地址啊,为什么给我反回404页面呢?

如果你真的对邮件的各种信息感兴趣,建议你去学习一下邮件传输的协议,如果你只是觉得好玩,又老是问这些让人很无语的问题,我真心不想再回答了。

最后说一句,楼主我一看你就是有钱人,理论应该不会那么小气,往我卡上打一百万,你会打的对不对。
sethverlo
2013-08-01 07:12:20 +08:00
@ejin 我很无聊测试这些无聊的问题?你知道为什么吗?因为我做了个带邮件提醒的东西,没有带邮箱验证。Rails 3.2.13 没有异步邮件(第一次用 rails),所以就用了 bcc 的形式来给用户发信。但是碰到 xu.com 这样的情况就会把整个 email_list 都给 550 掉。我之前只是知道有 mx 这个东西,并没有实际用到过。这是第一次用到 mx/email 相关的东西,也不太知道具体该怎么做。我个人认为我已经做了足够多的测试和验证才来这里问问题,如果你还是认为这些问题太小白的话那么只能说声抱歉了。

至于说最后一句中莫名其妙的有钱人?我只能说我现在还是个学生。
11138
2013-08-01 07:24:31 +08:00
@ejin 我查了 xu.com 的MX记录是腾讯的:

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;xu.com. IN MX

;; ANSWER SECTION:
xu.com. 400 IN MX 10 mxbiz2.qq.com.
xu.com. 400 IN MX 5 mxbiz1.qq.com.

所以,用腾讯邮箱的SMTP发邮件给它,属于同一个系统内,所以会直接作一些判断并返回结果,而不是发送出去(放到邮件队列)后再收到退信。

另外,对于一个域名,可以不添加MX记录,例如test@test.com,邮件系统会查询test.com的MX记录,如果不存在,则再查询test.com的A记录。
fth72bd
2013-08-01 15:31:17 +08:00
mark
julyclyde
2013-08-02 15:44:39 +08:00
明明是策略问题,结果被半桶水结实为技术问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/77537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX