如何通过Linux主机上的Sendmail服务实现Outlook外发邮件的归档(含自动添加BCC归档邮箱需求)
如何通过Linux主机上的Sendmail服务实现Outlook外发邮件的归档(含自动添加BCC归档邮箱需求)
我完全懂你的需求——就是想让Linux上的Sendmail自动给所有从Outlook发出去的邮件,悄悄加个BCC到指定的归档邮箱,把所有外发邮件都存一份对吧?你提到的copymail.m4正是干这个的好工具,下面给你一步步讲明白怎么操作:
一、先搞定Sendmail的宏配置(核心步骤)
Sendmail的配置是靠m4宏文件生成的,咱们要修改sendmail.mc来启用自动BCC归档:
- 打开Sendmail的配置目录(一般是
/etc/mail),编辑sendmail.mc文件:vi /etc/mail/sendmail.mc - 在文件里加入这两行(记得替换成你的归档邮箱):
注:dnl 定义要用来归档的邮箱地址 define(`COPYMAIL_TO', `archive@your-domain.com')dnl dnl 启用copymail宏,自动给外发邮件加BCC include(`copymail.m4')dnldnl是m4的注释符号,不会影响配置生效,主要是方便你看懂每行的作用。
二、如果系统没有copymail.m4,自己创建一个
有些系统可能默认不带这个宏文件,没关系,咱自己建一个放在/etc/mail目录下,内容如下:
dnl 规则1:匹配发给本地域的邮件,添加BCC到归档邮箱 LOCAL_RULE_3 R$* < @ $=w . > $* $#esmtp $@ $1 < @ $2 . > $3 $: $1 < @ $2 . > $3 $| COPYMAIL_TO dnl 规则2:匹配发给外部域的邮件,同样添加BCC R$* < @ $* . > $* $#esmtp $@ $1 < @ $2 . > $3 $: $1 < @ $2 . > $3 $| COPYMAIL_TO
这两个规则的意思是:不管你是发邮件给本地域还是外部域,Sendmail都会自动把归档邮箱加到BCC列表里。
三、重新生成配置文件并重启Sendmail
配置改完了,得让Sendmail识别新设置:
- 用m4生成新的
sendmail.cf配置文件:m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf - 重启Sendmail服务:
# 如果你用的是systemd系统(比如CentOS7+/Ubuntu16.04+) systemctl restart sendmail # 老系统用service命令 service sendmail restart
四、测试验证
从Outlook发一封测试邮件给任意邮箱,然后去你的归档邮箱看看,应该能收到这封邮件的BCC副本。要是想确认日志,可以查看Sendmail的邮件日志:
tail -f /var/log/maillog
日志里会显示邮件处理时添加了BCC的记录。
额外小技巧:排除特定邮箱不归档
要是你不想让某些邮箱(比如管理员邮箱)的邮件被归档,可以在sendmail.mc里加个例外规则,比如排除admin@your-domain.com:
LOCAL_RULE_3 dnl 先匹配要排除的邮箱,直接转发不添加BCC Radmin@your-domain.com < @ $=w . > $* $#esmtp $@ $1 < @ $2 . > $3 dnl 再处理其他邮件的归档规则 R$* < @ $=w . > $* $#esmtp $@ $1 < @ $2 . > $3 $: $1 < @ $2 . > $3 $| COPYMAIL_TO R$* < @ $* . > $* $#esmtp $@ $1 < @ $2 . > $3 $: $1 < @ $2 . > $3 $| COPYMAIL_TO
备注:内容来源于stack exchange,提问作者Natasha
相关产品推荐
相关产品推荐

