본문 바로가기
서버구축 (WEB,DB)

Sendmail에 SpamAssassin 설치, 스팸메일 학습 차단

by 날으는물고기 2009. 1. 6.

Sendmail에 SpamAssassin 설치, 스팸메일 학습 차단

필요한 파일

perl-5.8.8-sol9-x86-local.gz

Mail-SpamAssassin-3.2.3.tar.gz

lynx-2.8.5-sol9-x86-local.gz

ncftp-3.1.9-sol9-x86-local.gz

ncurses-5.6-sol9-x86-local.gz

wget-1.10.2-sol9-x86-local.gz

make-3.81-sol9-x86-local.gz

gnupg-1.2.2.tar.gz

 

Mail-SpamAssassin-3.2.3.tar.gz 는 http://spamassassin.apache.org 여기서 구할수 있고
나머지는 http://www.sunfreeware.com 여기서
gnupg-1.2.2.tar.gz는 http://www.pgpi.org/download/gnupg/ 여기서~~

먼저 perl을 설치해준다.

[testsol:root:/inst] gunzip perl-5.8.8-sol9-x86-local.gz
[testsol:root:/inst] pkgadd -d perl-5.8.8-sol9-x86-local

깔고나서 환경변수에 PATH에 있는 usr/local/bin 을 path의 가장 앞쪽으로 옮겨준다.

나의 경우는 /.cshrc 에 path 바꿔준후 source /.cshrc

 

가장 앞에 usr/local/bin 을 넣지않으면 100% error를 뿜어내는 화면을 볼수 있을것이다....

 

lynx, ncftp, wget, ncurses,make , gnupg 설치~

[testsol:root:/inst] gunzip lynx-2.8.5-sol9-x86-local.gz
[testsol:root:/inst] pkgadd -d lynx-2.8.5-sol9-x86-local

[testsol:root:/inst] gunzip wget-1.10.2-sol9-x86-local.gz
[testsol:root:/inst] pkgadd -d wget-1.10.2-sol9-x86-local

[testsol:root:/inst] gunzip ncftp-3.1.9-sol9-x86-local.gz
[testsol:root:/inst] pkgadd -d ncftp-3.1.9-sol9-x86-local
 
[testsol:root:/inst] gunzip ncurses-5.6-sol9-x86-local.gz
[testsol:root:/inst] pkgadd -d ncurses-5.6-sol9-x86-local
 
[testsol:root:/inst] gunzip make-3.81-sol9-x86-local.gz
[testsol:root:/inst] pkgadd -d make-3.81-sol9-x86-local
 
[testsol:root:/inst] gunzip gnupg-1.2.2.tar.gz
[testsol:root:/inst] tar -xvf gnupg-1.2.2.tar
[testsol:root:/inst] cd gnupg-1.2.2
[testsol:root:/inst] configure
[testsol:root:/inst] make
[testsol:root:/inst] make install
 

CPAN 설정

[testsol:root:/inst] perl -MCPAN -e shell
다음에 나오는 질문들은 알아서..... 

cpan> o conf prerequisites_policy ask

cpan> install Digest::SHA1 HTML::Parser Net::DNS

위에껀 필수 설치요소 밑에껀 옵션~ 이것들은 내가 설치하는 지금 시점으로 모두 설치 되었음~

cpan> install Mail::SPF Mail::SPF::Query IP::Country Compress::Zlib DBI LWP::UserAgent Archive::Tar

설치 안된 optional module은 http://search.cpan.org/여기서 찾아서 수동 설치..

아마 처음 바로 SpamAssassin에서 perl Makefile.PL 을 하게 되면 필요한 파일들을 볼 수 있을 것이다...

 

수동설치 하는 것중 유의 사항

Encode-Detect을 설치하기전에는 ExtUtils-CBuilder먼저 설치하여야 한다.

[testsol:root:/inst/op] gunzip ExtUtils-CBuilder-0.21.tar.gz
[testsol:root:/inst/op] tar -xvf ExtUtils-CBuilder-0.21.tar

[testsol:root:/inst/op] cd ExtUtils-CBuilder-0.21
[testsol:root:/inst/op/ExtUtils-CBuilder-0.21] perl Makefile.PL
[testsol:root:/inst/op/ExtUtils-CBuilder-0.21] make
[testsol:root:/inst/op/ExtUtils-CBuilder-0.21] make install

[testsol:root:/inst/op/ExtUtils-CBuilder-0.21] cd ../Encode-Detect-1.00

[testsol:root:/inst/op/Encode-Detect-1.00] perl Makefile.PL

[testsol:root:/inst/op/Encode-Detect-1.00] make

