【CloudXNS码农提示】为何CNAME和MX不能共存?

一、问题来源

自我们CloudXNS系统开通了客服QQ后,被问到最多的问题就是:“为什么你们系统会提示MX和CNAME不能共存,但我用别的域名解析系统都没有这样的提示呀?”

原来,很多站长们需要使用到CDN,大部分加速服务提供的都是CNAME模式;而同时,MX企业邮件记录也必须配置到同一个节点下。由于很多系统在域名配置管理时并没有做记录的互斥限制,按照大家在别的系统中的配置习惯搬到我们CloudXNS之后,却没法奏效。

因此就出现了如上问题。

二、技术剖析

RFC 1034(http://tools.ietf.org/pdf/rfc1034)章节3.6.2中指出:

If a CNAME RR is present at a node, no other data should be present; this ensures that the data for a canonical name and its aliases cannot be different.

大意就是说如果CNAME资源记录出现在一个域名节点,为了确保不会出现不同的解析结果,这个域名节点将不再接受其他记录值。

我们来测试一下。

假设为DNS域chinatesters.cn注册了下面的两条记录:

@    MX       10  mx.ym.163.com.

@    CNAME        fastweb.com.cn.

下面是在递归服务器(不能使用该域的授权服务器)上dig查询的结果:

查询CNAME返回如下:

查询MX返回如下:

我们可以看到MX记录查询的结果与上文中注册记录并不一致,而为其CNAME记录值所配置的MX记录,即对CNAME记录做的递归查询得到的结果。

但如果在递归服务器的CNAME记录TTL过期后再来做查询,只是把查询的顺序颠倒, (即先查询MX记录,再查询CNAME记录)则有可能得到期望的正确结果。

总结一下,递归DNS服务器在查询某个常规域名记录(非CNAME记录)时,如果在本地cache中已有该域名有对应的CNAME记录,则会开始用该别名记录来重启查询。上文中dig查询MX记录测试示例即对应于这种情况。

因此,即使某些域名解析系统网页上并未限制用户同时填写CNAME和MX的操作,但只要将CNAME和MX配置到一起,上述问题也一定是存在的,它会导致邮件服务偶尔出现异常。

实际上除了CNAME和MX不能共存外,已经注册了CNAME类型的域名记录是不能再注册除DNSSEC相关类型记录(RRSIG、NSEC等)之外的任何其他类型记录(包括MX、A、NS等记录)。理由同上,这里就不一一做演示了。

三、解决方案

我们CloudXNS系统在标准记录类型上的互斥关系设定及提醒是完全遵循DNS规范的,而这样的规范设定却对大家在域名配置上造成了一定困扰。

不过,细心的网友发现,CloudXNS具备隐式CNAME扩展记录类型(即LINK记录),它可以隐藏当前这一层的配置,直接接管下一层的结果。因此,CloudXNS也可以获得“将MX和CNAME共同配置”类似的解决方案。

如下图所示,在www下配置CNAME到CDN服务提供商,然后在@下配置MX和LINK记录,将www作为被LINK的域名。

我们用dig验证一下:

查询MX返回如下:

查询CNAME返回如下:

当然,这样的配置也同样会存在邮件服务偶尔失效的问题。

因此,CloudXNS系统即将为大家给出一个终极解决方案,可以完美的解决这个问题!届时,您的邮件服务可以永远正常使用,同时也可享受到网络加速的快感,可谓兼得鱼和熊掌。

我们将在2015年2月第二周推出网络云安全加速的功能,该功能模块会整合我司(@北京快网)CDN服务提供的部分核心内容,包括访问加速、网站防火墙、防盗链、DDOS防护、CC防护等多项加速及安全保护功能。届时您只需要给您的域名一个开关点击,一切即可高枕无忧。

悄悄透露部分页面:

四、参考文献

RFC 1034英文原版:http://tools.ietf.org/pdf/rfc1034

中文译文参考:http://download.csdn.net/detail/weicq2000/4627738

@CloudXNS

时间: 2024-08-29 12:29:10

【CloudXNS码农提示】为何CNAME和MX不能共存?的相关文章

为何CNAME和MX不能共存

http://weibo.com/p/1001603804025475695045 一.问题来源 自我们CloudXNS系统开通了客服QQ后,被问到最多的问题就是:"为什么你们系统会提示MX和CNAME不能共存,但我用别的域名解析系统都没有这样的提示呀?" 原来,很多站长们需要使用到CDN,大部分加速服务提供的都是CNAME模式:而同时,MX企业邮件记录也必须配置到同一个节点下.由于很多系统在域名配置管理时并没有做记录的互斥限制,按照大家在别的系统中的配置习惯搬到我们CloudXNS之

【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍. 优秀的码农会告诉你学啥底层.啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊? +++基础的分割线+++ 列举几个我认为比较重

从菜鸟到大牛的码农升职必学文章推荐

几年前我也是一个码农菜鸟,我也常常幻想着成为技术大牛. 如何减小与"大牛"的差距是我常常不得不面对的话题.今天从我走过来的路来总结一下成为大牛的技术之路. 先来看一张程序员的时间管理图. 除了时间管理,技术学习也是少不了的.下面推荐一下比较好的技术文章. 使用瀑布流插件 Masonry 进行瀑布流布局 业余草微信公众号上线了! 使用HTML5 Canvas实现火焰风暴动画 HTML5 实现3D翻转立方体 使用 HTML5 制作像素太空战机游戏 常用的Linux关机命令大全 5个常用的L

记国庆前的一次码农受骗记

作为一名码农,一直自诩自己是这个星球上最最最聪明的种族.但是最近的一件事情,让我发现了自己的一些不足,特别是在情商,简直为零啊!于是我想了一个国庆,打算写在这里,给园子里的码农们提个醒,千万不要小看了别人的智商,自己也不要太自大! 事情是这样的,国庆节前的一天,作为小码农的我,正在电脑前辛苦地加班编程,而项目经理呢,在一边对我们大家的工作指指点点.这时,一个电话响了,手机上提示说是广告推销电话,“XX人标记过”,身为一个高智商人群,正想有一个电话能让我起身休息一会儿呢,管它是不是诈骗呢!于是有了

wpf笔记(读一线码农8天入门wpf)

****************基础****************●引入命名空间 xmlns:local="clr-namespace:DataTemplate"●StaticResource静态资源相当于常量,编译后值不改变 {StaticResource ResourceKey=mystyle}●DynamicResource动态资源相当于变量,编译后值可改变 {DynamicResource ResourceKey=mystyle}●Binding绑定 Text="{

「5-5」码农商城实现商品数据提交到Mysql数据库

访问不了Youtube?1.点击搭建自己的ss并开启bbr快速上网教程轻松访问1080p高清Youtube视频.2.点击本节b站视频教程地址观看. 我们之前已经通过逆向工程获取到了 Product 这个实体类,那么我们在提交表单数据的时候,我们的标签 name 值需要和属性值对应起来. 123456789 private Integer id;private Short categoryId;private String name;private String image;private Lon

给码农们分享一条去舌苔的好方法

悲催的码农们高负荷的工作下是不是舌苔厚厚啊, 今天不经意间发现一条好方法, 去舌苔简直奇效啊. 去超市买一盒云南白药牙膏吧, 含一撮到嘴里, 让它在嘴里化开, 坚持几分钟, 然后漱漱口, 最后你会发现舌苔都没了. 不过个别敏感人群可能会感觉舌头会有些痛, 自己斟酌吧,我就是感到有点痛啊, 不过坚持坚持就好啦.

码农和程序员的五大主要区别

1.码农写的是代码,程序员写的是系统 从本质上讲,码农就是你让他写什么他就写什么的"机器人才".所谓的码农大多通晓几门编程语言,但是却于商业上面并不熟稔.当然他只是不感兴趣而已,他想做的只是写代码. 而程序员则希望能够创建出一些特别出彩的东西--无论是从技术角度还是商业角度去看.他更感兴趣的是自己的app能够被广泛使用,他渴望知道"WHY",而不仅仅是"WHAT and HOW". 2.程序员更像是partner 正如我前面一点所说的,程序员更注

码农交流日常——我只能说:MDZZ(手动微笑)

本文属吐槽文,我只想说:对神论还蜜汁自信的怎么破? ------------------------------背景介绍--------------------------------------- 上半年参与了一个水的不行的项目,总的架构如下: 用C++作为实现语言 在Windows下,用户界面以EXE的形式出现,其他模块以DLL的形式通过LoadLibrary加载 数据总控模块提供一套API给"自定义功能模块"使用,实现用户界面和功能模块的交互,自然,所有的自定义功能模块也都按照约