simscan설치 및 qmail-scanner와 simscan 의 비교
작성자:김경민 (stone@linuxstudy.pe.kr)
잘못된 부분이나 좋은 의견이 있으면 메일로 주시면 감사드리겠습니다.
목적
Qmail-scanner(perl)에 비해 c로 작성된
simscan 의 성능 테스트 및 장단점
perl스캐너 사용시 서버의 로드가 많이 높아지는 부분을 해소해 보고자 함
다운로드 위치
필요한 것들
Ripmime(첨부파일을 필터링 하고자 한다면 필요하다)
Qmail-queue패치
Clamav(바이러스메일 체크)
Spamassassin
Trophie(or sophie)-옵션으로 설치 가능
- 설치 -
위의 다운로드 위치에서 소스를 다운로드 받는다.
먼저 clamav와 spamassassin을 설치하도록 한다.
simscan소스를 풀고 소스 디렉토리로 이동
주의-먼저 simscan 이라는 사용자를 만들어야 한다.
Shell# groupadd
simscan
Shell# adduser –g
simscan –r –d
/var/qmail/simscan –M –s /sbin/nologin simscan
Shell# ./configure 필요 옵션
Shell# make
Shell# make
install-strip
옵션 설명
--enable-user=유저명 (simscan을 유저를 셋팅한다. 기본값으로 simscan)
--enable-clamav=y|n
(clamav 를 이용한 스캐닝. 기본값으로 y 이다.)
--enable-clamdscan=clamdscan의 PTAH
--enable-custom-smtp-reject=y|n
(바이러스 이름을 포함하여 리턴 메시지를 보내도록한다)
주의 – 위의 옵션을 사용하기 위해서는 소스디렉토리/contrib/qmail-queue-custom-error.patch
의 패치를
Qmail에 해주어야 한다. 또한 나중에 설명되는 옵션중에 하나인
–enable-dropmsg
의 값이 y이면 안된다.)
--enable-per-domain=y|n
( 많은 도메인에 대해서 메일서비스를 하고 있으며 각각에 대한 simscan 의 설정을
하고자 한다면 y를
택하도록 한다.)
--enable-attach=y|n
( 첨부파일에 대해서 체크를 할 것인지의 여부를 정한다. /var/qmail/control/ssattach 파일안에 필터링할 파일명이나 확장자를 넣어주면 된다.)
--enable-spam=y|n (스팸메일에 대한 필터링을 할 것인지에 대한 옵션이다. 스팸어세신에
의해서 status 가 YES인 메일에 대해서는 반송을 하게
될것이다.)
--enable-spam-passthru=y|n
( 스팸 어세신에서 붙은 status값을
무시하고 그냥 통과시키고자 할 경우에 사용한다. 이는 나중에 procmail
이나 maildrop으로 스팸 편지함이나 별도의 디렉토리에 스팸 메일을 저장하고자 한다면
유용하게 사용될 수 있을 것이다.)
--enable-spam-hits=점수 (기본값으로 10 이
셋팅되며 스팸 어세신에서 정한 값을 넣으면 될 것이다.)
--enable-spamc=PTAH
(spamc 바이너리파일의 위치를 잡아준다. 자동으로
잡을것이다…^^)
--enable-spamc-args
(spamc 에 필요한 옵션을 지정할 수 있다.
필자의 경우에 퍼포먼스를 위해 spamd 를 소켓을 사용하게 하였으며 소켓의 위치는 /tmp/spamd 였다, 쌍따옴표로 지정한다는 점에 주의 하라)
Ex)
--enable-spamc-args=”-U /tmp/spamd”
--enable-dropmsg=y|n
(스팸 메일에 대한 메시지를 sender 에게
보내지 않겠다는 옵션이다.)
--enable-quarantinedir=디렉토리위치( 스팸,바이러스
메일을 따로 저장해둘 디렉토리를 지정한다)
--enable-received=y|n
( 메일헤더에 received를 추가할
것인지에 대한 옵션이다. 버전정보 및 처리시간이 기록되어진다.)
-필자의 경우의 configure
./configure
--enable-spam --enable-per-domain --enable-attach --enable-received=y
--enable-spamassassin-path=/usr/bin/spamassassin --enable-spam-hits=5.1
--enable-spamc-args=”-U /tmp/spamd”
컴파일 및 설치가 완료 되었다면 이제 큐메일의 run 파일을 고치도록 한다.
필자의 run 파일의
내용이다.
기존에 셋팅했던 큐메일 스캐너를 잠시 내렸다…^^;
#!/bin/sh
QMAILQUEUE="/var/qmail/bin/simscan"
#QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
Q_UID=`id -u
qmaild`
Q_GID=`id -g
qmaild`
exec
/usr/local/bin/softlimit -m 55000000 /usr/local/bin/tcpserver -vHRl 0 -x
/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd
spamgw.linuxstudy.pe.kr /bin/checkpassword /bin/true 2>&1
메일서버 재시작
메일 테스트
메일을 보내보고 도착한 메일을 열었을 때 헤더에 다음과
같은 라인이 존재하는지 확인해 보자
필자의 경우에 --enable-received=y
를 주었기 때문에
Received: by
simscan 1.1.0 ppid: 18392, pid: 18393, t: 0.0957s
scanners: clamav: 0.84rc1/m:30/d:813
spam: 3.0.2
가 있으며 스팸어세신의 점수를 5.1로 주었기 때문에 아래와 같이 헤더가 추가되어 있다.
X-Spam-Checker-Version:
SpamAssassin 3.0.2 (2004-11-16 ) on test
X-Spam-Level:
X-Spam-Status: No,
score=0.4 required=5.1 tests=AWL,NO_REAL_NAME autolearn=no
version=3.0.2
메일이 위의 헤더를 가지고 있다면 정상적으로 simscan이 작동한다.
-간단Tip-
Clamav 와의 연동시 퍼미션 문제가 나올 경우에 아래와 같이 clamav 유저를 simscan 의 그룹으로 추가해 준다.
Shell# usermod –G
imscan clamav
Enable-per-domain 옵션시 각 도메인 별로의 설정(simcontrol)
Shell# cat
/var/qmail/control/simcontrol
example.com:clam=no,spam=yes,attach=.mp3
:clam=yes,spam=yes,trophie=yes,spam_hits=20.1
첨부파일 필터링
Shell# cat
/var/qmail/control/ssattach
.exe
.jpeg
.pif
Qmail-scanner 와 simscan 의 장단점 비교
비교는 어디까지나 필자의 경험상으로 작성된 것이면 상황에
따라 또는 설정에 따라 얼마든지 달라질 수 있다.
-테스트 방법-
A 호스트에서 웹
프로그램으로 첨부파일 100k 짜리와 함께 간단한 메시지를 100통
발송
스캐너가 설치된 B 서버의
메일 메시지에 남은 시간을 계산하여 평균값을 냈다.
로컬 전송의 수치를 기본값과 100을 주었을 때를 비교해 보았다.
|
Simscan
|
Qmail-scanner
|
비고
|
메시지 처리시간 평균
|
1.6665
|
5.42134148
|
concurrencylocal의 기본값 사용
|
메시지 처리시간 평균
|
1.8093
|
5.25143428
|
Concurrencylocal값 100사용
|
로그 파일
|
별도 로그가 없음
smtp로그에 같이 남음 |
별도 로그 남기기 쉬움
|
Simscan의 경우에 별도로 sender 의 아이피 정보나 기타
필요한 정보를 따로 저장하지 않기 때문에 소스를 수정하던지 다른 방법으로 자동 필터링 시스템을 생각해야 할 것 같다.
|
전체적으로 c 로
작성된 simscan이 메시지
처리 능력에서는 다소 앞선 듯 보이기는 한다.
하지만
qmail-scanner 의 경우에는 perl로 작성되어 있어서 원하는 대로 쉽게 수정이
가능하다는 장점이 있을것이다.