wd and cc

— Happy every day

sendmail 中自动抄送某个用户的邮件给别人

Posted at — Jun 26, 2007

sendmail有个 /etc/aliases 配置文件,在里面可以给某个帐号设置alias,这样给这个alias发的邮件,都会给设置好的用户转发过去。要知道sendmail的帐号是和系统帐号联系在一起的,添加mail帐号得给系统添加帐号(qmail可以实现虚拟用户,或许sendmail也可以,而我不知道罢了)。而这个alias帐号却不是必须有得有系统帐号的,只要设置了alias,就可以给alias用户发邮件,就好像系统真有这么一个帐号一样。

关于 /etc/aliases 文件,这里有个文章有说明。下面复制几个例子。

# RFC 822 规定每个域名都需要有一个 "postmaster" 
postmaster : root
# 将 postmaster 的邮件都转发给 root 帐号,当然你下面还可以将root帐号的邮件在转发给别人。
# 转发也可以转发到文件
# 比如这个,都说了nobody了还给发邮件,邮件都丢掉
nobody : /dev/null
# 也可以通过管道作为另一个程序的输入
# 比如给procmail,它能实现的功能可就多了,比如可以根据邮件大小转发到不同的用户,或者调用spamassian、clamav来查垃圾邮件和病毒等
# 一个自动的bug跟踪程序
program-bugs: |/usr/local/bin/program-bug-tracker
# 也可以转发到多个帐号,用逗号分隔就可以
project-list: [email protected],[email protected],[email protected]

可以看到功能还是很强悍的,尤其是可以 pipe 到程序,procmail、maildrop都是很不错的过滤程序,能实现很多其他的功能。


标题的要求是“抄送”某个帐号的邮件给别的用户,有点类似监控的意思。怎么实现呢?可能第一个想到的就是类似下面这种方法:


somebody:other1,other2,somebody

这样是不是就能实现抄送呢?这样会造成死循环,呵呵。


看样子似乎只能通过pipe到程序实现了,看procmail、maildrop的文档还不够头疼的。其实还有个简单的方法,就是 .forward 文件。


.forward 文件位于用户的 home 下面,权限是 600 。他的功能和 /etc/aliases 文件类似,不过是 aliases 文件只能由root用户来修改,而 .forward 文件用户自己就可以修改。除了上面aliases能做到的事情外,他还多了一个功能,就是标题要求的功能。


按照标题的要求,只需要在 somebody 用户的 .forward 文件中放入下面的内容就可以了。


\\somebody
other1
other2

要注意 somebody 前面的那个\,就是用来防止转发死循环的。加了\之后,给somebody转发的时候会忽略该用户的 .forward 文件。


comments powered by Disqus