使用Postfix代理邮件到不同的SMTP服务器


11

如何根据“收件人”地址将邮件转发(或代理)到不同的smtp服务器?

我有一台装有SMTP(后缀)服务器的机器在端口25上侦听。我想使用Lamson(http://lamsonproject.org/)处理一些传入邮件和一些我想用后缀处理的邮件。

我的想法是将Lamson设置为侦听其他端口,例如localhost:10025。然后,我设置postfix通过侦听端口25来捕获所有邮件。

如何配置Postfix在10025年将某些邮件代理到Lamson并处理所有其他邮件本身?

Answers:


18

Postfix的配置极其灵活(因此非常复杂),因此有多种方法可以实现。最简单的方法可能是使用transport(5)表。

首先,在后缀中启用传输表的使用:

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

您还必须确保Postfix接受将由Lamson处理的地址的邮件。查看permit_auth_destinationPostfix将用于确定有效收件人地址的规则。对于以下示例,假设“ example.com”是Postfix未知的域,则将其简单地添加为中继域可能是最简单的:

/etc/postfix/main.cf:
    relay_domains = example.com

然后,创建一个适当的表。例如,将域“ example.com”的所有邮件以及“ user@mydomain.org”的邮件重定向到侦听端口10025的本地Lamson:

/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    user@mydomain.org    smtp:127.0.0.1:10025

之后(然后在每次对传输表文件进行更新后一次)不要忘记运行:

$ postmap /etc/postfix/transport

这应该可以帮助您。请务必阅读transport(5)手册页,它将为您提供有关如何使用此强大功能的更多想法。


嗨,谢谢你的提示。按照您的说明进行邮件转发时,我仍然遇到问题。我收到了NOQUEUE:拒绝:来自{my-mail-relay}的RCPT收件人地址被拒绝:本地收件人表中的用户未知。有任何想法吗?
Mattias

是的,您还必须确保Postfix接受要转发到example.com的邮件(因为Postfix现在充当Lamson的中继)。如果您的Postfix主要服务于另一个域,则实现此目的的最简单方法是在中添加“ Lamson域” relay_domains。我更新了答案以将其合并。
伯爵

1
谢谢,按照您的步骤进行操作后,我仍然遇到一些问题,无法使Postfix将localhost识别为有效主机。我运行了命令postconf -e'smtp_host_lookup = dns,native',这解决了我的问题,postfix现在将我想要的邮件转发给Lamson。
Mattias

1
很高兴听到它起作用。除了更改之外smtp_host_lookup,您还可以使用127.0.0.1代替localhost。我已经更新了答案以适应这种改进。
伯爵
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.