Spamassassin은 일하지만 배우지 않습니까? 베이즈 필터 정확도가 향상되지 않음

Spamassassin은 일하지만 배우지 않습니까? 베이즈 필터 정확도가 향상되지 않음

나는 spamassassin 설치(postfix, dovecot, amavis, clamav, spamassassin on debian)가 작동하는 메일 서버를 가지고 있습니다.

모든 것이 잘 작동하고 있습니다. Spamassassin이 스팸을 필터링하고 있는데 헤더가 표시됩니다.

X-Virus-Scanned: Debian amavisd-new at xxx.yyy.de
X-Spam-Flag: YES
X-Spam-Score: 8.025
X-Spam-Level: ********
X-Spam-Status: Yes, score=8.025 tagged_above=-9999 required=3
    tests=[BAYES_50=0.8, DKIM_INVALID=0.1, DKIM_SIGNED=0.1,
    HTML_IMAGE_ONLY_24=1.618, HTML_MESSAGE=0.001,
    RAZOR2_CF_RANGE_51_100=1.886, RAZOR2_CHECK=0.922,
    RCVD_IN_BL_SPAMCOP_NET=1.347, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
    URIBL_ABUSE_SURBL=1.25, URIBL_BLOCKED=0.001]
    autolearn=no autolearn_force=no

나는 새로운 스팸과 햄이 들어오면 Spamassassin(현재는 수동으로)을 훈련시키고 있습니다:

Tue Dec 15 22:22:14 2020
Spam training for [email protected]
Learned tokens from 12 message(s) (159 message(s) examined)
Ham training for [email protected]
Learned tokens from 4 message(s) (49 message(s) examined)
Deleting spam for [email protected] older than 30 days
Syncing the SpamAssassin journal
bayes: synced databases from journal in 0 seconds: 2711 unique entries (2711 total entries)
Statistics for this run:
0.000          0          3          0  non-token data: bayes db version
0.000          0       5288          0  non-token data: nspam
0.000          0        855          0  non-token data: nham
0.000          0     124148          0  non-token data: ntokens
0.000          0 1602145027          0  non-token data: oldest atime
0.000          0 1608066788          0  non-token data: newest atime
0.000          0 1608067345          0  non-token data: last journal sync atime
0.000          0 1607672985          0  non-token data: last expiry atime
0.000          0    5529600          0  non-token data: last expire atime delta
0.000          0      50552          0  non-token data: last expire reduction count
Run finished Tue Dec 15 22:22:27 2020

모든 것이 작동하는 것 같습니다. 그러나 최근에는 항상 똑같아 보이는 일부 스팸이 여전히 받은 편지함으로 들어오는 것을 발견했습니다. 이는 동일한 유형의 스팸이며, 몇 주간의 훈련 후에도 여전히 통과됩니다. 베이지안 점수는 변하지 않습니다.

X-Virus-Scanned: Debian amavisd-new at xxx.yyy.de
X-Spam-Flag: NO
X-Spam-Score: 1.852
X-Spam-Level: *
X-Spam-Status: No, score=1.852 tagged_above=-9999 required=3
    tests=[BAYES_00=-1.9, DIGEST_MULTIPLE=0.293, DKIMWL_WL_MED=-0.001,
    DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249,
    HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, PYZOR_CHECK=1.392,
    RAZOR2_CF_RANGE_51_100=1.886, RAZOR2_CHECK=0.922, SPF_HELO_NONE=0.001,
    SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01]
    autolearn=no autolearn_force=no

문제를 찾을 수 없는 것 같고 지금까지 확인한 모든 것이 작동하는 것 같습니다. 최소 기본값인 스팸/햄 200개는 분명히 통과되었습니다. 그러니 그것은 문제가 되지 않습니다. 저는 다음 명령으로 Spamassassin을 훈련하고 있습니다:

/usr/bin/sa-learn --no-sync --spam /var/vmail/$domain/$user/Maildir/.Junk/{cur,new} >> /var/log/sa-learn.log 2>&1
/usr/bin/sa-learn --no-sync --ham /var/vmail/$domain/$user/Maildir/{cur} >> /var/log/sa-learn.log 2>&1
/usr/bin/sa-learn --sync >> /var/log/sa-learn.log 2>&1

무엇이 문제일까요? 더 이상 어디를 봐야할지 모르겠습니다.

도움을 주시면 감사하겠습니다.

답변1

결과스팸 암살자Bayes 훈련은 일반적으로 일부 파일로 구성된 데이터베이스에 저장됩니다.실행중인 사용자의 홈 디렉토리에 저장됩니다.. 다른 사용자로 호출하면 동일한 데이터 세트에 액세스/업데이트되지 않습니다.

(이전 댓글의 확장 버전)

권한 분리를 위해,스팸 암살자debian-spamd일반적으로 또는 같은 별도의 사용자로 실행되므로 amavis자동 학습 중에 해당 사용자의 데이터베이스가 업데이트됩니다. 데이터베이스를 수동으로 업데이트하려면 올바른 사용자를 지정해야 할 수도 있습니다. 그렇지 않으면 훈련 데이터를 관련 없는 다른 데이터베이스에 저장하게 됩니다.

어떻게 말하나요?훈련 데이터 파일의 인스턴스가 두 개(백업 제외)인 경우 다음을 호출했습니다.스팸 암살자두 명의 다른 사용자(메일 서버에서 한 명, 셸에서 한 명):

# find / -name bayes_toks
/var/lib/amavis/.spamassassin/bayes_toks
/root/.spamassassin/bayes_toks

데이터베이스가 충분히 시드되자마자 두 파일 모두 최근 수정 타임스탬프를 가질 수 있습니다.스팸 암살자충분히 식별 가능한 메일을 선택하세요.자동열차이는 수동 조치 없이 수신된 메일에서 토큰을 학습하는 것입니다(이 동작은 구성할 수 있으며 일반적으로 활성화하기를 원합니다).

어떻게 고치는 지?동일한 메일을 올바른 데이터베이스에 공급 - sa-learn메일 서버에서 호출하는 동안 사용하는 사용자/homedir로 호출하여(확인하다이 경우 폴더 이름이 사용자 이름과 일치하지 않을 수 있습니다!):

sudo -H -u amavis sa-learn --no-sync --spam /var/vmail/$domain/$user/Maildir/.Junk/{cur,new} >> /var/log/sa-learn.log 2>&1
sudo -H -u amavis sa-learn --no-sync --ham /var/vmail/$domain/$user/Maildir/{cur} >> /var/log/sa-learn.log 2>&1
sudo -H -u amavis sa-learn --sync >> /var/log/sa-learn.log 2>&1

나는 추천하지 않는다병합내부 파일 형식이 약간 혼란스러울 수 있기 때문에 의도하지 않게 데이터세트를 분할한 경우(비록~할 수 있다다음을 사용하여 덤프됩니다 --backup.파괴적으로)을 사용하여 덮어쓰는 --restore반면, 동일한 스팸 데이터에 대한 재교육은 훨씬 간단하며 sa-learn부정적인 영향 없이 동일한 메일을 계속해서 공급하도록 설계되었습니다.

관련 정보