AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 828275
Accepted
Daywalker
Daywalker
Asked: 2017-01-25 05:50:57 +0800 CST2017-01-25 05:50:57 +0800 CST 2017-01-25 05:50:57 +0800 CST

Spamassasin 正则表达式正文和标题检查不起作用

  • 772

我们正在尝试使用 Spamassasin 中的简单规则将网络钓鱼邮件标记为垃圾邮件。但不幸的是,我们无法对其进行有效检查。

基本上,我们想要实现的是,如果邮件的发件人不是来自我们的域@example.org,而是使用伪造的显示名称进行写作。

这是一个例子:

From: "Firstname Lastname <[email protected]>" <[email protected]>

所以我们制定了以下 SA 规则,但它不起作用

header __FRAUD_HEADER From =~ /.*@(?!example\.org)/i 
body __FRAUD_BODY /".*\@example\.org.*"(?!.*\@example\.org.*$)/i 
meta COMPANY_FRAUD (__FRAUD_HEADER && __KFRAUD_BODY) 
describe COMPANY_FRAUD Fake Sender - Phishing Attempt 
score COMPANY_FRAUD 100

关于为什么这没有成功的任何想法?

regex101.com 告诉我们正则表达式是正确的。Spamassasin 也没有抱怨错误。

编辑:我想我弄错了他们如何伪造发件人。这是我认为他们如何伪造/伪装发件人地址的摘录

# telnet mail.example.org 25
Trying 10.20.30.40...
Connected to mail.example.org.
Escape character is '^]'.
220 mail.example.org ESMTP
EHLO a.mailserver.com
250-mail.example.org
250-PIPELINING
250-SIZE
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:[email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
TO: [email protected]
FROM: "Firstname Lastname" [email protected]
SUBJECT: Something
Spam/Phishing message text goes here
.
250 2.0.0 Ok: queued as 123456789
quit
221 2.0.0 Bye
Connection closed by foreign host.

建议的解决方案奏效了!

email spamassassin phishing
  • 1 1 个回答
  • 1820 Views

1 个回答

  • Voted
  1. Best Answer
    Adam Katz
    2017-08-30T11:42:34+08:002017-08-30T11:42:34+08:00

    你原来的规则:

    header __FRAUD_HEADER From =~ /.*@(?!example\.org)/i 
    body __FRAUD_BODY /".*\@example\.org.*"(?!.*\@example\.org.*$)/i 
    meta COMPANY_FRAUD (__FRAUD_HEADER && __KFRAUD_BODY) 
    describe COMPANY_FRAUD Fake Sender - Phishing Attempt 
    score COMPANY_FRAUD 100
    

    一些批评:

    • 我看到一个错字:您的元规则取决于__KFRAUD_BODY而不是__FRAUD_BODY
    • 那些真的很贵。尽量不要使用环视,除非你必须
    • 我建议以你自己的名字命名你的规则,这样你就可以记住它们是你的
    • 你真的想要正文正则表达式中的那些双引号吗?这可能是问题
    • 那真的应该是一个身体正则表达式吗?您是否尝试匹配内联转发元数据?
    • 鉴于您的阈值应在 5-10 之间,因此 100 分是危险的高分

    怎么样:

    header __DW_NONFRAUD_HEADER  From:addr =~ /\bexample\.org$/i 
    body   __DW_FRAUD_BODY       /"[^"]{0,99}\@example\.org\b[^"]{0,99}"(?!.{0,99}\@example\.org\b)/i 
    meta     DW_COMPANY_FRAUD    (!__DW_NONFRAUD_HEADER && __DW_FRAUD_BODY) 
    describe DW_COMPANY_FRAUD    Fake Sender - Phishing Attempt 
    score    DW_COMPANY_FRAUD    3
    

    我已经否定了您的第一次检查并将其限制在 From 标头中的地址(请参阅meta规则的修订)。我还添加了大量的单词边界 ( \b) 标记,以确保您不会发现“myexample.org”或“example.org.in”或其他奇怪的东西。无限范围非常昂贵,因此我将它们缩减为 0-99 个字符,并通过防止它们匹配双引号来确保您不会看得太远。我还删除了你的,因为 SpamAssassin 会折叠所有空格(行尾可能不是你认为的位置;使用和类似$的效果要好得多)。\b

    我认为3分是非常高的。其他任何事情,您可能都想考虑 SA 的黑名单功能。

    确实,您应该确保已正确安装和配置 SpamAssassin 的DKIM、SPF和DMARC插件(这些反欺骗技术可以实现您正在尝试做的大部分事情)。您的DNSBL和URI DNSBL配置正确,并且您正在使用(和培训!)Bayes。Razor和Pyzor等第三方模糊查找也可以帮助捕获错过的垃圾邮件。

    我说这些是因为这条规则费力、昂贵且无法扩展(您需要为每个域创建一个),但主要是因为它看起来并不有效(目标“签名”不是非常垃圾邮件,而且您会得到误报)。

    • 4

相关问题

  • 如何绕过 ISP 的限制性电子邮件政策?

  • SharePoint 传入电子邮件出现“未知别名”错误

  • 电子邮件帐户的角色名称与人名

  • 如何在笔记本电脑上使用 Tobit David?[关闭]

  • 随行人员通过 VPN 连接到 Exchange 2007

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve