我正在构建一个应用程序,每个客户都可以拥有自己的子域.
在这个例子中,他将他的子域设置为:威士忌
在这个例子中,他将他的子域设置为:威士忌
我在DNS中创建了一个通配符子域:
* .myapp.com A 123.123.123.123
所以当他访问我的webapp时,他会使用url:whisky.myapp.com,它将解析为123.123.123.123.
我的应用程序还使用我的客户选择的相同子域发送电子邮件(电子邮件将由sendgrid处理):例如customer@whisky.myapp.com
但是当我尝试为sendgrid的服务器设置通配符MX记录时,我的DNS提供商不允许我这样做,理由是违反了一些标准.
例如* .myapp.com MX sendgrid.com
解决方法
RFC1912明确承认存在通配符MX记录,但警告说
A wildcard MX will apply only to names in the zone which aren’t listed in the DNS at all.
RFC4592是一个标准跟踪RFC,它阐明了MX通配符的存在(参见2.2.1节中的示例).我很确定你的DNS提供商充满了它.
我可以想象一些DNS软件也遇到问题,或者因为他们根本不支持通配符MX记录,或者因为他们把“没有其他记录”的东西太字面化并且不允许两个通配符MX和通配符A.这个软件不符合标准,但运气好了.
考虑到客户注册时自动设置DNS记录是多么微不足道(或者应该如此),我会完全跳过通配符,让您的应用为每个客户配置DNS记录.