在一个运行了Sendmail的系统上,你可以自动的把你的邮件转寄给另一个e-mail地址。如果你需要把你的邮件转到另一个账号、使用一个不经常使用的账号、或者希望把你的所有消息在两个不同收件箱中保留备份的话,这是很有用的。
如果Sendmail收到一个本地用户的消息,它首先检查home目录,看是否有一个叫做.forward的文件存在。如果存在,这条消息就根据.forward里制定的规则被转发。否则,消息就被传送到用户的本地收件箱。
文件.forward的名字需要引起一定的注意。以一个点开头的的文件名在Linux里被处理为隐藏文件。在你察看一个目录的文件列表时,该目录中的隐藏文件一般是不被显示的。要想看到这些文件,你必须使用带有-a选项的ls命令。例如,用命令ls –a <enter>列出一个包括所有隐藏文件的短目录文件列表(段目录文件列表只显示文件和目录名)。类似的,用ls –al <enter>命令列出包括所有隐藏文件的详细目录文件列表(详细文件列表包括日期、所有者和所有文件的大小)。
在最简单的形式下,.forward文件可以只有一行;这一行的内容应该是目的方的e-mail地址。例如,如果在主机some.where.com上的用户user1希望他们的所有邮件都转寄给E-mail地址user2@some.where.else.com,这个用户可以在他们的home目录里创建一个.forward文件,包含下面一行内容:
user2@some.where.else.com
Sendmail就会自动的把user1@some.where.com收到的所有邮件转发给user2@some.where.else.com。尽管这里存在一些问题。
主要问题就是在原来的user1的收件箱里没有保留消息的任何备份。消息被转发了出去,唯一存在的拷贝就是在some.where.else.com上的user2的收件箱里。幸运的是,Sendmail的.forward机制提供了一个也在本地用户的收件箱里保留复本的转发邮件的方法。要做到这个,需要在.forward文件的开始增加另外一行:
“/user1”
user2@some.where.else.com
第一行告诉Sendmail把消息转发给本地用户user1,这就意味着消息将被保存在最初的目的方user1@some.where.com的收件箱里。和前面的例子一样,第二行告诉Sendmail把邮件的一个拷贝转发给user2@some.where.else.com。
这个例子突出了一个重点:可以把邮件转发给几个e-mail地址。例如,如果你在休假,希望在你离开期间把你的邮件分发给三个同事处理,你可以把这三个同事的e-mail地址全部包含在你的.forward文件里:
colleaque1@some.where.com
colleaque2@some.where.com
colleaque3@some.where.com
这将把你收到的所有邮件转发给.forward中的三个e-mail地址。同样的,你也可以把邮件转发个多个地址而在原来的目的方(本地)收件箱里保留副本:
“/user1”
colleaque1@some.where.com
colleaque2@some.where.com
colleaque3@some.where.com