2013년 11월 30일 토요일

[Linux] 큐메일을 이용한 웹호스팅용 POP + SMTP 메일

==========================================

         큐메일을 이용한 웹호스팅용 POP + SMTP 메일서버 구축하기

                             2001년 3월 28일 작성(REDHAT 6.2 기반)
                             2001년 7월 29일 수정(REDHAT 7.1 기반)
                             2001년 9월 5일 수정(오타,qmail-scanner설치법)

                             작성자 : 서진우 (alang@sysmng.com)

** 참고 사이트

http://qmail.kldp.org
http://kldp.org/~eunjae


===========================================

큐메일은 기존의 sendmail 을 대체하는 메일 전송 에이전트( MTA )로써 보다 안정하고
빠른 속도로 많이 알려져 있다. 하지만 어려운 설치 과정과 많은 설정파일때문에 일부
관리자들만이 사용하고 있다. 이런 큐메일에 몇가지 프로그램을 같이 사용하여 웹호스
팅용 메일 서버 패키지로 사용하고자 한다. 기존의 sendmail 에서 할수 없었던 많은
기능을 발휘할수 있을것이다.


1. 주요 기능

* 무한정(?) 도메인과 pop 메일 아이디를 발급할수 있다.
* 한개의 시스템 계정생성으로 모든 버츄얼 도메인,pop 계정을 만들수 있다.
( 불필요한 유저 생성을 막을수 있다. - 보안적인 측면에 유리 )
* 각 도메인 마다 메일 계정, 메일링 리스트의 한계를 설정할수 있다.
* 웹인터페이스로 메일 추가,삭제,메일링 및 각 도메인에 대한 메일 관리가 가능하다.
* 유저별 quota 설정이 가능하다.
* 각 도메인 관리자가 자기 도메인의 메일 계정 추가 삭제가 가능하다.
* 가상 메일 없이도 도메인 마다 똑같은 사용자 계정을 만들수 있다.

위의 내용은 웹호스팅용 메일 시스템으로 아주 유리한 기능들이다. 이밖에 다양한
기능들이 많이 있다.


2. 필요한 프로그램

qmail-1.03.tar.gz
qmail103.patch
rblsmtpd-0.70.tar.gz
ucspi-tcp-0.88.tar.gz
daemontools-0.70.tar.gz
autorespond-1.0.0.tar.gz
qmailadmin-0.42.tar.gz
vpopmail-4.9.10.tar.gz
ezmlm-0.53.tar.gz
ezmlm-idx-0.40.tar.gz


3. 설치

qmail 컴파일 설치

위 프로그램들을 모두 /usr/local/src/qmail 디렉토리 및에 옮겨두고 tar 를 푼다.
그리고 qmail 이 설치될 디렉토리를 만든다. 그런뒤 qmail103.patch 파일을
qmail-1.03 디렉토리 안에 둔다. 그런뒤 ..

[root@linux qmail]# cd qmail-1.03
[root@linux qmail]# patch < qmail103.patch
[root@linux qmail-1.03]# mkdir /var/qmail

INSTALL.ids 파일을 편집한다.(qmail 에 필요한 계정과 그룹들이다. 해당 OS에 맞추어
편집한다.)

[root@linux qmail-1.03]# vi INSTALL.ids
-----------------------------------------------------
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
-----------------------------------------------------

[root@linux qmail-1.03]# sh INSTALL.ids

qmail 관련 계정,그룹이 생성되었는지 확인한다.

[root@linux qmail-1.03]# cat /etc/passwd

컴파일 한다.

[root@linux qmail-1.03]# make
[root@linux qmail-1.03]# make setup check

기본 /var/qmail/control 및의 설정 파일의 설정을 위해 다음을 실행한다.

[root@linux qmail-1.03]# ./config

만일 여기서 정상적으로 실행되지 않으면 직접적으로 설정을 실행하는 방법을
사용한다. ( 단 DNS 에 문제가 있을수도 있다. )

[root@linux qmail-1.03]# ./config-fast test.net


qmail 을 위한 몇가지 부수적은 프로그램을 설치한다.

