用户可在其起始目录中创建一个 .forward 文件,以供 sendmail 以及其他程序用于重定向邮件或发送邮件。请参阅以下主题。
有关任务列表,请参阅第 13 章,邮件服务(任务)中的管理 .forward 文件(任务列表)。
以下列表介绍了可以避免或轻松解决问题的一些情况。
如果邮件未传送至预期的地址,请检查该用户的 .forward 文件。用户可能已将 .forward 文件放入了 host1 的起始目录,该文件会将邮件转发至 user@host2。邮件到达 host2 时,sendmail 会在 NIS 或 NIS+ 别名中检查 user 并将邮件发回至 user@host1。此路由将产生循环以及更多退回的邮件。
要避免安全问题,请勿将 .forward 文件放在 root 和 bin 帐户中。如有必要,请改用 aliases 文件转发邮件。
要使 .forward 文件成为邮件传送中的有效部分,请确保正确应用以下控制(主要是权限设置)。
.forward 文件必须只能由文件属主写入。此限制可以防止其他用户破坏安全性。
至起始目录的路径必须只能由 root 拥有和写入。例如,如果 .forward 文件位于 /export/home/terry 中,则 /export 和 /export/home 必须只能由 root 拥有和写入。
实际起始目录应只能由用户写入。
.forward 文件不能是符号链接,并且此文件不能包含多个硬链接。
可以创建一个 .forward.hostname 文件,以重定向发送至特定主机的邮件。例如,如果用户的别名已从 sandy@phoenix.example.com 更改为 sandy@example.com,请在 sandy 的起始目录中放入一个 .forward.phoenix 文件。
% cat .forward.phoenix sandy@example.com "|/usr/bin/vacation sandy" % cat .vacation.msg From: sandy@example.com (via the vacation program) Subject: my alias has changed My alias has changed to sandy@example.com. Please use this alias in the future. The mail that I just received from you has been forwarded to my new address. Sandy |
在本示例中,在通知发件人发生别名更改后,可将邮件转发至正确地址。由于 vacation 程序仅允许一个邮件文件,因此每次仅能转发一封邮件。但是,如果邮件不是特定于主机,则 .forward 文件可将一个休假邮件文件用于多台主机。
对转发机制的另一种扩展是 .forward+ detail 文件。detail 字符串可以是除运算符字符之外的任意字符序列。运算符字符包括 .:%&!^[]+。通过使用此类型的文件,可以确定是否有其他人在您不知情的情况下使用您的电子邮件地址。例如,如果某个用户告诉其他人使用电子邮件地址 sandy+test1@example.com,该用户将能够识别将来传送给此别名的任何邮件。缺省情况下,将根据别名和 .forward+detail 文件对发送至 sandy+test1@example.com 别名的所有邮件进行检查。如果未找到任何匹配项,邮件将转而传送至 sandy@example.com,但用户可以看到 To: 邮件头中的更改。