spamassassin - lọc các chữ cái CyFillic / UTF-8 cụ thể của Nga (mã hóa base64)


0

Tôi gặp một số khó khăn khi thiết lập các spamassassinquy tắc cá nhân của tôi . Vấn đề của tôi: Tôi nhận được rất nhiều thư rác tiếng Nga với các chữ cái Cyrillic, nhiều trong UTF-8. Do đó, tìm kiếm một bộ ký tự là không đủ. Vì vậy, tôi muốn tìm kiếm một vài chữ cái tiếng Nga điển hình thay thế (ví dụ) : (д|ж|з|и|й).

Tôi đã thử mẫu này /(д|ж|з|и|й)/icũng như /(\xd0\xb4|\xd0\xb6|\xd0\xb7|\xd0\xb8|\xd0\xb9)/i(các mẫu regex này sẽ làm tương tự, phải không?) Trong một Subjecttìm kiếm:

header CYRILLIC_LETTER_PRESENT Subject =~/(д|ж|з|и|й)/i

Kết quả: Thư UTF-8rác vẫn đến. Tôi đã phân tích các email đi qua. Tất cả đều có cấu trúc tương tự nhau. Nguồn (phần quan trọng của) tìm kiếm một ví dụ thư rác như sau

Subject: =?UTF-8?B?0KLQtdCx0LUg0L/QvtC90YDQsNCy0LjRgtGM0YHRjyEg0J/QvtC60LDQt9GL?=  =?UTF-8?B?0LLQsNGOINC+0YLQu9C40YfQvdGL0Lkg0LLQsNGA0LjQsNC90YIg0L/QvtC7?=  =?UTF-8?B?0YPRh9C10L3QuNGPINC00L7RhdC+0LTQsCEg0J/RgNC+0YHRgtC+0Lkg0Lgg?=  =?UTF-8?B?0YDQtdC30YPQu9GM0YLQsNGC0LjQstC90YvQueKAiyE=?=
MIME-Version: 1.0
Date: Wed, 8 Mar 2017 06:57:11 +0100
From: =?UTF-8?B?0KDQsNC00LjQuSDQn9C40YjRgg==?= <radiypisht140@zarabotokfm8.ru>
Sender: radiypisht140@zarabotokfm8.ru
Message-ID: <904499458.39893@zarabotokfm8.ru>
X-Priority: 3
List-Unsubscribe: <http://ie8qrshyns.zarabotokfm8.ru/uns/tFRyGZzisv/58dhKEk2im53c/DBetz>
Content-Type: multipart/alternative;
boundary="291e4fd846a7aa548d279e9eb1f199e9_1"

--291e4fd846a7aa548d279e9eb1f199e9_1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

....encoded....body....

--291e4fd846a7aa548d279e9eb1f199e9_1
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64

....2nd(?)....encoded....body....

--291e4fd846a7aa548d279e9eb1f199e9_1--

Tôi googled và tìm thấy chỉ một loại thông tin hữu ích: http://shallowsky.com/blog/programming/decoding-email-headers.html