[root@linux qmail]# tar xzvf ucspi-tcp-0.88.tar.gz
[root@linux qmail]# cd ucspi-tcp-0.88
[root@linux ucspi-tcp-0.88]# make
[root@linux ucspi-tcp-0.88]# make setup check

Redhat 7.1 부터는 glibc 라이브러리에 큰 변화가 있기 때문 daemontools-0.70
과 rblsmtpd-0.70 을 그냥 컴파일 하면 error 가 발생한다. 컴파일전에 다음과
같이 소스를 수정해 준다.

[root@linux qmail]# tar xzvf daemontools-0.70-man.tar.gz
[root@linux qmail]# cd daemontools-0.70
[root@linux daemontools-0.70]# vi tai64nlocal.c
-------------------------------------------------------
처음 헤드 부분의 sys/time.h 를 time.h 로 수정한다.
-------------------------------------------------------

[root@linux daemontools-0.70]# make ; make setup check

[root@linux qmail]# tar xzvf rblsmtpd-0.70.tar.gz
[root@linux qmail]# cd rblsmtpd-0.70
[root@linux rblsmtpd-0.70]# vi Makefile
------------------------------------------------------------------

Makefile 화일 에서는

rblsmtpd: \
load rblsmtpd.o txt.o commands.o ip.o getopt.a strerr.a substdio.a \
stralloc.a alloc.a error.a case.a env.a str.a fs.a dns.lib socket.lib
        ./load rblsmtpd txt.o commands.o ip.o getopt.a strerr.a \
        substdio.a stralloc.a alloc.a error.a case.a env.a str.a \
        fs.a  `cat dns.lib` `cat socket.lib`

이부분을
rblsmtpd: \
load rblsmtpd.o txt.o commands.o ip.o getopt.a strerr.a substdio.a \
stralloc.a alloc.a error.a case.a env.a str.a fs.a dns.lib socket.lib
        ./load rblsmtpd txt.o commands.o ip.o getopt.a strerr.a \
        substdio.a stralloc.a alloc.a error.a case.a env.a str.a \
        fs.a  `cat dns.lib` `cat socket.lib` -L/usr/lib -lresolv
                                             ^^^^^^^^^^^^^^^^^^^ 이렇게
------------------------------------------------------------------


[root@linux rblsmtpd-0.70]# vi rblsmtpd.c
---------------------------------------------------------
rblsmtpd.c 에서는 맨위에
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
을 추가하시면 에러가 안날껍니다
---------------------------------------------------------

참고 : ucspi-tcp 0.86 이상부터는 rblsmtpd 가 포함되어져 있습니다.
따로 설치 하지 않아도 될거 같습니다. 오히려 설치하니깐..tcp.smtp 에서
제대로 smtp 기능을 재대로 인증하지 못하는거 같더군요..

autorespond 는 직접 컴파일 해야 한다.

[root@linux qmail]# tar xzvf autorespond-1.0.0.tar.gz
[root@linux qmail]# cd autorespond-1.0.0
[root@linux autorespond-1.0.0]# gcc -Wall -o autorespond autorespond.c
[root@linux autorespond-1.0.0]# cp autorespond /usr/local/bin/


모두 이상없이 설치가 되었다면 다시 qmail 을 위해 파일을 만든다.

[root@linux qmail]# vi /var/qmail/rc
----------------------------------------------------------------

#!/bin/sh
exec env - PATH='/var/qmail/bin:$PATH' \
qmail-start ./Maildir/ splogger qmail

----------------------------------------------------------------

[root@linux qmail]# chmod a+x /var/qmail/rc

다음은 큐메일 데몬을 위한 디렉토리와 파일들을 생성.

mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd

/var/qmail/supervise/qmail-send/run 의 내용
------------------------------------------
#!/bin/sh
exec /var/qmail/rc

/var/qmail/supervise/qmail-send/log/run 의 내용
----------------------------------------------
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

/var/qmail/supervise/qmail-smtpd/run 의 내용
-------------------------------------------
#!/bin/sh
ALIAS_UID=`id -u alias`
ALIAS_GID=`id -g alias`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb \
-u $ALIAS_UID -g $ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

