V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sethverlo
V2EX  ›  问与答

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

  •  
  •   sethverlo · 2013-07-31 13:57:08 +08:00 · 7437 次点击
    这是一个创建于 4144 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用的是 Ruby on Rails 的 Action Mailer,发邮件的时候发现一个问题:

    发邮件到 [email protected] (其实是当时随手填的)的时候,会直接报错 550;然后用 Gmail 发送就没有问题。

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

    日志如下:

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

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

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

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

    内部系统直接查询得到结果“Mailbox not found”。
    ejin
        6
    ejin  
       2013-08-01 06:25:08 +08:00   ❤️ 1
    @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
        7
    sethverlo  
    OP
       2013-08-01 07:12:20 +08:00
    @ejin 我很无聊测试这些无聊的问题?你知道为什么吗?因为我做了个带邮件提醒的东西,没有带邮箱验证。Rails 3.2.13 没有异步邮件(第一次用 rails),所以就用了 bcc 的形式来给用户发信。但是碰到 xu.com 这样的情况就会把整个 email_list 都给 550 掉。我之前只是知道有 mx 这个东西,并没有实际用到过。这是第一次用到 mx/email 相关的东西,也不太知道具体该怎么做。我个人认为我已经做了足够多的测试和验证才来这里问问题,如果你还是认为这些问题太小白的话那么只能说声抱歉了。

    至于说最后一句中莫名其妙的有钱人?我只能说我现在还是个学生。
    11138
        8
    11138  
       2013-08-01 07:24:31 +08:00   ❤️ 1
    @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记录,例如[email protected],邮件系统会查询test.com的MX记录,如果不存在,则再查询test.com的A记录。
    fth72bd
        9
    fth72bd  
       2013-08-01 15:31:17 +08:00
    mark
    julyclyde
        10
    julyclyde  
       2013-08-02 15:44:39 +08:00
    明明是策略问题,结果被半桶水结实为技术问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:57 · PVG 03:57 · LAX 11:57 · JFK 14:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.