http://qmail.kldp.net/wiki/wiki.php/qmail_antispam


http://mediakorea.net/sirboard/board_view.php?sm_id=JSPstudy&sb_id=558&search_category=&search_select=&search_text=&search_op=&page=15&next_num=

http://hatsari.egloos.com/2066595


Qmail을 이용한 SMTP 운용

Qmail을 이용한 SMTP 운용

1.qmail, spamGuard 설치
qmail 설치(qmail-scanner, smtp-auth 포함) :
http://qmail.kldp.org/ 

spamGuard 설치는 이전글을 참조하세요!!! ^^

큐메일 설치시 리눅스 설치 후 퍼미션을 변경하지 않고 설치해야 합니다.

2. qmail 운용

2.1 첨부파일 용량
/var/qmail/control/databytes 에 바이트 단위로 입력합니다. 실제 첨부 가능 용량은 설정 용량의 70% 정도로 보면 됩니다. 설정 후 /etc/init.d/qmail reload or restart

2.2 동시 접속자 수 제한
# cat /var/qmail/supervise/qmail-smtpd/run
1 #!/bin/bash
2 QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
3 export QMAILQUEUE
4 ALIAS_UID=`id -u alias`
5 ALIAS_GID=`id -g alias`
6 exec /usr/local/bin/softlimit -m 9000000
7 /usr/local/bin/tcpserver -v -p –c200 -x/etc/tcp.smtp.cdb -u $ALIAS_UID -g $ALIAS_GID 0 25
8 /var/qmail/bin/qmail-smtpd webmail.kobis.net
9 /bin/cmd5checkpw /bin/true 2>&1

7번 라인의 –c100 을 변경하고 재시작하면 됩니다. 만약 설정하지 않는다면 기본값은 40입니다.

2.3 동시 처리량 제한
# cat /var/qmail/control/concurrencyremote
50
동시 처리량을 제한하고자 하면 값을 적절히 변경해 주면 됩니다. 로컬에서 발송되는 메일에 대한 처리량은 /var/qmail/control/concurrencylocal 에 설정하면 됩니다.
concurrencyremote는 값은 동시 메일 발송량 즉 참고인 수와 관련이 있는 것 같습니다.

기타 설정 파일에 대한 설명은 다음 표를 참조하시기 바랍니다.

Control 파일 Default 사용 설명
rcpthosts 없음 qmail-smtpd 메일을 받아들일 도메인(들)
badmailfrom 없음 qmail-smtpd 이 메일주소로 부터 오는 메일은 553 sorry, your envelope sender is in my badmailfrom list 라는 메세지와 함께 무조건 User unknown으로 bounce 한다.
bouncefrom MAILER
-DAEMON qmail-send bounce 할때 메일의 from: 헤더에 들어갈 유저 이름.
bouncehost me qmail-send bounce 할때 메일의 from: 헤더에 들어갈 호스트 이름.
concurrencylocal 10 qmail-send 로컬 메일 배달시 qmail-send의 동시 최대 프로세스의 수를 조절
concurrencyremote 20 qmail-send 리모트 메일 배달시의 qmail-send 동시 최대 프로세스 수를 조절
databytes 0 qmail-smtpd 메일의 최대 크기(byte, 0 = 무제한)
doublebouncehost me qmail-send double bounce 된 메일을 수신할 호스트
doublebounceto postmaster qmail-send double bounce 된 메일을 받을 유저
envnoathost me qmail-send 메일주소에 @ 가 명시되지 않았을 경우의 디폴트 도메인 이름
helohost me qmail-remote SMTP HELP 명령에 표시될 호스트 이름
localiphost me qmail-smtpd 로컬 IP 주소가 대체될 이름
locals me qmail-send 로컬로 인식하며 배달할 도메인(들)
me 시스템의 FQDN   다른 콘트롤 파일을 위해 쓰임
morercpthosts 없음 qmail-smtpd 두번째 rcpthosts 파일
percenthack 없음 qmail-send "%"-형식의 릴레이를 사용 할 수 있는 도메인
plusdomain me qmail-inject domain substituted for trailing "+"
qmqpservers 없음 qmail-qmqpc QMQP 서버의 IP 주소
queuelifetime 604800 qmail-send 메세지가 메일 큐안에 머물 수 있는 시간 (초단위)
smtpgreeting me qmail-smtpd SMTP greeting message
smtproutes 없음 qmail-remote artificial SMTP routes
timeoutconnect 60 qmail-remote SMTP 연결 대기 시간 (초)
timeoutremote 1200 qmail-remote 리모트 서버 연결 대기 시간 (초)
timeoutsmtpd 1200 qmail-smtpd SMTP client 대기 시간 (초)
virtualdomains 없음 qmail-send 가상 도메인들과 유저들
defaultdomain me qmail-inject 기본 도메인 이름
defaulthost me qmail-inject 기본 호스트 이름
idhost me qmail-inject Message-ID 에 사용될 호스트 이름

2.4 특정 도메인 발송 제한
/var/qmail/control/badmailfrom에 해당 이메일이나 도메인을 추가하고 큐메일을 재시작할 필요는 없습니다.
[email protected] <- 메일 주소
@nospam.com < - 도메인

