我需要允许某些域进入我的 postfix 邮件服务器。据我所知,这可以通过使用正则表达式 (regexp)在 Postfix 中。我还知道 Postfix 使用一些属性来“解析“邮件。其中之一是”检查发送者访问“。这个用于应用正则表达式并过滤/控制邮件是否拒绝或者允许。问题是我想知道“check_sender_access”从纯文本邮件中捕获了什么。我想知道,如果“check_sender_access”表现为变量,那么在分析邮件时它里面有什么。
例如,这是一封邮件的标题(纯文本):
Return-Path: [email protected]
Received: from ms3.domain.com (LHLO ms3.domain.com) (10.4.1.4) by
ms3.domain.com with LMTP; Thu, 2 Mar 2017 03:00:08 -0500 (CST)
Received: from localhost (localhost.localdomain [127.0.0.1])
by ms3.domain.com (Postfix) with ESMTP id E8E8F17CED60
for <[email protected]>; Thu, 2 Mar 2017 03:00:04 -0500 (CST)
X-Spam-Flag: YES
X-Spam-Score: 7.017
X-Spam-Level: *******
使用这个纯文本,我想知道上面哪部分文本是检查发送者访问. 即使有可能做出一些echo check_sender_access > dumpfile。 据我所知 ”主配置文件“(postfix 的配置文件)不允许批处理命令(echo、grep、for、if、...)。如果是这样,请告诉我如何做。
总结一下,我想调试/跟踪通过了解每次属性(例如 check_sender_access)获得的值(如果可能的话,以纯文本形式)来了解该过程。
原因:我使用正则表达式允许特定域,但始终不起作用。但是,使用命令:postmap -q "domain.com" regexp:/etc/postfix/regexp/checkDomain
这将根据正则表达式返回一个决定检查域名文件。这意味着正则表达式正在使用“domain.net”字符串作为测试,例如“gmail.com”已正确验证。
我认为错误可能是: 1- 在 postfix 到达该行之前,邮件被拒绝检查发送者访问部分已检查。2- 正则表达式正在验证意外的行(整个标题而不是单个“gmail.com”或 IP 地址)。
免费软件可以高度可定制,但对于某些事情来说,它也过于原始。例如,我无法将“check_sender_access”创建(路由)视为属性或函数。
这是检查发送者访问 。感谢您的光临,如果需要更多信息请告诉我。
答案1
通过 SMTP 发送电子邮件时,发件人首先发出命令MAIL FROM: address
。address
此处应该是发件人的电子邮件地址,是check_sender_access
引用和匹配的内容。当邮件发送给您时,您的服务器会获取此信息address
并将其放置在电子邮件的顶部,并成为标题Return-Path
。
因此,在您的示例电子邮件中,正在检查的地址check_sender_access
是[电子邮件保护]
请记住,这很容易伪造。