postfix开启默认邮件地址(不存在邮件地址)转发
[| 2012/05/20 16:32]
从sendmail迁移到postfix,由于在服务器上有邮件转发服务,之前对于任意目标邮件地址都转发到固定账户,然后由一个分拣程序根据规则分发。sendmail在/etc/mail/sendmail.mc里添加:define(`LUSER_RELAY',`local:default_account')dnl,然后make -C /etc/mail重新编译一下即可。
对于postfix就复杂很多了,参数有本地alias,virtual alias等等很多概念,刚开始尝试virtual alias,用virtual_alias_maps指定对应的正则文件,同时需调用postmap编译一下正则文件成db。设置了几条正则,发现总是命中第一条,奇怪,后来在正则表达式都加了^和$进一步限定了一下才好,比较奇怪。但后来发现针对用户名做alias不可行,因为向外发出的邮件也会做alias,导致无法发邮件出去。
然后尝试alias_maps和alias_database,这两个参数的区别没看出来,看文档说是都是针对本地邮件的规则,默认都是/etc/aliases文件,但这个文件不支持正则,因为用的是:alias_maps = hash:/etc/aliases,尝试了一下alias_maps = regexp:/etc/postfix/aliases,发现会死循环。也比较恶心。当然,这个aliases文件也需要调用newaliases编译。
最后又回到使用virtual_alias_maps方式,因为找到了一个方法,原来可以对域设置默认值,这样只要在/etc/postfix/virtual设置:@domain.com default_account 就ok了。然后使用virtual_alias_maps = hash:/etc/postfix/virtual,重启postfix即可。
postfix功能强大,配置也复杂不少,文档不是很丰富。配置坑很多,有待研究。
对于postfix就复杂很多了,参数有本地alias,virtual alias等等很多概念,刚开始尝试virtual alias,用virtual_alias_maps指定对应的正则文件,同时需调用postmap编译一下正则文件成db。设置了几条正则,发现总是命中第一条,奇怪,后来在正则表达式都加了^和$进一步限定了一下才好,比较奇怪。但后来发现针对用户名做alias不可行,因为向外发出的邮件也会做alias,导致无法发邮件出去。
然后尝试alias_maps和alias_database,这两个参数的区别没看出来,看文档说是都是针对本地邮件的规则,默认都是/etc/aliases文件,但这个文件不支持正则,因为用的是:alias_maps = hash:/etc/aliases,尝试了一下alias_maps = regexp:/etc/postfix/aliases,发现会死循环。也比较恶心。当然,这个aliases文件也需要调用newaliases编译。
最后又回到使用virtual_alias_maps方式,因为找到了一个方法,原来可以对域设置默认值,这样只要在/etc/postfix/virtual设置:@domain.com default_account 就ok了。然后使用virtual_alias_maps = hash:/etc/postfix/virtual,重启postfix即可。
postfix功能强大,配置也复杂不少,文档不是很丰富。配置坑很多,有待研究。
lvinkim
2015/05/22 11:25
这么设置的话,存在的邮件地址也被发送到 default_account 去了,自己本身反而收不到邮件了。比如 abc@@domain.com 是不存在的,被转发到了 default_account 用户。再比如 support@domain.com 是存在的,也被转发到了 default_account 用户, support@domain.com 也就永远也收不到邮件了。
分页: 1/1 1