Vì vậy, điều này subjectsử dụng RFC2047: =?UTF-8?B?msg_subject?= =?UTF-8?B?msg_subject2?= [...]. Dòng này cho chúng tôi biết, việc subjectsử dụng bộ utf-8ký tự và base64mã hóa (so sánh http://www.ietf.org/rfc/rfc2047.txt ).

Rõ ràng, spamassassinkhông phải là giải mã điều này (đúng). Tôi đã không tìm thấy bất kỳ khả năng để làm việc này. Tôi cũng tìm thấy trang web này: https://dropbear.xyz/2007/08/07/filtering-base64-encoding-spam/

Nhưng điều này không giúp tôi, vì nó chỉ mô tả, làm thế nào để lọc các chuỗi được mã hóa base64, đủ dài. Vì tôi đang tìm kiếm các ký tự đơn, tôi không thể sử dụng phương pháp này.

Tui bỏ lỡ điều gì vậy? Cảm ơn bạn đã giúp đỡ!

chỉnh sửa: Tôi cũng đã thử rawbodytìm kiếm, vì điều này sẽ giải mã mã hóa base64 như được nêu trong các tài liệu :

rawbody CYRILLIC_LETTER_PRESENT /(д|ж|з|и|й)/i

Nó cũng không hoạt động với tôi, mặc dù nó cũng sẽ tìm kiếm toàn bộ cơ thể, và nó chứa đầy các chữ cái Cyrillic.

edit2: Tôi đã cố gắng điều tra vấn đề hơn nữa. Nếu tôi thử kiểm tra textcat với spamassassin -D textcat -t spamtest, nó sẽ cho tôi biết rằng nó " can't determine language uniquely enough".

Hơn nữa, tôi nhận được kết quả sau đây:

X-Spam-Flag: YES
X-Spam-Level: *******
X-Spam-Status: Yes, score=7.3 required=3.0 tests=HTML_FONT_LOW_CONTRAST,
        HTML_MESSAGE,LOCAL_CYRILLIC,RDNS_NONE,SPF_SOFTFAIL,T_DKIM_INVALID
        autolearn=no autolearn_force=no version=3.4.0

Vì vậy, nó trông giống như nó hoạt động. Mọi thứ đều ổn. Quy tắc của tôi, ở đây được gọi LOCAL_CYRILLIC, hoạt động như dự định. NHƯNG, vấn đề là, thư này đã đi qua mà không bị nhận ra là thư rác, vì cùng một quy tắc đã có trong tệp cấu hình. Tôi đã cố gắng chuyển tiếp cùng một thư một lần nữa cho tôi và sau đó, nguồn email trông như thế này:

X-Spam-Level: **
X-Spam-Status: No, score=2.7 required=3.0 tests=LOCAL_CYRILLIC,
    RCVD_IN_DNSWL_MED autolearn=no autolearn_force=no version=3.4.0

Vì vậy, dường như có một sự khác biệt giữa việc chạy thử nghiệm cục bộ trên một tệp và một email thực sự đến. Tại sao? Tôi luôn luôn khởi động lại spamassassin với systemctl restart spamassassin. Tôi đã kiểm tra nó systemctl status spamassassinvà mọi thứ đều ổn, spamdcũng được khởi động lại. Ở đó tôi cũng có thể tìm thấy thông tin sau cho email được chuyển tiếp:

spamd: clean message (2.7/3.0) for spamd:5555 in 6.0 seconds, 8371 bytes.
spamd: result: . 2 - LOCAL_CYRILLIC,RCVD_IN_DNSWL_MED scantime=6.0,size=8371,user=spamd,uid=5555,required_score=3.0,[...]

Bạn đã thử cấu hình ok_locales? spamassassin.apache.org/full/3.2.x/doc/
Kẻ

@ AndrzejA.Filip ok_locales chỉ tìm kiếm các bộ ký tự khu vực điển hình. Điều này sẽ không giúp tôi, vì các email nằm trong utf-8= /
nox

Xin lỗi, ok_languageslà thích hợp hơn. UNWANTED_LANGUAGE_BODYđiểm kiểm tra là 2,8. spamassassin.apache.org/full/3.1.x/doc/
Kẻ

@ AndrzejA.Filip Có thể bạn đúng, nhưng điều này vẫn không hiệu quả với trường hợp của tôi, tôi cũng đã thử nó, nên đã viết điều này có thể. Các email vẫn đang đi qua, với tùy chọn này được đặt. Tôi đoán đó là do utf-8bộ ký tự của họ kết hợp với base64mã hóa.
nox

Bạn đã thử kiểm tra plugin texcat chưa? spamassassin -D textcat -t spam_message_file
AnFi

Câu trả lời:


0

Rõ ràng, spamassassin không giải mã được điều này (đúng cách). Tôi đã không tìm thấy bất kỳ khả năng để làm việc này

Nó làm việc cho tôi với Ubuntu 14.04, spamassassin 3.4, Perl 5.18.2, ngôn ngữ: fr_FR.UTF-8.

Quy tắc trong ~/.spamassassin/user_prefs:

header RUSSIAN_CHARS        Subject =~ /(д|ж|з|и|й)/i
describe RUSSIAN_CHARS      Russian characters in header
score    RUSSIAN_CHARS      10

Khi lấy một mailfile và thay thế dòng Tiêu đề thô bằng một trong câu hỏi của bạn:

Chủ đề: = UTF-8 B 0KLQtdCx0LUg0L / QvtC90YDQsNCy0LjRgtGM0YHRjyEg0J / QvtC60LDQt9GL = = UTF-8 B 0LLQsNGOINC + 0YLQu9C40YfQvdGL0Lkg0LLQsNGA0LjQsNC90YIg0L / QvtC7 = = UTF-8 B 0YPRh9C10L3QuNGPINC00L7RhdC + 0LTQsCEg0J / RgNC + 0YHRgtC + 0Lkg0Lgg??????????? = =? UTF-8? B? 0YDQtdC30YPQu9GM0YLQsNGC0LjQstC90YvQueKAiyE =? =

Kết quả:

$ spamc -R <mailtest
10,0 / 5,0
Phần mềm phát hiện thư rác, chạy trên hệ thống ** đã được xử lý lại ** ...

Xem trước nội dung: ** đã xử lý lại ** [...]

Chi tiết phân tích nội dung: (10,0 điểm, yêu cầu 5,0)

 mô tả tên quy tắc pts
---- ---------------------- ------------------------ --------------------------
  10 RUSSIAN_CHARS Các ký tự tiếng Nga trong tiêu đề
 0,0 DKIM_ADSP_CUSTOM_MED Không có chữ ký tác giả hợp lệ, adsp_override là
                            TÙY CHỈNH
 0,0 FREEMAIL_FROM Email người gửi thường bị lạm dụng nhà cung cấp thư cuối cùng
                            (** đã xử lý lại ** [tại] gmail.com)
-0.0 NO_RELAYS Thông tin: tin nhắn không được chuyển tiếp qua SMTP

Nó cũng đánh với rawbody RUSSIAN_CHARS /(д|ж|з|и|й)/i


May mắn cho bạn, tôi đã không có nhiều may mắn. Dù sao, xem chỉnh sửa mới để biết thêm thông tin.
nox

@nox: Nếu tôi hiểu chính xác, bộ lọc cũng hoạt động với bạn. Bây giờ bạn có một câu hỏi khác, đó là lý do tại sao một số quy tắc khác phù hợp hay không phụ thuộc vào cách gọi spamassassin.
Daniel Vérité

Có lẽ đây là câu hỏi của tôi ngay từ đầu. Để làm rõ: Tôi muốn áp dụng quy tắc này cho các email đến (tất nhiên) và quy tắc này không hoạt động, trong khi các quy tắc khác đang hoạt động hoàn hảo ở đó. Tuy nhiên và tại sao, bộ lọc thiết lập của tôi thực sự hoạt động cục bộ.
nox
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.