[testsol:root:/inst/op/Encode-Detect-1.00] make install

DB_File make 할 때 config.in 파일안의 BerkelyDB 위치를 현재의 위치로 정해주어야 한다.

현재 BerkeleyDB가 설치되어 있는 위치로 변경하고난 다음에

[testsol:root:/inst/op/DB_File-1.816] perl Makefile.PL

[testsol:root:/inst/op/DB_File-1.816] make

[testsol:root:/inst/op/DB_File-1.816] make install

 

그외에 내가 설치했던 Optional module

DB_File-1.816.tar.gz

Encode-Detect-1.00.tar.gz

 Mail-DKIM-0.29.tar.gz

Mail-DomainKeys-1.0.tar.gz

Net-Ident-1.20.tar.gz

razor-agents-2.84.tar

위의 모듈들은 그냥 압축 풀고 perl Makefile.PL, make, make install 을 순서대로 해주면 된다.

Optional module 들은 설치해도 되고 안해도 된다~

 

인스톨방법

1.

cpan> install Mail::SpamAssassin  <- 이것처럼 cpan에서 인스톨 해도 되지만 난 파일을 받아놨으니.. 걍 내가 컴파일 하련다...

2.

cpan> quit

[testsol:root:/inst/Mail-SpamAssassin-3.2.3] perl Makefile.PL

[testsol:root:/inst/Mail-SpamAssassin-3.2.3] make

[testsol:root:/inst/Mail-SpamAssassin-3.2.3] make install

SpamAssassin 압축 푼 폴더에 보면 sample-nonspam.txtsample-spam.txt 가 있는데 이걸로 간단히 테스트 해볼 수 있다.

[testsol:root:/inst/Mail-SpamAssassin-3.2.3] spamassassin -t < sample-nonspam.txt

[testsol:root:/inst/Mail-SpamAssassin-3.2.3] spamassassin -t < sample-spam.txt

이렇게 하면 각각 메시지들에 매겨진 점수를 볼 수 있다. spam 샘플은 거의 1000점 먹은 상황 -_-;;;

/etc/mail/spamassassin/local.cf 파일 내용

rewrite_header Subject *****SPAM*****
report_safe 1
lock_method flock
required_score 10

use_bayes 1
bayes_auto_learn 1

skip_rbl_checks 0

use_razor2 0
score SPF_PASS -2.0
score SPF_HELO_PASS -2.0
score SPF_NEUTRAL -1.0
score SPF_HELO_NEUTRAL -1.0

rewrite_header : 스팸으로 인정된 메일 제목 앞에 붙는 글

report_safe : 스팸으로 판단될 경우 원본 글을 감출지 여부

required_score : 스팸으로 판단할 스코어

use_bayes : 학습된 Bayesain Classifier를 사용할것인지 여부

bayes_auto_learn : 자동학습 설정

skip_rbl_checks : RBL체크값을 점수에 활용

use_razor2 : Vipul's Razor라는 곳에서 운영하는 블랙리스트 공유 시스템을 활용

ok_languages : 중요하게 사용되는 언어를 설정

ok_locales : 중요하게 사용되는 지역 설정

score : 별도로 특정 룰에 대한 점수를 강제로 지정

score SPF_PASS -2.0
score SPF_HELO_PASS -2.0
score SPF_NEUTRAL -1.0
score SPF_HELO_NEUTRAL -1.0
SPF에 의한 점수 설정


SpamAssassin사용시에 스팸메일 자체를 블럭 시키기

아무런 설정 없이 SpamAssassin을 사용하게 되며 스팸메일이라고 판단된 메일에는 local.cf 의 rewrite_header Subject에 적어준 글자가 그 메일 제목의 제일 앞 부분에 추가만 되고 다른 특별한 행동은 하지 않는다.

이러한 스팸 메일을 아예 받아보지 않으려면 앞에서 설치한 procmail의 procmailrc에 제목 필터링 하는 부분에서 자신이 rewrite_header Subject 에 적어준 단어를 추가해주면 된다.


SpamAssassin 실행

우선 Procmail 설치한다.

그리고 /etc/procmailrc

OPPRIVS=yes
:0fw
* < 256000
| /usr/local/bin/spamc

추가

그리고 /usr/local/bin/spamd & <- 백그라운드로 데몬 실행

담엔 보고 필터를 한번 써봐야지...

bogofilter를 한번 써봐야 겠다..

 

스팸 학습 시키기

sa-learn --spam --mbox /var/spool/mail/spam

/var/spool/mail/spam 은 스팸메일을 모아 놓은 디렉토리

반대로

햄 메일

sa-learn --ham --mbox /var/spool/mail/ham

728x90

댓글