/var/qmail/supervise/qmail-smtpd/log/run 의 내용
-----------------------------------------------
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
/var/log/qmail/smtpd

이렇게 편집한 파일들에 실행 권한을 준다.

chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run


다음은 qmail-smtpd 를 위한 로그 디렉토리 만들기

mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd

다음 파일에는 qmail smtp 데몬이 메일을 중계할 주소를 적어주는 것이다.
211.201.133.135 은 당연히 설치할 서버의 주소로바꿔야 한다.
그외 메일을 중계 해줄 서버의 주소가 있다면 같은 형식으로 추가한다.

vi /etc/tcp.smtp
------------------------------------------
127.0.0.1:allow,RELAYCLIENT=''
211.201.133.135:allow,RELAYCLIENT=''
------------------------------------------

후에 이 파일에 변경이 있는 경우 다음의 qmail 부트 스크립트를 이용해 다음과
같이 한다.

/etc/rc.d/init.d/qmail cdb


알리아스 설정

만약 주 도메인의 메일 계정들도 모두 vpopmail 로 관리할 것이 아니라면
(필자는 주 도메인의 메일 계정들도 모두 vpopmail로 관리할것을 권장한다.)
몇가지 알리아스를 설정해 준다. 여기서 silver 는 root, postmaster 등으로 오는
메일을 받을 일반계정이다.

cd ~alias
echo alang > .qmail-mailer-daemon
echo alang > .qmail-postmaster
echo alang > .qmail-root

qmail 부트 파일

다음은 qmail 데몬의 부트 스크립트이다. /etc/rc.d/init.d/qmail 로 만들어준다.

vi /etc/rc.d/init.d/qmail
------------------------------------------------------------------

#!/bin/sh
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 80 80
# description: sendmail을 대체하는 빠르며, 안정적이고, 유연한 MTA

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = 'no' ] && exit 0

PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH

case '$1' in
  start)
    echo -n 'Starting qmail: svscan'
    cd /var/qmail/supervise
    env - PATH='$PATH' svscan &
    echo $! > /var/run/svscan.pid
    echo '.'
    ;;

  stop)
    echo -n 'Stopping qmail: svscan'
    kill `cat /var/run/svscan.pid`
    echo -n ' qmail'
    svc -dx /var/qmail/supervise/*
    echo -n ' logging'
    svc -dx /var/qmail/supervise/*/log
    echo '.'
    ;;
  stat)
    cd /var/qmail/supervise
    svstat * */log
    ;;
  doqueue|alrm)
    echo 'Sending ALRM signal to qmail-send.'
    svc -a /var/qmail/supervise/qmail-send
    ;;
  queue)
    qmail-qstat
    qmail-qread
    ;;
  reload|hup)
    echo 'Sending HUP signal to qmail-send.'
    svc -h /var/qmail/supervise/qmail-send
    ;;
  pause)
    echo 'Pausing qmail-send'
    svc -p /var/qmail/supervise/qmail-send
    echo 'Pausing qmail-smtpd'
    svc -p /var/qmail/supervise/qmail-smtpd
    ;;
  cont)
    echo 'Continuing qmail-send'
    svc -c /var/qmail/supervise/qmail-send
    echo 'Continuing qmail-smtpd'
    svc -c /var/qmail/supervise/qmail-smtpd
    ;;
  restart)
    echo 'Restarting qmail:'
    echo '* Stopping qmail-smtpd.'
    svc -d /var/qmail/supervise/qmail-smtpd
    echo '* Sending qmail-send SIGTERM and restarting.'
    svc -t /var/qmail/supervise/qmail-send
    echo '* Restarting qmail-smtpd.'
    svc -u /var/qmail/supervise/qmail-smtpd
    ;;
  cdb)
    tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    chmod 644 /etc/tcp.smtp*
    echo 'Reloaded /etc/tcp.smtp.'
    ;;
  help)
    cat << HELP
   stop -- stops mail service (smtp connections refused, nothing goes out)
  start -- starts mail service (smtp connection accepted, mail can go out)
  pause -- temporarily stops mail service (connections accepted, nothing leaves)
   cont -- continues paused mail service
   stat -- displays status of mail service
    cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
  queue -- shows status of queue
   alrm -- same as doqueue
    hup -- same as reload
