由于工作需要,需要改写用户邮件header头地址与邮件路由地址。整理笔录
改写邮件地址是postfix的核心,在收到邮件后就会进行相应地址修改,地址补充等工作,其流程如下:以下来自postfix官网说明
Postfix address rewriting overview
 
 

trivial-
rewrite(8)

(std form)

 

trivial-
rewrite(8)

(resolve)

 

^
|

|
v

 

^
|

|
v

 

smtpd(8)

>-

cleanup(8)

->

incoming

->

active

->

qmgr(8)

-<

smtp(8)

qmqpd(8)

lmtp(8)

pickup(8)

local(8)

 

^
|

 

^
|

|
v

 
 

bounces
forwarding
notices

 

deferred

     
由于工作只需要修改邮件header地址,着重只测试了canonical_maps,smtp_generic_maps,header_checke部分修改邮件头地址的方法
1.用header_checker检查头文件,用正则匹配替换发件人地址From
如将user01@test.com发件地址替换成user01@ct.com
Vim main.cf
添加如下开启头检查,使用的是pcre方式。
header_checks = pcre:/etc/postfix/my_header_checks
建立my_header_checks文件
/^From:(.*)[<]([\w\.\-]+)\@test\.com[>]/i     REPLACEFrom:$1<$2@ct.com>
记得每次修改完my_header_checks文件要重新加载postfix否则出现正则是对的,而匹配出的地址格式显示是错误的
Service postfix reload
以上方法只配置了From:部分,而To:部分如何写正则,真的不好写。
 
2.第二种方法则是postfix的smtp_generic_maps参数设置。类似于sendmail的地址伪装功能,可以将本地网域的邮件地址改写成internet上合法的邮件域名地址。smtp_generic_maps
只作用于外发的需要SMTP的邮件,本地域的内邮件收发,地址是不会修改的。smtp_generic_maps
如将user01@domain.local转换改写成user01@domain.com邮件网关网域地址
文件设置如下
配置postfix添加
Vim main.cf
smtp_generic_maps = hash:/etc/postfix/my_generic_maps
vim my_generic_maps
user01@domain.localuser01@domain.com
@localdomain.local@hisisp.example
建立文件后需要postmap生产hash数据文件
postmap /etc/postfix/my_generic_maps
service postfix reload
该参数会修改掉邮件header的路由、From:、To:相关邮件地址信息
它作用范围,只会修改掉需要发送出去到别台邮件服务器的邮件地址相关信息,local邮件不影响。
3.还可以使用邮件地址规范改写参数canonical_maps实现邮件地址改写:
Canonical_maps的作用区域local与smtp所有邮件,可以用来规范邮件地址,
Firstname.Lastname 风格的地址以及清除无效的域。
缺省postfix是不进行规范地址改写的,你可以通过指定canonical_maps参数的值来使其生效。如:
  canonical_maps = hash:/etc/postfix/canonical 
Vim canonical
wyjos@test.comjos.wang@test.com
@testmail.com@test.com
地址改写可以基于单个邮件地址,也可以基于整个域设定。
也可以分别为收件人和发件人地址分别指定不同的改写规范,这时参数sender_canonical_maps和recipient_canonical_maps的优先级比canonical_maps高。如:
sender_canonical_maps = hash:/etc/postfix/sender_canonical 
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
注意:基于以上测试时我发现,用webmail发送的邮件,对方收到的邮件显示地址为改写后的地址(改写成功),但我用OUTLOOK2007发送的邮件对方收到的邮件显示地址并没有被改写。查看header头文件路由Delivered-To:路由信息已被修改但是From:与To:部分的地址没有被改。,
查阅postfix 官网有提到如下注意,而网上与postfix指南都没有这个说明,导致这个问题折腾了我很久。
NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify "local_header_rewrite_clients = static:all".
邮件地址改写作用范围是受local_header_rewrite_clients 设定控制的。默认只是改写
local_header_rewrite_clients (default: permit_inet_interfaces)
permit_inet_interfaces只作用于
Append the domain name in $myorigin or $mydomain when the client IP address matches $inet_interfaces. This is enabled by default.
我们可以自定义可以邮件地址改写的作用范围:

local_header_rewrite_clients = permit_mynetworks,

permit_sasl_authenticated permit_tls_clientcerts

check_address_map hash:/etc/postfix/pop-before-smtp

我想任何符合canonical表的邮件无论谁发送的都改写,只需在main.cf添加上,就可以了。
local_header_rewrite_clients = static:all

