首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >后缀:根据收件人修改发件人地址

后缀:根据收件人修改发件人地址
EN

Server Fault用户
提问于 2012-12-13 21:30:36
回答 1查看 2.1K关注 0票数 2

我们有一个后缀服务器,它接收来自应用服务器的邮件。发件人采用user@host.fqdn格式( host.fqdn可以根据源服务器的不同而有所不同),收件人可以是内部用户,也可以是外部用户。

发送给外部用户的消息应该将发件人更改为user@domain.com。我尝试过使用规范映射,但是由于这是由清理守护进程处理的,所以在做出任何传输决定之前,它将影响所有发件人地址。

我还尝试创建具有泛型映射的自定义smtp传输,并配置transport_maps以将该自定义smtp传输用于外部域。但是,泛型映射会同时影响发件人和收件人地址。

最后,我尝试了以下几点:

  • 创建一个自定义smtpd守护进程,它指定发送方规范映射和唯一传输表。
  • 将所有外部地址的邮件发送到该自定义守护进程。理想情况下,发送方规范映射将转换发送方地址,并且唯一的传输表将消息转发到互联网。

但是,很明显,每个后缀实例只能使用一个传输表。

为了适应这种重写,我希望避免创建一个全新的Postfix实例。有什么建议吗?(并预先感谢)

EN

回答 1

Server Fault用户

发布于 2014-12-27 08:56:46

免责声明:当进程电子邮件中包含多个内部和外部域的收件人时,此答案将无法正常工作。

使用后缀多实例,解决方案将是微不足道的。只需将transport_maps设置为第二个实例,然后在第二个实例中进行重写。

如果没有多个实例,则需要两个smptd进程、两个清理进程和存取图.The思想,即在访问映射中进行过滤,而不是在transport_maps中进行过滤。当电子邮件有外部域收件人时,它会传输到第二个smtpd守护进程。然后,第二个smtpd守护进程将调用第二个清理守护进程。第一个清理守护进程将不具有规范的map参数,而在第二个清理守护进程中,我们将添加该参数来进行重写。

在main.cf中,在smtpd_*_restriction中定义check_recipient_access。例如:

代码语言:javascript
运行
复制
smtpd_recipient_restriction =
   ... 
   check_recipient_access hash:/etc/postfix/external-filter
   ... 

external-filter文件中定义过滤机制

代码语言:javascript
运行
复制
external.example.com    FILTER smtp:[127.0.0.1]:12525

在本例中,我们将在127.0.0.1端口12525中设置第二个smtpd守护进程侦听程序。

现在,在master.cf中设置第二个smtpd和清理守护进程。

代码语言:javascript
运行
复制
[127.0.0.1]:12525  ....  smtpd -o cleanup_service_name=cleanup_rewrite

cleanup_rewrite .... cleanup -o canonical_maps=hash:/etc/postfix/mysender_rewriting

文件mysender_rewriting将包含您想要的发送方映射。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/457934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档