实现与响应规范
RFC 6186[1] 的响应是基于 DNS 的 SRV 记录, 所以实现响应的标准就是 SRV 记录 (RFC 2782[2]).
SRV 记录标准:1
_Service._Proto.Name TTL Class SRV Priority Weight Port Target
使用 ZONE 进行命名就是:1
_[服务类型]._[协议].[域名名称] [生存时间] IN SRV [优先级] [权重] [端口] [目标服务器]
比如:1
_minecraft._tcp.minecraft.example.com 3600 IN SRV 0 1 19132 minecraft.hoster.com.
部署应用
RFC 6186 制定的目的就是为了解决从域名中发现电子邮件服务器配置的问题, SMTP[3] 本身存在对 MX 记录进行发现进而查找到对应的服务器主机, 但是现代邮件系统中的 MSA 不使用 MX 记录以及工作端口是 587. 于是这个规范设计来与 RFC 4409 联合使用.
在由 RFC 4409[4] 确立的现代的电子邮件提交系统里, 在用户发送电子邮件时, 需要通过 MSA(Message submission agent, 消息提交代理)进行处理才能传输到邮件服务器或中继服务器. 通常来说, 最终用户使用的传出服务器基本都是 MSA 系统, 这样避免了恶意提交对邮件服务器的侵害, 也能保护用户身份不被盗用.
这个标准中定义了对 MSA, IMAP 和 POP3 进行配置的新 SRV 记录类型, 并且还可以定义优先使用哪一种传入协议.
值得一提的是, RFC 6186 是由 Apple 起草发起的, RFC 4409 主要作者之一是 Qualcomm(高通).
标准实现
MSA
使用如下的 SRV 记录指向 MSA 服务:
1
_submission._tcp 3600 IN SRV 0 1 587 mail.example.com.
IMAP
- 使用
imap
标识一个普通 IMAP 服务类型.对于
STARTTLS
应该是客户端和 IMAP 服务器必须实现的, 但有的服务商可能并不需要使用. - 使用
imaps
表示一个使用 TLS 连接的 IMAP 服务器.
使用如下的 SRV 记录指向 IMAP 服务:
1
_imap._tcp 3600 IN SRV 0 1 143 imap.example.com.
1
_imaps._tcp 3600 IN SRV 0 1 993 imap.example.com.
- 使用
POP3
- 使用
pop3
标识一个可能会需要客户端使用 STLS[5] 进行连接的普通 POP3 服务器. - 使用
pop3s
标识一个使用 TLS 连接的 POP3 服务器.
使用如下的 SRV 记录指向 POP3 服务:
1
_pop3._tcp 3600 IN SRV 0 1 110 pop3.example.com.
1
_pop3s._tcp 3600 IN SRV 0 1 995 pop3.example.com.
- 使用
优先级指定
由于 SRV 记录允许为服务指定优先级, 所以如果同时在 DNS 中解析指向了多种服务类型, 那么管理员可以通过指定 SRV 记录优先级表示服务端对服务类型的偏好.
SRV 记录与 MX 记录指定优先级的概念相同, 是以优先级数字编号越小代表越优先(权重恰恰相反, 数字越大表示权重越高, 但在 SRV 里优先使用优先级, 如果优先级相同再使用权重判定).
通过设置优先级, 将希望优先被采用的传入服务器配置记录使其小于其他的服务记录实现服务端偏好设置.
优先使用 IMAP 而不是 POP3:1
_imap._tcp 3600 IN SRV 0 1 143 imap.example.com.
1
_pop3._tcp 3600 IN SRV 10 1 110 pop3.example.com.
通过将 SRV 记录中的目标服务器值设置为 .
来表示该域完全不支持此服务. 如果存在这种记录值, 则电子邮件客户端应该认为这种服务器不可用, 并继续使用 SRV 记录进行确定.
比如, 通过以下的记录值1
_imap._tcp 3600 IN SRV 0 0 0 .
1
_imaps._tcp 3600 IN SRV 0 1 993 imap.example.com.
1
_pop3._tcp 3600 IN SRV 0 0 0 .
1
_pop3s._tcp 3600 IN SRV 10 1 995 pop3.example.com.
上面的记录值指定本域中存在使用 TLS 和不使用 TLS 的 IMAP 服务和 POP3 服务(带 s 和不带 s), 但是不使用 TLS 的 IMAP 和 POP3 服务不可用. 且使用 IMAPs 服务的优先级高于使用 POP3s, 因为 IMAPs 的优先级 0 要比 POP3s 的优先级 10 要小.
配置验证
使用 dig 作为 DNS 客户端即可验证 SRV 记录, 具体方法参见 Autodiscover 章节中的「后备 SRV」验证小节.