2.5 메일큐 삭제
qmHandle이라는 프로그램을 이용해서 서버에 쌓인 큐를 삭제할 수 있습니다.
/var/qmail/bin/qmHandle에 존재합니다.
사용법:
qmHandle v1.0.0
by Michele Beltrame
-l : 리스트 보기
-L : 로컬 큐 보기
-R : 리모트 큐 보기
-s : 상태 보기
-vN : 해당 번호의 메시지 보기
-dN : 해당 번호의 메시지 삭제
-D : 리모드&로컬 모든 큐 삭제
Additional (optional) parameters are:
-c : 컬러 출력
-N : 해당 번호의 메시지 보기
(-l, -L or –R 함께 사용 가능함)

2.6 메일 서버 인증 에러 메시지 편집
# cat /usr/local/src/qmail/qmail-1.03/qmail-smtpd.c
/* void err_nogateway() { out("553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)rn"); } */
void err_nogateway() { out("553 보내는 메일 서버에 접속 중 인증 에러가 발생하였습니다. 보내는 메일 서버 인증을 요청하시기 바랍니다. 감사합니다. Tel: 02-xxxx-0xxx, Email: [email protected] (#5.7.1)rn"); }
수정이 끝났으면 큐메일을 멈춘 후 make clean && make setup check 로 재컴파일 설치해 주면 됩니다.

2.7 인증 아이디 패스워드 설정
# cat /etc/poppasswd

smtp_id:smtp_password

위와 같이 아이디:패스워드 방식으로 추가하시면 됩니다.

3. qmailscanner 운용
3.1 rule 적용
# cat /var/spool/qmailscan/quarantine-attachments.txt

.pif 0 PIF files not allowed per Company security policy
첨부파일 확장자가 .pif이고 사이즈가 0인 메일을 필터링합니다. 실제 사이즈가 정확히 체크되지 않는 관계로 불필요한 확장자를 제한하는 방식이 됩니다.

# [email protected]
.*Re: Your password!.* Virus-Subject: Your message may contain [email protected]
제목에 해당 문자열이 있을 경우입니다.

# Refuse to Portal Siteㅁ
.*@hanmail.net.* Virus-RCPTTO: 한메일 메일 발송 불가…..
수신지 메일 주소로 메일을 필터링합니다.

룰 추가시 주의하실 점은 센드메일과 마찬가지로 각 필드는 탭으로 구분해야 합니다.

룰 추가 후 데이터 베이스를 생성한 후 큐메일을 재시작합니다.
# /var/qmail/bin/qmail-scanner-queue.pl -g
perlscanner: generate new DB file
perlscanner: total of 20 entries.

3.2 바이러스 로그 삭제
다음과 같이 크론에 등록하여 바이러스 로그를 주기적으로 삭제합니다.
0 5 * * * /bin/rm -rf /var/spool/qmailscan/viruses/new/* > /dev/null 2>&1
7 5 * * * echo > /var/spool/qmailscan/qmail-queue.log > /dev/null 2>&1

3.3 바이러스 알림 메일 삭제
바이러스에 감염된 메일이 발송될 경우 발송자 및 root에게 메일이 발송됩니다. 따라서 root, postmaster로 오는 메일을 postman이라는 계정을 생성 후 해당 계정의 메일을 주기적으로 삭제합니다.

포워딩 설정
# ls –al /home/vpopmail/domains/mail.kobis.net
drwx------ 6 vpopmail vchkpw 4096 Apr 23 11:43 .
drwx------ 3 vpopmail vchkpw 4096 Apr 23 11:20 ..
-rw------- 1 vpopmail vchkpw 34 Apr 23 11:42 .dir-control
drwx------ 3 vpopmail vchkpw 4096 Apr 23 11:25 kobis
drwx------ 3 vpopmail vchkpw 4096 Apr 23 11:42 postman
drwx------ 3 vpopmail vchkpw 4096 Apr 23 11:20 postmaster
-rw------- 1 vpopmail vchkpw 55 Apr 23 11:20 .qmail-default
-rw-r--r-- 1 root root 24 Apr 23 11:43 .qmail-postmaster
-rw-r--r-- 1 root root 24 Apr 23 11:43 .qmail-root
drwx------ 3 vpopmail vchkpw 4096 Apr 23 11:25 root
-rw------- 1 vpopmail vchkpw 462 Apr 23 11:42 vpasswd
-rw------- 1 vpopmail vchkpw 2598 Apr 23 11:42 vpasswd.cdb
-rw------- 1 vpopmail vchkpw 0 Apr 23 11:42 .vpasswd.lock

여기서 .qmail-root, .qmail-postmaster 파일에 포워딩 설정을 합니다.
# cat /home/vpopmail/domains/mail.kobis.net/.qmail-root
&[email protected] 

postman에게 오는 메일을 크론에 등록하여 주기적으로 삭제합니다.
*/5 * * * * /bin/rm -rf /home/vpopmail/domains/mail.kobis.net/postman/Maildir/new/* > /dev/null 2>&1

4. spamGuard 운용
위 설치 문서를 참고하시면 되면 주기적으로 메일 로그를 감시하도록 크론에 등록해 줍니다.
# spamGuard설정
*/5 * * * * /usr/local/bin/spamGuard -w 100 -b 210 -p 1000 > /dev/null 2>&1

출처 : http://applewer.chonnom.com/2011/01/qmail-smtp.html
2013/03/20 11:58 2013/03/20 11:58

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다