HELP
   ;;
  *)
    echo 'Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}'
    exit 1
    ;;
esac

exit 0
------------------------------------------------------------------


vpopmail 설치

vpopmail 은 가상 도메인 추가, 설정, pop 유저 설정과 pop3 데몬등의 기능을 한다.

컴파일과 설치

설치하기 전에 vpopmail 이 사용할 유저와 그룹을 만든다.

groupadd vchkpw
useradd -g vchkpw vpopmail

vpopmail 을 설치하자.

tar xzf vpopmail-4.9.10.tar.gz
cd vpopmail-4.9.10

MySQL 사용하지 않을 경우

설치시 몇가지 옵션이 있는데 자세한것은 vpopmail faq 를 읽어보도록.
보통 다음 옵션만 주고 컴파일 하면 된다.

./configure --enable-default-domain=test.net
make
make install-strip



MySQL을 사용 할 경우

MySQL db를 사용하려 한다면, 컴파일 하기전에 먼저 vmysql.h 를 열어서
sql 서버를 억세스할수 있는 user와 암호등을 설정해 주어야 한다.
테이블을 생성/삭제 할수 있는 사용자 이여야하므로 보통 root 나 해당 유저로
설정해 준다.

./configure --enable-default-domain=test.net --enable-mysql=y \
   --enable-sqlincdir=/usr/local/mysql/include/mysql \
   --enable-sqllibdir=/usr/local/mysql/lib/mysql

make
make install-strip


이때 --enable-large-site=n|y 옵션을 사용할수도 있는데 이것은, 디폴트로 vpopmail
은 모든도메인, 유저 정보를 한개의 테이블에서 관리한다. 만약 각각의 도메인에
많은 메일유저가있다면 y 로 설정하면, vpopmail은 도메인별로 테이블을 생성,유저
정보를 관리한다.

만약 sql 헤더파일이나 라이브러리를 찾지 못한다며 컴파일에 실패한다면,
--enable-sqlincdir= sql 헤더파일 경로. --enable-sqllibdir= sql 라이브러리
경로 등을 ./configure 할때 추가 해준다.

위의 예에서 test.net 는 주 서버의 도메인 이름이다. 이것을 설정하면 주서버의
메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다.
(이렇게 하는 것을 권장한다)

설치가 되었다면 ~vpopmail 안에는

bin
doc
domains
etc
include
lib
users
등의 디렉토리과 필요한 바이너리들이 생겼을 것이다.



pop3 데몬 시동 파일

vpopmail 의 pop3 데몬 시동 파일을 /etc/rc.d/init.d 에 만든다.

#!/bin/sh
env - PATH='/var/qmail/bin:/usr/local/bin' \
tcpserver 0 pop-3 /var/qmail/bin/qmail-popup test.net \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &

위와 같은 파일을 pops 등의 이름으로 만들고 실행퍼미션을 주고 부팅시 켜질수
있도록 한다. 방법은 밑에...


도메인, 메일 계정 추가하기

~vpopmail/bin 디렉토리 안에 가상 도메인 관리를 위한 바이너리들이 있는데
다음과 같은 기능을한다.

표 1. 각 바이너리들의 용도

vadddomain :
가상 도메인을 추가한다. postmaster 암호를 물어보는데 이것은 다음에
설치할 qmailadmin 웹 인터페이스에서 로그인 할때 물어볼 암호이다.
형식은  [ vadddomain 도메인명 ]

vdeldomain :
가상 도메인과 모든 유저를 삭제한다. vdeldomain 도메인명

vadduser :
pop 메일 유저 계정을 만든다.  [ vadduser alang@test.net ]

vdeluser :
pop 메일 유저 삭제. [ vdeluser alang@test.net ]

vpasswd :
메일 유저의 암호 바꾸기 [ vpasswd alang@test.net ]

vsetuserquota :
각 유저 별로 quota 설정을 할수 있다. [ vsetuserquota alang@test.net 51200 ]
(단위는 byte 이다).
vpopbull :
서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼때 유용하게 사용할수
있다.  