转载于:https://blog.51cto.com/itdept/1104223

Postfix邮件地址改写(header)相关推荐

  1. postfix邮件队列管理

    最近管理邮件系统时发现几个问题,一个是有些用户设置了转发,但是转发地址有问题,经常因为退信而塞爆 邮箱(有邮箱限额),之后的邮件都会被塞到等待队列里.还有就是有许多寄到本地虚拟域的信没有对应的用户,按 ...

  2. postfix邮件服务器搭建02-安装篇

    本文接着上文的环境,进行postfix邮件发信端和dovecot邮件收信端的部署,之后部署基于浏览器的extmail图形管理端,使管理员可以通过网页对邮件虚拟用户进行管理,对邮件服务器进行管控 1.p ...

  3. sybase的sysprocesses中的hostname显示不全_Linux中Postfix邮件认证配置(五)

    Postfix+Dovecot+Sasl工作原理 1.A用户使用MUA客户端借助smtp协议登陆smtpd服务器,需要先进行用户和密码认证,而SMTPD服务器端支持sasl认证,例如有一个sasl客户 ...

  4. php 使用postfix发邮件,PHP处理postfix邮件内容的方法

    本文实例讲述了PHP处理postfix邮件内容的方法.分享给大家供大家参考.具体如下: //从输入读取到所有的邮件内容 $email = ""; $fd = fopen(" ...

  5. postfix邮件服务器

                               postfix邮件服务器 1.首先查看是否有安装sendmail服务,如果有就停止服务或者删除该软件 service sendmail stop ...

  6. 烂泥:Postfix邮件服务器搭建之软件安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件,分别是cyrus-sasl.postf ...

  7. centos 6.4 postfix mysql_CentOS 6.4下Postfix邮件服务安装和基本配置

    三.基于Postfix构建简单电子邮件 1.配置并测试Postfix服务器 1>.编辑main.cf文件,调整Postfix的基本运行参数 [root@mail~]# vi /etc/postf ...

  8. Linux搭建Postfix邮件服务器

    第一章:实验环境和目标 1.实验环境 Vm虚拟机安装CentOs7系统 CentOs7的IP地址:192.168.81.133 Win7客户端(测试用),有Xshell或者SecureCRT工具 2. ...

  9. Linux中搭建 Postfix 邮件服务器

    搭建背景:公司决定搭建邮件服务器,实现内部和外部交流的电子化,因为Linux系统稳定.安全性较好,该公司决定在Linux系统中搭建postfix邮件服务器,邮件服务器mail.pengqi.com能够 ...

最新文章

  1. java中batch基础_详解Spring batch 入门学习教程(附源码)
  2. mac系统装mysql还是mariadb_Mac上安装mariadb
  3. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
  4. 12-1 12 防盗链 访问控制 php解析 代理
  5. python外星人入侵怎么发给别人_python_外星人入侵(1-1)
  6. 近似求PI (15 分)
  7. DB2对年份的处理Year()
  8. C#基础精华05(正则表达式,)
  9. 【SpringBoot系列】最详细demo--集成JWT实现接口权限认证
  10. 爬虫 --- 08. 全站爬取(CrawlSpider), 分布式, 增量式爬虫
  11. html表格中加入斜线,使用css给table表格表头添加斜线(斜线表格)
  12. 160亿数据点图表控件LightningChart振动分析可以检测什么?
  13. ospf多区域原理和配置
  14. SQL语句练习——查询
  15. Lucas定理相关证明
  16. Java以逗号分割字符串
  17. 车载以太网 - SomeIP - 详细解析 - 02
  18. OpenCalib:自动驾驶多传感器开源标定工具箱
  19. 苹果开发者证书提示编辑电话号码
  20. matlab画条纹填充(Hatched Fill)图 填坑 applyhatch hardcopy

热门文章

  1. About LOCAL_PRIVATE_PLATFORM_APIS in Android.mk
  2. 在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?
  3. loadrunner11使用常见问题(不断整理中)
  4. nginx应用总结(2)--突破高并发的性能优化
  5. 2659: [Beijing wc2012]算不出的算式
  6. wds和dhcp分开做需要注意问题
  7. 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解
  8. 揪出“凶手”——实战WinDbg分析电脑蓝屏原因
  9. Net设计模式之简单工厂模式(Simple Factory Pattern)
  10. Intel芯片组命名规则