postfix-mta:SPF的Milter?

时间:2016-04-20 22:22:04

标签: postfix-mta spf smtpd

是否可以在postfix下使用milter来实现SPF?

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

根据postfix文档,milter在消息处理链中出现:

网络=> postfix smptd process => MILTER => postfix smtpd process =>等

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

SPF需要发件人的IP,因此似乎无法在后缀milter中执行正确的SPF验证。

这似乎正是我在我的postfix服务器中安装测试milter时发生的事情。

我对此是否正确,或者是否有人能够通过后缀milter实现SPF?

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

Postfix before-queue Milter support

  

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

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

答案 1 :(得分:0)

行。我现在更好地理解这个问题。显然,我使用的milter实现没有正确设置{client_addr}。我将假设我的问题是我使用的基础milter实现(最新版本的pymilter)。

此外,我发现我可以解决此问题,如下所示:postfix将客户端的主机名和IP地址放入最顶层的"已接收"在将消息发送给milter之前设置的标题。因此我可以先解析这个"收到"在milter中的标题,以获取SPF所需的客户端地址。