웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
qmail-1.03설치⑥ (qmail-scanner 스팸필터링)
2003.02.28 08:08
첨부파일은 제홈의 설치이야기에서 받아가세요.
질문은 메일로 안 받습니다. 홈의 질답게시판에서 해주세요.
비츠로 홈 - http://vitro.pe.kr
qmail-1.03설치⑥ (qmail-scanner 스팸필터링)
qmail-scanner는 바이러스와 스팸 메일을 필터링하기
위해서 사용한다.
qmail-scanner를 설치하기 위해서는 maildrop과 외부 spam필터를 같이
결합하여 설치한다.
나는 여기서 spamAssassin을 결합하여 사용하는 방법을 쓸것이다.
spamAssassin을 결합하는 이유는 문서 이야기에
올려뒀으니 참조하기 바란다.
그리고 qmail-scanner설치시 필요한 모듈이 몇가지 있다.
unzip은 큐메일스캐너가 압축한 이메일 파일을 검사시 압축해제하여 검사하기
위해서 필요하다.
perl-suidperl란 것도 필요한데 큐메일 스캐너가 실행시 필요로 한다.
Time::Hires 모듈을 선행조건으로 설치되어 있어야 하는데...
이것을 설치하다보면 에러 메시지가 난다... Time::Hires를 설치하기전에
HTML-Parser설치하고 나서 Time::Hires를 설치하면 에러 없이 잘 설치된다.
그리고 maildrop은 qmail-scanner가 이메일을 검사하기 위한 이메일 포맷을
스캔가능한 형태로 변환하기 위해 maildrop의 reformime이란 기능을 이용한다.
그러니 반드시 maildrop을 설치하여야 한다.
각 소스가 내가 다운 받아 테스트했을때보다 버전업이 된것이
좀있나 버전 업이 되어도 설치시에 별 차이는 없다.
각 소스를 다운 받는다.
maildrop-1.5.0를 아래 주소에서 다운 받는다.
http://prdownloads.sourceforge.net/courier/
HTML-Parser을 아래 주소에서 다운 받는다.
http://search.cpan.org/author/GAAS/HTML-Parser-3.27/
내가 테스트할땐 1.38이었으나 지금은 1.42버전인데
별차이 없는것으로 안다. 그냥 1.42로 작업한다.
Time-HiRes 을 아래 주소에서 다운 받는다.
http://search.cpan.org/author/JHI/Time-HiRes-1.42/
Mail-SpamAssassin 을 아래 주소에서 다운 받는다.
http://www.spamassassin.org/downloads.html
qmail-scanner 를 아래 주소에서 다운 받는다.
http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-1.16.tgz?download
perl-suidperl, unzip은 rpm으로 설치한다.
##### maildrop install ######
우선 메일드롭부터 설치한다.
maildrop-1.5.0를 압축해제 한다.
tar jxpf maildrop-1.5.0.tar.bz2 -C /var/tmp
cd /var/tmp/maildrop-1.5.0
만약 당신이 checkpassword를 지원하고 싶다면 위의 컨피그
옵션중에 조금만 수정해서 사용하면 될것이다.
--enable-maildrop-gid=vchkpw
--enable-restrict-trusted=1
--enable-trusted-users='root qmaild vpopmail'
위의 세 옵션만 제거하고 설치하면 될것같다. 솔직히 나도 qmail-scanner와
checkpassword와 연동해서 설치한적이 없어서 잘 모르겠다.
checkpassword와 qmail-scanner와의 연동은 특별히 설정이 어렵진 않은걸로 안다.
echo "##########################"
echo "### Vpopmail support ###"
echo "##########################"
컨파일 옵션을 설정
./configure
--prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--mandir=/usr/share/man
--enable-sendmail=/var/qmail/bin/sendmail
--enable-maildrop-uid=root
--enable-maildrop-gid=vchkpw
--enable-maildirquota
--enable-restrict-trusted=1
--enable-trusted-users='root qmaild vpopmail'
컴파일
make
find /* > /root/maildrop1
실제 설치
make install-strip
맨 페이지 설치
make install-man
find /* > /root/maildrop2
diff /root/maildrop1 /root/maildrop2 > /root/maildrop-install
rpm으로 unzip과 perl-suidperl 을 rpm으로 설치한다.
rpm -Uvh --nodeps unzip-5.50-2.i386.rpm perl-suidperl-5.6.1-34.99.6.i386.rpm
echo "### HTML-Parser-3.26 install ###"
HTML-Parser-3.26 압축해제
tar zxfp HTML-Parser-3.26.tar.gz -C /var/tmp
cd /var/tmp/HTML-Parser-3.26
우선 펄 경로설정
perl Makefile.PL
컴파일
make
컴파일 테스트
make test
find /* > /root/HTML-Parser1
make install
find /* > /root/HTML-Parser2
diff /root/HTML-Parser1 /root/HTML-Parser2 > /root/HTML-Parser-install
echo "#### Time::Hires install ####"
Time-HiRes-1.38 압축해제
tar zxfp Time-HiRes-1.38.tar.gz -C /var/tmp
cd /var/tmp/Time-HiRes-1.38
펄 경로 설정
perl Makefile.PL
컴파일
make
컴파일 테스트
make test
find /* > /root/Time1
make install
find /* > /root/Time2
diff /root/Time1 /root/Time2 > /root/Time-install
##### spamAssassin install ######
Mail-SpamAssassin-2.43 설치
tar zxfp Mail-SpamAssassin-2.43.tar.gz -C /var/tmp
cd /var/tmp/Mail-SpamAssassin-2.43
perl Makefile.PL
컴파일
make
find /* > /root/spamassassin1
실제 설치
make install
첨부 파일들을 복사한다.
cp -f user_prefs /etc/mail/spamassassin/
cp -f local.cf /etc/mail/spamassassin/
시작 스크립트 복사
cp -f /var/tmp/Mail-SpamAssassin-2.43/spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
----------- 아래 옵션은 Mail-SpamAssassin-2.43 시작시 옵션 설정 -----------
-F0 <-- 최신 버전에선 불필요 옵션
-d : 데몬모드
-L : Local 유저에 적용
-x : 사용자별 환경설정 무시
-u qmailq : spamd을 qmailq 유저 권한으로 실행
echo 'OPTIONS="-d -L -x -u qmailq"' > /etc/sysconfig/spamd
-------------------------------------------------------------------------
find /* > /root/spamassassin2
퍼미션 조정
chmod 644 /etc/mail/spamassassin/*
chmod 644 /etc/sysconfig/spamd
chmod 700 /etc/rc.d/init.d/spamd
chkconfig --add spamd
chkconfig --level 345 spamd on
/etc/rc.d/init.d/spamd start
spamassassin 테스트
cd /var/tmp/Mail-SpamAssassin-2.43
spamassassin -t < sample-nonspam.txt > nonspam.out
spamassassin -t < sample-spam.txt > spam.out
nonspam.out 과 spam.out 파일을 열어보고
spam.out 파일에 스팸 내용이 있으면 이상없이 설치된거다.
echo "#### qmail-scanner install ####"
qmail-scanner-1.15를 설치한다.
혹시 라도 setuidperl의 퍼미션을 확인해보고 아래와 다르면 바꿔준다.
chown root /usr/bin/suidperl
chmod 4711 /usr/bin/suidperl
소스 압축해제
tar zxfp qmail-scanner-1.15.tgz -C /var/tmp
cd /var/tmp/qmail-scanner-1.15
소스 폴더의 아래에 보면 locale라는 디렉토리가 있다.
자신의 시스템 로케일이 ko로 사용한다면 perlsuid가 작동할때마다
perl에서 ko라는 폴더를 찾을수 없다는 에러 메시지가 나올것이다.
그 에러 메시지를 안 나오게 하기 위해
en_GB파일을 자신이 사용하는 로케일명으로 복사하면 에러 메시지가 안 뜬다.
cp -r locale/en_GB locale/eucKR
컴파일
./configure --debug no
--lang "eucKR"
--log-details syslog
--unzip yes
find /* > /root/qmail-scanner1
./configure --debug no
--lang "eucKR"
--log-details syslog
--install
첨부파일을 복사한다.
아래 파일은 큐메일 스캐너의 룰셋이다.
cp -f quarantine-attachments.txt /var/spool/qmailscan/
find /* > /root/qmail-scanner2
diff /root/qmail-scanner1 /root/qmail-scanner2 > /root/qmail-scanner-install
퍼미션 조정한다.
chown qmailq.qmail /var/spool/qmailscan/quarantine-attachments.txt
chmod 660 /var/spool/qmailscan/quarantine-attachments.txt
chown qmailq.qmail /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
아래 명령으로 큐메일 스캐너 룰셋이 잘 적용되었는지 확인
/var/qmail/bin/qmail-scanner-queue.pl -g
큐메일큐가 시스템 환경 변수로 정의되어있어야지만 정상 작동한다.
echo 'export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"' >> /etc/profile
export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
환경파일 재로드
. /etc/profile
환경 변수 지정 잘 되었나 확인해본다.
echo $QMAILQUEUE
큐메일 재시작
/etc/rc.d/init.d/qmail restart
큐메일 스캐너 테스트
/var/tmp/qmail-scanner-1.15/contrib/test_installation.sh -doit
큐메일 스캐너 설치하고 나서 큐메일 스캐너 관련 로그가 너무 많이 남는다면
크론으로 한시간마다 해당 큐 폴더를 지우고 다시 만드는 식으로 로그를
관리하자. 아래는 내가 한 방법인데... 이것보다는 로그 로테이트등을 이용하는게
훨씬 나을것 같다.
참고로 아래 방법은 서비스시에 약간의 문제를 일으킬 소지가 다분하므로
권하지 않는다.
echo 'rm -rf /var/spool/qmailscan/quarantine/new
install -m770 -d -o qmailq -g qmail /var/spool/qmailscan/quarantine/new' > /etc/cron.hourly/qmail-scan.cron
chmod 550 /etc/cron.hourly/qmail-scan.cron
질문은 메일로 안 받습니다. 홈의 질답게시판에서 해주세요.
비츠로 홈 - http://vitro.pe.kr
qmail-1.03설치⑥ (qmail-scanner 스팸필터링)
qmail-scanner는 바이러스와 스팸 메일을 필터링하기
위해서 사용한다.
qmail-scanner를 설치하기 위해서는 maildrop과 외부 spam필터를 같이
결합하여 설치한다.
나는 여기서 spamAssassin을 결합하여 사용하는 방법을 쓸것이다.
spamAssassin을 결합하는 이유는 문서 이야기에
올려뒀으니 참조하기 바란다.
그리고 qmail-scanner설치시 필요한 모듈이 몇가지 있다.
unzip은 큐메일스캐너가 압축한 이메일 파일을 검사시 압축해제하여 검사하기
위해서 필요하다.
perl-suidperl란 것도 필요한데 큐메일 스캐너가 실행시 필요로 한다.
Time::Hires 모듈을 선행조건으로 설치되어 있어야 하는데...
이것을 설치하다보면 에러 메시지가 난다... Time::Hires를 설치하기전에
HTML-Parser설치하고 나서 Time::Hires를 설치하면 에러 없이 잘 설치된다.
그리고 maildrop은 qmail-scanner가 이메일을 검사하기 위한 이메일 포맷을
스캔가능한 형태로 변환하기 위해 maildrop의 reformime이란 기능을 이용한다.
그러니 반드시 maildrop을 설치하여야 한다.
각 소스가 내가 다운 받아 테스트했을때보다 버전업이 된것이
좀있나 버전 업이 되어도 설치시에 별 차이는 없다.
각 소스를 다운 받는다.
maildrop-1.5.0를 아래 주소에서 다운 받는다.
http://prdownloads.sourceforge.net/courier/
HTML-Parser을 아래 주소에서 다운 받는다.
http://search.cpan.org/author/GAAS/HTML-Parser-3.27/
내가 테스트할땐 1.38이었으나 지금은 1.42버전인데
별차이 없는것으로 안다. 그냥 1.42로 작업한다.
Time-HiRes 을 아래 주소에서 다운 받는다.
http://search.cpan.org/author/JHI/Time-HiRes-1.42/
Mail-SpamAssassin 을 아래 주소에서 다운 받는다.
http://www.spamassassin.org/downloads.html
qmail-scanner 를 아래 주소에서 다운 받는다.
http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-1.16.tgz?download
perl-suidperl, unzip은 rpm으로 설치한다.
##### maildrop install ######
우선 메일드롭부터 설치한다.
maildrop-1.5.0를 압축해제 한다.
tar jxpf maildrop-1.5.0.tar.bz2 -C /var/tmp
cd /var/tmp/maildrop-1.5.0
만약 당신이 checkpassword를 지원하고 싶다면 위의 컨피그
옵션중에 조금만 수정해서 사용하면 될것이다.
--enable-maildrop-gid=vchkpw
--enable-restrict-trusted=1
--enable-trusted-users='root qmaild vpopmail'
위의 세 옵션만 제거하고 설치하면 될것같다. 솔직히 나도 qmail-scanner와
checkpassword와 연동해서 설치한적이 없어서 잘 모르겠다.
checkpassword와 qmail-scanner와의 연동은 특별히 설정이 어렵진 않은걸로 안다.
echo "##########################"
echo "### Vpopmail support ###"
echo "##########################"
컨파일 옵션을 설정
./configure
--prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--mandir=/usr/share/man
--enable-sendmail=/var/qmail/bin/sendmail
--enable-maildrop-uid=root
--enable-maildrop-gid=vchkpw
--enable-maildirquota
--enable-restrict-trusted=1
--enable-trusted-users='root qmaild vpopmail'
컴파일
make
find /* > /root/maildrop1
실제 설치
make install-strip
맨 페이지 설치
make install-man
find /* > /root/maildrop2
diff /root/maildrop1 /root/maildrop2 > /root/maildrop-install
rpm으로 unzip과 perl-suidperl 을 rpm으로 설치한다.
rpm -Uvh --nodeps unzip-5.50-2.i386.rpm perl-suidperl-5.6.1-34.99.6.i386.rpm
echo "### HTML-Parser-3.26 install ###"
HTML-Parser-3.26 압축해제
tar zxfp HTML-Parser-3.26.tar.gz -C /var/tmp
cd /var/tmp/HTML-Parser-3.26
우선 펄 경로설정
perl Makefile.PL
컴파일
make
컴파일 테스트
make test
find /* > /root/HTML-Parser1
make install
find /* > /root/HTML-Parser2
diff /root/HTML-Parser1 /root/HTML-Parser2 > /root/HTML-Parser-install
echo "#### Time::Hires install ####"
Time-HiRes-1.38 압축해제
tar zxfp Time-HiRes-1.38.tar.gz -C /var/tmp
cd /var/tmp/Time-HiRes-1.38
펄 경로 설정
perl Makefile.PL
컴파일
make
컴파일 테스트
make test
find /* > /root/Time1
make install
find /* > /root/Time2
diff /root/Time1 /root/Time2 > /root/Time-install
##### spamAssassin install ######
Mail-SpamAssassin-2.43 설치
tar zxfp Mail-SpamAssassin-2.43.tar.gz -C /var/tmp
cd /var/tmp/Mail-SpamAssassin-2.43
perl Makefile.PL
컴파일
make
find /* > /root/spamassassin1
실제 설치
make install
첨부 파일들을 복사한다.
cp -f user_prefs /etc/mail/spamassassin/
cp -f local.cf /etc/mail/spamassassin/
시작 스크립트 복사
cp -f /var/tmp/Mail-SpamAssassin-2.43/spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd
----------- 아래 옵션은 Mail-SpamAssassin-2.43 시작시 옵션 설정 -----------
-F0 <-- 최신 버전에선 불필요 옵션
-d : 데몬모드
-L : Local 유저에 적용
-x : 사용자별 환경설정 무시
-u qmailq : spamd을 qmailq 유저 권한으로 실행
echo 'OPTIONS="-d -L -x -u qmailq"' > /etc/sysconfig/spamd
-------------------------------------------------------------------------
find /* > /root/spamassassin2
퍼미션 조정
chmod 644 /etc/mail/spamassassin/*
chmod 644 /etc/sysconfig/spamd
chmod 700 /etc/rc.d/init.d/spamd
chkconfig --add spamd
chkconfig --level 345 spamd on
/etc/rc.d/init.d/spamd start
spamassassin 테스트
cd /var/tmp/Mail-SpamAssassin-2.43
spamassassin -t < sample-nonspam.txt > nonspam.out
spamassassin -t < sample-spam.txt > spam.out
nonspam.out 과 spam.out 파일을 열어보고
spam.out 파일에 스팸 내용이 있으면 이상없이 설치된거다.
echo "#### qmail-scanner install ####"
qmail-scanner-1.15를 설치한다.
혹시 라도 setuidperl의 퍼미션을 확인해보고 아래와 다르면 바꿔준다.
chown root /usr/bin/suidperl
chmod 4711 /usr/bin/suidperl
소스 압축해제
tar zxfp qmail-scanner-1.15.tgz -C /var/tmp
cd /var/tmp/qmail-scanner-1.15
소스 폴더의 아래에 보면 locale라는 디렉토리가 있다.
자신의 시스템 로케일이 ko로 사용한다면 perlsuid가 작동할때마다
perl에서 ko라는 폴더를 찾을수 없다는 에러 메시지가 나올것이다.
그 에러 메시지를 안 나오게 하기 위해
en_GB파일을 자신이 사용하는 로케일명으로 복사하면 에러 메시지가 안 뜬다.
cp -r locale/en_GB locale/eucKR
컴파일
./configure --debug no
--lang "eucKR"
--log-details syslog
--unzip yes
find /* > /root/qmail-scanner1
./configure --debug no
--lang "eucKR"
--log-details syslog
--install
첨부파일을 복사한다.
아래 파일은 큐메일 스캐너의 룰셋이다.
cp -f quarantine-attachments.txt /var/spool/qmailscan/
find /* > /root/qmail-scanner2
diff /root/qmail-scanner1 /root/qmail-scanner2 > /root/qmail-scanner-install
퍼미션 조정한다.
chown qmailq.qmail /var/spool/qmailscan/quarantine-attachments.txt
chmod 660 /var/spool/qmailscan/quarantine-attachments.txt
chown qmailq.qmail /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
아래 명령으로 큐메일 스캐너 룰셋이 잘 적용되었는지 확인
/var/qmail/bin/qmail-scanner-queue.pl -g
큐메일큐가 시스템 환경 변수로 정의되어있어야지만 정상 작동한다.
echo 'export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"' >> /etc/profile
export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
환경파일 재로드
. /etc/profile
환경 변수 지정 잘 되었나 확인해본다.
echo $QMAILQUEUE
큐메일 재시작
/etc/rc.d/init.d/qmail restart
큐메일 스캐너 테스트
/var/tmp/qmail-scanner-1.15/contrib/test_installation.sh -doit
큐메일 스캐너 설치하고 나서 큐메일 스캐너 관련 로그가 너무 많이 남는다면
크론으로 한시간마다 해당 큐 폴더를 지우고 다시 만드는 식으로 로그를
관리하자. 아래는 내가 한 방법인데... 이것보다는 로그 로테이트등을 이용하는게
훨씬 나을것 같다.
참고로 아래 방법은 서비스시에 약간의 문제를 일으킬 소지가 다분하므로
권하지 않는다.
echo 'rm -rf /var/spool/qmailscan/quarantine/new
install -m770 -d -o qmailq -g qmail /var/spool/qmailscan/quarantine/new' > /etc/cron.hourly/qmail-scan.cron
chmod 550 /etc/cron.hourly/qmail-scan.cron