이제 도메인을 추가하자. 위에서 주 도메인도 vpopmail에서 관리하기로 했다면
주 도메인과 메일 계정들도 추가해야 한다.

만약 주 도메인이 test.net 이고, 추가할 가상 도메인이 zzang911.org,
zzang911.co.kr 라고 한다면 다음과 같이 한다
(추가하기 전에 가상 도메인들의 DNS MX 레코드의 IP주소가 주 서버로 되어있는지
확인 해보자).

vadddomain test.net
vadddomain tru64unix.co.kr

재대로 설정파일이 변경이 되었는지 확인해 보자.

cat /var/qmail/control/locals
------------------------------------------------
localhost

주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의
내용은 localhost 만이 있어야 정상이다. 다른것이 있으면 지운다.


cat /var/qmail/control/virtualdomains
-----------------------------------------------
test.net:test.net
tru64unix.co.kr:tru64unix.co.kr

cat /var/qmail/users/assign
-----------------------------------------------
+test.net-:test.net:515:510:/home/vpopmail/domains/test.net:-::
+tru64unix.co.kr-:tru64unix.co.kr:515:510:~vpopmail/domains/tru64unix.co.kr:-::

sendmail 에서 qmail 로의 전환

모든 설정이 확실히 되었다고 생각이 들면 sendmail을 죽이고 qmail로 전환한다.

/etc/rc.d/init.d/sendmail stop : sendmail 죽인다.

이제 기존의 sendmail 바이너리를 qmail 의 것으로 바꾼다.

mv /usr/lib/sendmail /usr/lib/sendmail.old
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
ln -s /var/qmail/bin/sendmail /usr/lib
ln -s /var/qmail/bin/sendmail /usr/sbin

/etc/rc.d/init.d/qmail start : qmail 가동  
/etc/rc.d/init.d/pops : pop 가동

일일이 위 두 데몬을 띄우기 싫으시면 하나의 qmailstart 라는 간단한 스크립트를
만들고 이것을 /etc/rc.d/rc.local 및에 추가하여 부팅때 마다 실행하도록 한다.

vi /etc/rc.d/init.d/qmailstart
-----------------------------------------------
/etc/rc.d/init.d/qmail start
/etc/rc.d/init.d/pops

이로써 MS 의 아웃룩이나 Netscape 의 메일메신져 에서 메일을 받아보실수가 있다.
여기서 주의 할것.

주 도메인 이외의 도메인 pop3 메일 계정 사용자들은 메일 클라이언트의
유저 이름을 my_id@babo2.com 과 같이 아이디@도메인명 으로 모두 써주어야
pop 로긴이 가능하다.


qmailadmin 설치


qmailadmin 설치시에는 vpopmail 을 mysql 사용 안함으로 설치 하세요.

/usr/local/src/qmail 가서

