simscan

목적
Qmail-scanner(perl)에 비해 c로 작성된 simscan 의 성능 테스트 및 장단점
perl scanner 사용시 서버의 로드가 많이 높아지는 부분을 해소해 보고자 함

다운로드 위치
http://sourceforge.net/projects/simscan/
필요한 것들
Ripmime(첨부파일을 필터링 하고자 한다면 필요하다)
Qmail-queue패치
Clamav(바이러스메일 체크)
Spamassassin
Trophie(or sophie)-옵션으로 설치 가능

– 설치 –
위의 다운로드 위치에서 소스를 다운로드 받는다.
먼저 clamav와 spamassassin을 설치하도록 한다.
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 simscan clamav

각 도메인 별 설정(simcontrol)
*enable-per-domain옵션을 주고 설치했을 경우에만 적용된다.

Shell# cat /var/qmail/control/simcontrol
postmaster@example.com:clam=yes,spam=no,attach=.txt:.com
example.com:clam=no,spam=yes,attach=.mp3
:clam=yes,spam=yes,spam_hits=20.1
Shell#/var/qmail/bin/simscanmk

첨부파일 필터링

Shell# cat /var/qmail/control/ssattach
.exe
.jpeg
.pif
.scr
.vbs

 

 

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로 작성되어 있어서 원하는 대로 쉽게 수정이 가능하다는 장점이 있을것이다.

stone has written 25 articles

Leave a Reply