2016-04-20 55 views
0

是否可以在postfix下使用milter来实现SPF?postfix-mta:Milter for SPF?

在我看来,这是不可能的,因为postfix管理milters的方式。

根据做后缀文档,所述雄鱼放在这里在消息处理链:

网络=>后缀smptd所过程=> MILTER =>后缀smtpd的过程=>等

鉴于milter从postfix smtpd获取消息,milter会看到它的初始连接来自postfix的IP地址。这意味着milter不知道原始发件人的IP地址。

SPF需要发件人的IP,所以看起来好像不可能在postfix milter中执行正确的SPF验证。

这似乎正是当我安装一个测试米尔特到我的后缀服务器时发生的事情。

我纠正这个问题,还是有人能够通过postfix milter实现SPF?

在此先感谢。

回答

0

确定。我现在更了解这个问题。显然,我使用的milter实现不能正确设置{client_addr}。我会假设我的问题是我正在使用的基础milter实现(最新版本的pymilter)。

此外,我发现我可以解决这个问题,如下所示:postfix将客户端的主机名和IP地址放入发送消息给milter之前设置的最上面的“Received”标题。因此,我可以在milter中解析出第一个“Received”标题,以获取我需要的用于SPF的客户端地址。

0

Sendmail/Postfix在传入的SMTP会话期间执行由给定的提供者提供的回叫。 Postfix可能会根据回调的结果拒绝一些SMTP命令。

Postfix before-queue Milter support

后缀实现对Sendmail的版本8 MILTER(邮件过滤器)协议的支持。此协议由运行在MTA之外的应用程序用于检查SMTP事件(CONNECT,DISCONNECT),SMTP命令(HELO,MAIL FROM等)以及邮件内容(标题和正文)。 所有这些发生在邮件排队之前

https://en.wikipedia.org/wiki/Milter

+0

是的,这是发布我的原始查询之前阅读的Postfix Milter文档的全部内容。这个问题必须特别针对在postfix下运行的Miilter是否可以使用发件人的IP地址。 postfix提供给Milter的IP地址是后缀prequeue SMTPD进程的地址,它将消息传递给Milter,而不是原始发件人。正确的SPF处理需要原始发件人的IP地址。如果我可以将发件人的IP地址加入Milter,这将是Milter实施SPF的足够信息。 – HippoMan

+0

请参阅{client_addr} - > http://www.postfix.org/MILTER_README.html。它包含由MTA/postfix/sendmail提供的SMTP TCP连接远程端的IP地址。无论如何,基于Milter的SPF检查实现 - > http://www.openspf.org/Software – AnFi