[Postfix]:check_sender_access:如何捕获带有括号的信封 FROM?

[Postfix]:check_sender_access:如何捕获带有括号的信封 FROM?

总体的目标:

阻止发件人信封中包含“姓名”的特定电子邮件。示例:John <[email protected]>

现在的情况:

我已经成功配置了main.cf后缀利用。check_sender_accesssmtpd_recipient_restrictions

我已经创建了自己的sender_access文件,并在其上使用了 postmap,因此它生成了 sender_access.db,然后由 使用它main.cf

我的 sender_access 文件如下所示:

[email protected] REJECT
[email protected] REJECT

此配置确实有效按预期并在有人发送带有“清除”FROM 信封的入站电子邮件时拒绝电子邮件(例如:):FROM: [email protected]

在此处输入图片描述

此配置不起作用当发件人设置了出现在发件人信封中的“名称”时,拒绝电子邮件(例如:或):FROM: John <[email protected]>FROM: Support <[email protected]>

在此处输入图片描述

当“名称”与电子邮件地址相同时,配置“不会捕获”电子邮件地址(某些 MTA /邮件传输代理/中的某些默认行为):

在此处输入图片描述

我已尝试过:

我尝试了以下格式的 sender_access 文件:

[email protected] REJECT
John <[email protected]> REJECT
"John <[email protected]>" REJECT
John REJECT
<[email protected]> REJECT
"[email protected]" REJECT
john@ REJECT

这些方法实际上都没有用。唯一有效的方法是拒绝整个域:

example.com REJECT

我的问题:

我已经搜索了两天了,看了很多文章,最后决定在这里问一下。Postfix 是否支持以 FROM 格式阻止发件人?John <[email protected]>

我是否需要尝试一些正则表达式(有趣的是,我没有找到任何 - 人们会认为这是常识?)。

附言:也许有些东西总是“捕获”括号内粗体字样的电子邮件地址:

约翰<[电子邮件保护]>

谢谢你!

答案1

解决方案:

我通过使用正则表达式(regexp)检查解决了这个问题。


主配置文件

smtpd_recipient_restrictions = check_sender_access regexp:/etc/postfix/sender_access

发件人访问

# Exact match: [email protected]
/^john@example\.com$/ REJECT

# Advanced match: John <[email protected]>
/john@example\.com/ REJECT

笔记:请注意,如果您仅使用而不以该字符终止,那么它将匹配该位置的所有字符,换行符除外(例如:,,等等)/[email protected]/\.john@example$.comjohn@example!.com


测试

您可以sender_access使用以下命令测试您的 via:

postmap -q "John <[email protected]" regexp:sender_access

不要忘记使用以下命令来确保您的更改生效:

postmap sender_access
service postfix restart

补充笔记:

1.如果在 sender_access 文件中添加新规则,则仅执行一项postmap sender_access似乎就足够了。

2.有时,即使电子邮件在前端显示为来自,但实际上是从类似 的地址发送的。 尤其是当发件人使用诸如 Amazon SES 之类的服务时。John <[email protected]<[email protected]>

在这种情况下,您必须阻止实际域(示例sender_access:)/^john@example\.com$/ REJECT。您可以在 Postfix 日志中看到真实地址:

vim /var/log/mail.log

相关内容