postfix 如何设置邮件头翻译的功能

开始按http://semi-legitimate.com/blog/item/how-to-rewrite-outgoing-address-in-postfix 博客中的方法进行设置,是可以替换,但是webmail上面可替换。

下面引用该博客的

Sometimes I find myself configuring an internal Linux machine to be able to send emails for alerts or from a particular application. Since this will not be a primary mail server, I just want to rewrite the outgoing address to be something that make sense with the proper domain for the users. Here are the quick steps to accomplish this:

vi /etc/postfix/main.cf

Modify the "mydomain" variable to your email domain

mydomain = example.com

Make sure to uncomment the proper network interface. I‘m usually lazy and just do all.

inet_interfaces = all

Now at the bottom of this file you need to specify the generic map file for rewriting the address.

smtp_generic_maps = hash:/etc/postfix/generic

Save and exit main.cf. Now we need to edit /etc/postfix/generic

vi /etc/postfix/generic

You need to specify the mapping of the original address to the one you want. Since in this case I just want to rewrite everything I usually add the following two lines and it seems to catch everything.

 [email protected]   no-[email protected]
 @example.com       no-[email protected]

Save and exit the file. Now we need to create the postfix db.

postmap /etc/postfix/generic

This will create the /etc/postfix/generic.db hash file.
Now just restart postfix and test.

/etc/init.d/postfix restart

EDIT: umm..so I was doing this on an old version of Red Hat/Postfix 2.0 and my own directions didn‘t work. (embarrassing...) Turns out you have to use a different file. Instead of using smtp_generic_maps, use sender_canonical_maps like so:

sender_canonical_maps = hash:/etc/postfix/canonical

Then /etc/postfix/canonical is setup just like the generic file example above. Use the

postmap /etc/postfix/canonical

Restart postfix and test.

再次google. 找到http://itdept.blog.51cto.com/1034307/1104223

在此很感谢itdept,因为你的此细而帮助了我。我自认写不到你那么仔细。

开始我也一样,准备开始使用正则。来达到目的。但是最后没有最后了。

1.用header_checker检查头文件,用正则匹配替换发件人地址From
如将[email protected]发件地址替换成[email protected]
Vim main.cf
添加如下开启头检查,使用的是pcre方式。
header_checks = pcre:/etc/postfix/my_header_checks
建立my_header_checks文件
/^From:(.*)[<]([\w\.\-]+)\@test\.com[>]/i     REPLACEFrom:$1<[email protected]>
记得每次修改完my_header_checks文件要重新加载postfix否则出现正则是对的,而匹配出的地址格式显示是错误的
Service postfix reload
以上方法只配置了From:部分,而To:部分如何写正则,真的不好写。

再次启程,使用smtp_generic_maps,这个我操作的时间最久,一直以为配置是正常的,但是就是不可以,最终只有使用 sender_canonical_maps = hash:/etc/postfix/canonical 才可以。看上面的博客可以看到,会有些版本有问题,需要使用 canonical 的文件。

EDIT: umm..so I was doing this on an old version of Red Hat/Postfix 2.0 and my own directions
didn‘t work. (embarrassing...) Turns out you have to use a different file. Instead of using smtp_generic_maps, use sender_canonical_maps like so:
2.第二种方法则是postfix的smtp_generic_maps参数设置。类似于sendmail的地址伪装功能,可以将本地网域的邮件地址改写成internet上合法的邮件域名地址。smtp_generic_maps
只作用于外发的需要SMTP的邮件,本地域的内邮件收发,地址是不会修改的。smtp_generic_maps
如将[email protected]转换改写成[email protected]邮件网关网域地址
文件设置如下
配置postfix添加
Vim main.cf
smtp_generic_maps = hash:/etc/postfix/my_generic_maps

vim my_generic_maps
[email protected]   [email protected]
@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


[email protected]     [email protected]


@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

看到itdept的测试,不得不说,哎,可惜没有早看到你的博客,我测试了许久,也看到了这个问题。最终在main.cf文件中添加

local_header_rewrite_clients = static:all

来处理了。

注意:基于以上测试时我发现,用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

最终简化的结果为:

邮件头翻译操作步骤

1./etc/postfix/main.cf 添加

smtp_generic_maps = hash:/etc/postfix/generic

sender_canonical_maps = hash:/etc/postfix/canonical

local_header_rewrite_clients = static:all

2.新建 /etc/postfix/generic 文件,建好复制一份为canonical内容格式如下

需要被替换的邮箱地址         目的邮箱地址

