다국어 스팸 필터
많은 스팸 필터는 영어를 기준으로 만들어졌습니다. 다른 언어로 된 스팸은 빠져나가고, 다른 언어로 된 평범한 메일은 문자 체계 때문에 스팸으로 표시됩니다. Spam Scanner는 두 문제를 모두 피하도록 만들어졌습니다.
단어 읽기#
단어는 Intl.Segmenter로 찾습니다. 이는 유니코드 단어 경계 규칙으로, 중국어, 일본어, 태국어, 라오어, 크메르어, 버마어에는 사전을 사용합니다. 중국어 문장은 다시는 반복되지 않는 하나의 긴 문자열이 아니라 恭喜, 获得, 大奖 같은 단어로 나뉩니다.
위장은 세기 전에 원래대로 되돌립니다. 단어 안의 보이지 않는 문자, 라틴 문자 단어 안에 섞인 키릴 문자나 그리스 문자(pаypal), 글자 대신 쓴 숫자(v1agra), 수학용 글자나 둘러싼 글자(𝐅𝐑𝐄𝐄)가 그 대상입니다. 각 위장 방식은 그 자체로도 단서가 됩니다.
모르는 것을 스팸으로 표시하지 않기#
공개 스팸 데이터 세트에는 외국어 ham보다 외국어 스팸이 훨씬 많으므로, 단순한 분류기는 아랍어나 한국어 텍스트 자체를 스팸으로 배웁니다. Spam Scanner는 언어를 단서로 쓰지 않고, 각 단어를 그 언어의 스팸 개수와 ham받기를 원하는 메일: 스팸의 반대입니다. 개수를 기준으로 평가하며, 그 언어에서 본 ham이 적을수록 그만큼 "unsure"에 머무릅니다.
번들 모델이 본 적 없는 21개 언어의 SMS 메시지로 테스트한 결과, 중국어, 아랍어, 한국어, 일본어, 힌디어, 벵골어, 우르두어, 터키어, 우크라이나어, 스웨덴어의 오탐이 0이 되었습니다.
모든 언어의 스팸 잡기#
- 단어를 읽지 않는 검사: 유사 도메인, 기만적인 링크, 실행 파일, 매크로, SPFSender Policy Framework: 도메인을 대신해 메일을 보낼 수 있는 서버를 나열한 DNS 레코드입니다., DKIMDomainKeys Identified Mail: 메시지에 대한 서명으로, 발신자 DNS에 게시된 공개 키로 검증합니다., DMARC어떤 도메인에서 보냈다고 주장하는 메일이 SPF와 DKIM 정렬(alignment)에 실패했을 때 수신 측이 어떻게 처리할지 알려 주는 DNS 정책입니다., 차단 목록.
- unsure 메시지를 위한 언어 모델. Qwen 3.5나 Gemma 4 같은 공개 모델은 140~200개 언어를 읽습니다. 엔드투엔드 테스트에서 실제 모델로 중국어, 아랍어, 한국어, 힌디어, 태국어의 스팸과 ham을 확인합니다.
- 직접 받은 메일. 직접 받은 메일로 학습한 모델에서는 한 언어당 각 종류의 메시지 수백 개면 그 언어에서 완전한 확신을 갖게 됩니다.
spamscanner scan message.eml --llm ollama --llm-model qwen3.5:4b
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out my-model.json일부 언어만 받으려면 --allow-language en,de를 사용하십시오. 그 밖의 언어로 확실히 감지된 메일에 점수가 더해집니다.