Spam

如何在 spamassassin 中匹配日語?

  • May 23, 2021

我住在日本。最近有很多來自中國的垃圾郵件,都是用中文寫的。由於 spamassassin 不包含針對中文的規則,因此大多數這些電子郵件都以低分通過。

我想確定電子郵件何時僅用中文編寫。由於大多數日語漢字都包含在中文範圍內(U+E400 到 U+E9FF),因此辨識日語的一種方法是查看平假名(U+3040 到 U+309F)和片假名(U+30A0 到 U +30FF)。如果它包含平假名或片假名,我可以安全地假設是日語,否則是中文。

如果我測試單個字元,例如:或者它們正確匹配,但是當我使用範圍時它不起作用。這是我們嘗試過的:

body    CHINESE       /[\xe4-\xe9]/                 <--- this form seems to work fine
body    JAPANESE      /[\x30-\x31]/                 <--- not sure what is actually matching
body    JAPANESE      /(あ|え)/                      <---- this matches single character just fine
body    JAPANESE      /[あ-ん]/                      <--- doesn't work
body    JAPANESE      /[U+3040-U+30FF]/              <--- doesn't work
body    JAPANESE      /[\xe3\x81\x81-\xe3\x82\x96]/  <--- doesn't work
body    JAPANESE      /[\x{3040}-\x{30FF}]/          <--- doesn't work

我真的不知道我在做什麼了。我知道上面的一些沒有意義……

指定這些範圍的正確方法是什麼?

您是否嘗試過使用 Mail::SpamAssassin::Plugin::TextCat(語言檢測器)?

恕我直言,您應該首先考慮/評估它。

header LANGUAGE_ZH X-Languages =~ /\b(?:zh)\b/
describe LANGUAGE_ZH Chinese language
score LANGUAGE_ZH 1.0

header LANGUAGE_JA X-Languages =~ /\b(?:ja)\b/
describe LANGUAGE_JA Japanese language
score LANGUAGE_JA -0.1

您可以對其進行修改以匹配“僅檢測/猜測一種語言”或某些混合語言。

**警告:**確保外掛由您的 SpamAssassin 配置載入。

/etc/spamassassin/v310.pre在 Debian Linux 上的文件中配置。

引用自:https://serverfault.com/questions/1064390