tar xzf ezmlm-0.53.tar.gz
tar xzf ezmlm-idx-0.40.tar.gz
mv -f ezmlm-idx-0.40/* ezmlm-0.53/
cd ezmlm-0.53
patch < idx.patch
make
make man
make setup

ezmlm 은 /usr/local/bin/ezmlm/ 에 설치될 것이다.

qmailadmin 설치

tar xvzf qmailadmin-0.3x.tar.gz
cd qmailadmin-0.3x


./configure 에 몇가지 옵션이 있다. 서버의 설정이 디폴트와 다른 경우 설정해 주자.

--enable-cgibindir : qmailadmin 이 설치될 디렉토리이다.
                      웹서버가 사용중인 cgi-bin 디렉토리를 적어준다.
                      디폴트는 /usr/local/apache/cgi-bin 이다.

--with-htmllibdir  : qmailadmin 의 html 템플레이트 파일 (당연히 이 파일들은
                      후에 입맛에 맞게 수정할수 있다.)들이 저장될 장소이다.
                      그냥 디폴트로 나두어도 된다. (/usr/local/share/qmailadmin)

--enable-cgipath   : 사용중인 웹서버의 cgi path가 /cgi-bin/ 이 아닌 경우
                      설정해준다. 디폴트는 /cgi-bin/qmailadmin 이다.


make
make install-strip



설치가 잘 되었는지 브라우저로 접속해본다.
http://localhost/cgi-bin/qmailadmin

* qmailadmin 설치 팁..

만일 특정 멀티도메인으로 qmailamdin 을 설치하고자 할때의 예제이다.
여기서 전 vpopmail 계정에 qmailadmin 까지 합쳐서 관리하고자 한다.
그리고 mail.domain.com 이란 도메인으로 접속하고자 한다.
먼저 소스를 풀고 ..그 소스 디렉토리로 이동한다. 그런뒤...

# ./configure --enable-cgibindir=/home/vpopmail/www/cgi-bin \
--with-htmllibdir=/home/vpopmail/www --with-htmldir=/home/vpopmail/www \
--enable-cgipath=/cgi-bin/qmailadmin.cgi

# make
# make install-strip

일단 설치는 완료되었다..하지만 /home/vpopmail/www/cgi-bin 로 가보면 qmailadmin
파일을 그냥 웹에서 띄울려면 여러가지 시스템 설정을 다시 해야한다..그리고 보안
에도 문제가 발생할수 있다. 그러니...다음과 같이 하자..

# cd ~vpopmail/www/cgi-bin
# cp -a qmailadmin qmailadmin.cgi
# ln -s qmailadmin.cgi index.cgi

그런뒤 간단한 웹서버 설정을 해준다.

# ScriptAlias /cgi-bin/ '/usr/local/apache/cgi-bin'
이부분의 주석을 확인하고...

qmailadmin 에 사용될 도메인을 버추얼로 하나 잡는다.

그런뒤 웹페이지에서 http://mail.domain.com/cgi-bin/index.cgi 로 접속하자..
무사히 페이지가뜨면 성공~~

그런데..이마 간단한 인증 폼만 나올것입니다. 그냥 기본 설치 하면..이쁜(?)이미지
와 함께 나오는데..이미지는 나오지 않을 경우에...이미지가 들어 있는 디렉토리가
/usr/local/apache/htdocs/images/qmailadmin 이 경로에 들어가기 때문입니다.
이때는 images/qmailadmin 디렉토리를 ~vpopmail/www 안에 복사해 주면 됩니다.

이제 원하는 도메인과 postmaster의 암호를 넣으면 로그인해서 여러가지 설정을
편안하게 할수있다.


4. 관리 하기

도메인 추가후

qmail 과 vpopmail 이 돌아가고 있는 상태에서 vadddomain 으로 도메인을 추가했다면
/etc/rc.d/init.d/qmail reload 또는 kill -HUP 시그날을 qmail-send 에게 보내서
/var/qmail/user 설정 파일을 다시 읽도록 해야 한다.

알리아스와 포워드 계정

알리아스와 포워드 계정은 거의 비슷한 기능을 하는데 다른점은 알리아스는 이 서버
에 존재하는 메일 계정에 다른 이름을 여러게 설정하는 것이고, 포워드 계정은 도착
한 메일을 설정해 놓은 다른도메인의 메일 계정(들)로 보내는 것이다.

다음 설정 과정을 보면 이해가 쉬울것이다.

qmailadmin 에서는 쉽게 설정 할수 있겠고, 만약 qmailadmin 을 설치하지 않은 경우
다음과 같이 한다.

# 알리아스

silver 라는 팝 메일 계정이 존재하고, webmaster 라는 알리아스를 만드는 경우.
해당 도메인 디렉토리(~vpopmail/domains/도메인/)에 다음과 같은 내용의
.qmail-webmaster 파일을 만든다.

/home/vpopmail/domains/도메인/silver/Maildir/

이제 webmaster 로 오는 메일은 silver 가 받을 것이다.


# 포워드

silver 로 오는 메일을 babo@kldp.org 라는 다른 도메인으로 포워딩 해줄때.

해당 도메인 디렉토리(~vpopmail/domains/도메인/)에 다음과 같은 내용의
.qmail-alang 파일을 만든다.

&alang@kobis.net

이제 이 도메인의 alang 으로 오는 메일들은 alang@kobis.net 로 보내질 것이다.

# 각 도메인마다 메일 계정, 메일링 리스트 수 한계 정하기

이것은 웹 호스팅 업체에서 qmailadmin 으로 각 유저들에게 사용중인 도메인의
메일 설정을 직접 하게 해줄때 매우 유용하게 쓰일수 있을것이다.

각 도메인마다 메일,메일링 리스트의 설정 한계를 줄수 있는데, 이것은
~vpopmail/domains/도메인/ 에 .qmailadmin-limits 파일을 만들어 주면 된다.
형식은 다음과같다.

maxpopaccounts          X
maxaliases              X
maxforwards             X
maxmailinglists         X
maxautoresponders       X

X 는 해당 도메인이 사용할수 있는 최대한의 수를 넣어주면 되겠다.

# bounce 되는 메일에 메세지 넣기

해당 도메인으로 수신되는 메세지가 바운스 되는 경우가 있는데 보통, 팝 유저의
쿼타 용량이한도를 넘었거나, 유저가 존재하지 않을 경우이다.

다음과 같은 파일을 만들어 각 가상 도메인의 디렉토리에 넣어 놓으면 바운스 되는
메일들에포함되어 되돌려 지며 당신은 센스있는 관리자가 된다 :-)

.over-quota.msg 에는 메일 유저의 쿼타 용량이 초과 되었으므로 메일 수신을 할수
없다는메세지를.

.no-user.msg 에는 우리 도메인엔 그런 메일 계정 없지롱 하는 내용의 메세지를
넣어 두면 된다.

이 파일들이 없다면 vpopmail은 바운스되는 메일에 뻣뻣한 영문 메세지 만을 포함
시킨다.


5. ezmlm 으로 메일링 보내기

메일링 테스트를 해보도록 하자.

먼저 ~ezmlm/bin 로 간다.
그런뒤 메일링 리스트의 메일링 대표 아이디를 생성한다.

./ezmlm-make [대표도메인디렉토리/대표아이디]
             [대표도메인디렉토리/.qmail-대표아이디]
             [대표아이디 domain]

예)

$ ./ezmlm-make /home/vpopmail/domains/test.net/mailling \
   /home/vpopmail/domains/test.net/.qmail-mailling mailling test.net

그 다음으로 메일링 리스트의 리스트를 작성한다.

$ ./ezmlm-sub /home/vpopmail/domains/test.net/mailling alang@test.net

위와 같은 식으로 계속 추가 하면 된다.
추가된 리스트 확인은 ezmlm-list 명령어로 가능하다.

$ ./ezmlm-list /home/vpopmail/domains/test.net/mailling

자 이제 메일링을 보내 보도록 하자.

mail -v mailling@test.net

메일링이 재대로 이루어 졌는지 확인하면 된다.

주의 : 꼭 vpopmail 사용계정으로 메일링 리스트 설정을 해야 합니다.
root 로 하였을 경우 메일링이 발송 안되는 수도 있습니다.


이와 같이 설치후에 요즘 메일로 전파되는 여러가지 바이러스등을 필터해내줄수
있는 툴을 설치해야 합니다. 웹호스팅 서버에서는 smtp 를 통합하는 경우가 많은
데..이때 메일바이러스가 한번 떴다하면..거의 smtp 서버는 마비 됩니다.
큐에 쌓이는 메일만해도 1시간에 5G 정도 쌓이더군요. 사용량에 따라 조금씩 다
르겠지만..아무튼..웹호스팅에서 스캐너는 필수라고 할수 있습니다.
이제 설치법에 들어 가도록 하겠습니다.


큐메일 스캔너 설치 ( Qmail-scanner Install )

참조 : http://qmail-scanner.sourceforge.net/

큐메일 설치전에 몇가지 패치와 연동프로그램을 설치해야 한다.

   * Perl 5.005_03+ 이상 버젼 설치
   * Perl module Time::HiRes 모듈 설치
   * Maildrop 0.73 이상 버젼 설치
   * Qmail 1.03 에 QMAILQUEUE patch 를  해야 한다.

위의 몇가지 사항을 만족해야 qmail-scanner 이 무사히 설치가 된다.
perl 은 기본적으로 설치가 되어져 있을것이다. 없다면...

rpm -Uvh perl-* 로 설치한다.
그런후 Time::HIRes 모듈을 설치한다.
먼저 http://search.cpan.org/doc/JHI/perl-5.7.2/ext/Time/HiRes/HiRes.pm 에서
HiRes.pm 파일을 다운 받고..그 디렉토리에서 ...

# perl -e 'use CPAN; install Time::HiRes'

그럼...이것저것 물어보면서 자동으로 설치를 한다.
그런 후 http://download.sourceforge.net/courier/ 에서 maildrop 를 다운 받아
설치 한다.

# ./configure [options]
# make
# make install-strip
# make install-man

http://www.qmail.org/qmailqueue-patch 이곳의 qmailqueue-pathch 파일을 다운
받고 qmail 소스를 패치 시킨다.

# tar xzvf qmail-1.03.tar.gz
# patch -p0 < qmailqueue-patch

그런뒤 멋지게 큐메일을 설치한다.


그런후 qmail-scanner 를 설치한다. 설치전에
suidperl 의 퍼미션 등을 점검한다. 보안상 막아놓았다면  풀어주자.
염려되면..alias 계정을 wheel 등의 그룹에 추가하여 일정 사용자에게만 풀
어주자..

# chgrp wheel /usr/bin/suidperl
# chmod 4710 /usr/bin/suidperl


# ./configure --install

하시면 알아서 필요한 팻키지들을 점검한후 설치를 해버린다.
혹시 unzip 이나 기타 다른 팻키지가 없을때 어디가서 다운 받아서 깔아라고
친절하게 가르쳐 주니 그대로 필요 팻키지를 설치한고 다시 시도한다.

이제 설치가 완료되었으면...

/var/qmail/bin/qmail-scanner-queue.pl 가 생성되어 있을것이다.
그리고 ../var/spool/qmailscan 이란 디렉토리가 생성되어져 있을것이다.
이제 몇가지 환경 변수 지정 및 설정을 해주면 된다.

# vi /var/qmail/supervise/qmail-smtpd/run  을 열고 아래와 같이 설정을
변경해 준다.

#!/bin/sh
QMAILQUEUE='/var/qmail/bin/qmail-scanner-queue.pl'
export QMAILQUEUE
ALIAS_UID=`id -u alias`
ALIAS_GID=`id -g alias`
exec /usr/local/bin/softlimit -m 6000000 \
/usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb -u $ALIAS_UID -g \
$ALIAS_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

* softlimit 값을 기본 2000000 정도로 잡는데...3배 정도로 반드시 올려줘라

그런후 /var/spool/qmailscan 으로 가서 quarantine-attachments.txt 에 필터 대상
헤드 내용을 추가해 줘라..요즘에 유행하는 sircam 바이러스 필터 헤드는 다음과
같다.

Multipart message   Virus-Content-Disposition:  Sircam.worm Virus

* Multipart message 와 Vireus-Comtent-Dispositon: 과 Sircam.worm Virus 사이는
모두 [TAB] 이다.

추가로

.pif    0   Sircam Virus(.pif)

헤드문도 추가 해준다.

이와 같이 주정후 꼭 다음 명령어를 실행해 준다.

# /var/qmail/bin/qmail-scanner-queue.pl -g

이제 테스트 해보자

설치 소스가 있는 디렉토리로 가서 하위의 contrib 디렉토리로 가면 다음 테스트
스크립트가 있다. 실행하면 된다.

# ./test_installation.sh -doit

이제 /var/spool/qmailscan 으로 가셔 ..

viruses.log 를 보면..

04/08/2001 16:30:15     root@zzang911.net   Qmail-Scanner viral
test: checking perlscanner...   EICAR Test Virus

아래와 같은 메세지가 있을것이다. 잘 걸려 낸다..

실제로 필터된 메일은.../var/spool/qmailscan/viruses 안에 저장되고 실제 수신처로
전달되진 않는다..보낸사람에겐 바이러스성 메일이라는 경보성 메일을 보낸다.

이걸루..qmail-scanner 설치가 완료되었다.

댓글 없음:

댓글 쓰기