重写地址的过程通过从地址中提取第一个主机或域说明开始。(建议不熟悉 RFC 822 地址约定的读者阅读该标准以便理解以下讨论内容。)地址中主机/域说明的扫描顺序如下:
源路由中的主机(从左向右读取)
主机显示在 "at" 符号 (@) 的右侧
主机显示在最后单个百分比符号 (%) 的右侧
主机显示在第一个感叹号 (!) 的)
如果 bangoverpercent 关键字在正进行地址重写的通道上有效(即,如果尝试将邮件加入队列的通道自身被标上 bangoverpercent 通道关键字),则最后两个项目的顺序将被切换。
表 11–3 中显示了可以首先提取的一些地址和主机名的示例。
表 11–3 提取的地址和主机名
地址 |
第一个主机域说明 |
注释 |
---|---|---|
user@a |
a |
“简短格式”域名。 |
user@a.b.c |
a.b.c | |
user@[0.1.2.3] |
[0.1.2.3] |
“域文字” |
@a:user@b.c.d |
a | |
@a.b.c:user@d.e.f |
a.b.c |
源路由的地址;路由部分被完全限定。 |
@[0.1.2.3]:user@d.e.f |
[0.1.2.3] |
源路由的地址;路由部分是域文字。 |
@a,@b,@c:user@d.e.f |
a |
带有 a 到 b 到 c 路由的源路由的地址。 |
@a,@[0.1.2.3]:user@b |
a |
在路由部分中带有域文字的源路由的地址。 |
user%A@B |
B | |
user%A |
A | |
user%A%B |
B | |
user%%A%B |
B | |
A!user |
A |
“Bang 样式”寻址;通常用于 UUCP。 |
A!user@B |
B | |
A!user%B@C |
C | |
A!user%B |
B | |
A!user%B |
A |
RFC 822 不对地址中的感叹号 (!) 和百分比符号 (%) 进行解释。如果没有 at 符号 (@),百分比符号通常与 at 符号的解释方法相同,因此 Messaging Server MTA 采用了该约定。
重复的百分比符号有一种特殊的解释,用于允许将百分比符号作为本地用户名的一部分;这在处理某些外部邮件系统地址时可能会十分有用。感叹号的解释符合 RFC 976 的“bang 样式”地址约定,因此可以在 Messaging Server MTA 中使用 UUCP 地址。
RFC 822 或 RFC 976 都没有指定这些解释的顺序,因此可以使用 bangoverpercent 和 nobangoverpercent 关键字来控制执行重写的通道应用这些解释的顺序。尽管在某些情况下其他设置可能会很有用,但默认值更“标准”一些。
不建议在地址中使用感叹号 (!) 或百分比符号 (%)。