公司使用的是extmail +postfix+….开源邮件系统,已经有几个年头了,近期需要更改公司电子邮件的域名如user01@testgroup.com更改为user01@test.com以显示公司形象。

如果你的邮件用户只有十几个,那就直接新建一新域,将旧用户相关数据导入到新域,

再做新旧邮箱数据同步,修改用户客户端设置就可以了。开初我是这样做的,但现在由于有上千个邮箱,用户众多地域分散。为了避免大动干戈去修改每台电脑客户端的邮箱配置设定,需要改善这个邮件域名迁移方案。

         我想到的方法是客户端用户配置不动,在邮件发送出去的时候修改邮件路由与header头地址信息,像邮件地址改写一样。

方案一、如果公司只对外发的邮件使用新的域名,而公司内部员工之间收发的邮件域名不变。那么可以如下实现。

 

可以在邮件网关将外发的邮件地址修改掉,postfix 有提供一个出俴邮件地址改写参数,类似于sendmail的邮件地址伪装一样,它只作用outgoing SMTP mail邮件,对local mail不会改写。我们只需在Mail Gateway配置如下:

 

 
  
  1. Vim main.cf   
  2. smtp_generic_maps = hash:/etc/postfix/my_generic_maps  
  3.  
  4. vim my_generic_maps  
  5. @testgroup.com  @test.com  
  6.  
  7. postmap  /etc/postfix/my_generic_maps  
  8. Service postfix reload  

这样只要经过邮件网关发送出去的邮件,只要是@testgroup.com域后缀的地址,无论是senderrerecipient地址都会被改写为test.com域。对方就只会收到与显示新域名的邮件地址了,内部邮件用户则不会受影响。

         至此还没完,当对方回复邮件时则是回到我们新域名的地址,如何将邮件收下呢,那么我将需要用到域别名,设置@test.com@testgroup.com的域别名,这样外面客户发到user01@test.com 域的邮件就会发送user01@testgroup.com上了,设置如下:

我用的是Extman后台,那么可以如下设置

先在Extman 后台添加一个虚拟域test.com,再选择“Add Alias”,输入@,并在后面选择test.com在下面的别名框中输入@testgroup.com,点击“Save Change”即可。

 

方案二、如果公司对外发的邮件与内部员工之间收发的邮件域都使用新的域名地址,那么可以如下实现。

可以使用postfix 的规范地址改写,canonical_maps改写掉用户发送出去的邮件地址(包括邮件网关发出去的邮件与内部域邮件),

设置如下

 
  
  1. Vim main.cf  
  2. local_header_rewrite_clients = static:all  
  3. canonical_maps = hash:/etc/postfix/canonical
  4.    
  5. Vim canonical  
  6. @testmail.com   @test.com
  7.  
  8. postfix /etc/postfix/canonical
  9. service postfix reload  

2、如方案一一样设置域别名。