[email protected]   no-[email protected]

3.postmap   /etc/postfix/generic

4. postmap   /etc/postfix/canonical

5.最好重启下postfix的服务service umail_postfix restart
时间: 2024-10-02 09:10:20

postfix 如何设置邮件头翻译的功能的相关文章

postfix 设置邮件头翻译,本域邮件不进行邮件头翻译,仅发送至外网的进行邮件头翻译?

现在设置的 smtp_generic_maps = hash:/etc/postfix/generic sender_canonical_maps = hash:/etc/postfix/canonical remote_header_rewrite_domain = local_header_rewrite_clients = static:all 会将本地域发送至本地域的邮件也会被翻译?有没有设置过仅替换发送至外域的.

图文详解zabbix的安装以及设置邮件报警

简介:1.zabbix的介绍 2.zabbix的服务端安装 3.浏览器安装zabbix 4.zabbix的客户端安装 5.添加一个客户端 6.设置邮件报警 zabbix的介绍 zabbix(音同 zbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix由2部分构成,zabbix server与可选组件zabbix agent.

Postfix的bcc邮件备份

发送附件所受的限制有: 用户邮箱的总容量.例如:用户邮箱为 10M,你不可能给他发一个 11M 大的附件. PHP 里设置的可上传文件的大小.例如:PHP 里设置最大可上传文件为 10M,你不可能通过任何 PHP 的 Web 程序上传大于 10M 的文件,所以你不能上传超过 10M 的文件当附件. PHP 的配置文件是 /etc/php.ini,需要调整的参数主要有: upload_max_filesize post_max_size 适当增大它们的值,并重启 Apache 服务即可. (apa

zabbix系列(三):设置邮件报警,并测试监控80端口;

相关环境: 操作系统 描述 IP地址 server05 (centos6.6) 服务器端 192.168.10.65 server04 (centos6.6) 客户端 192.168.10.64 一.使用zabbix邮件报警功能 1.安装sendmail [[email protected]~]# service postfix stop   #linux默认使用postfix邮件服务,先关闭postfix,ss –tnl查看25端口关闭监听 [[email protected]~]#yum i

zabbix3 设置邮件报警

Zabbix邮件报警配置 一.安装sendmail或者postfix(安装一种即可) yum install sendmail #安装service sendmail start #启动chkconfig sendmail on #设置开机启动或者yum install postfixservice postfix startchkconfig postfix on 二.安装邮件发送工具mailx yum install mailx #安装 三.设置发送邮件的email,用于邮件发送 cat /

搭建 Postfix、Dovecot 邮件服务

搭建 Postfix.Dovecot 邮件服务 准备域名 任务时间:15min ~ 20min 域名注册 如果您还没有域名,可以在腾讯云上选购,过程可以参考下面的视频. 视频 - 在腾讯云上购买域名 域名解析 域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为: <您的 CVM IP 地址> 在腾讯云购买的域名,可以到控制台添加解析记录,过程可参考下面的视频: 视频 - 如何在腾讯云上解析域名 完成该实验共需要添加两条记录: A 记录 记录类型:A 主机记录:@ 记录值:&

解决mac pro中三指轻按翻译的功能不起作用

mac pro中三指轻按翻译的功能不起作用了,这是为什么呢? 快捷键如下: command+contral+d 原因是pro和air不一样,air默认是开着的,pro需要设置 系统偏好设置-> 触控板 -> 取消"用力点按和触觉反馈" -> 选中"查找与数据监测器"(可以看到有用三个手指轻按) 然后用3个手指轻按了,就会翻译了,而无需用control+command+d快捷键了

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码

HttpServletResponse  和 ServletResponse  都是接口 具体的类型对象是由Servlet容器传递过来 ServletResponse对象的功能分为以下四种: ?        设置响应头信息: ?        发送状态码: ?        设置响应正文: ?        重定向: 设置响应头信息 HttpServletResponse 中 (ServletResponse 中没有的) void setHeader(String var1, String v

【Zabbix】zabbix设置邮件报警

目录 Zabbix设置邮件报警 1.安装sendmail或postfix 2.安装邮件发送工具mailx . 3.配置mail 4. 测试邮件发送 5.编写邮件发送脚本sendmail.sh 6.设置sendmail.sh权限 7.测试sendmail脚本 8.zabbix web后台页面配置. Zabbix设置邮件报警 1.安装sendmail或postfix [root@localhost ~]# yum -y install sendmail [root@localhost ~]# yum