[메일] 큐메일을 이용한 POP + SMTP 메일서버 구축하기 ( Redhat9 )

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

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

                             2001년 3월 28일 작성(REDHAT 6.2 기반)

                             2001년 7월 29일 수정(REDHAT 7.1 기반)

                     2004년 9월 9일 수정 (REDHAT 9.0 기반)

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

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

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

참고로 본 문서는 기존 문서(REDHAT7.1)에서 REDHAT9.0 상황에 맞게 수정한 문서입니다.

1. 주요 기능

* 무한정(?) 도메인과 pop 메일 아이디를 발급할수 있다.

* 한개의 시스템 계정생성으로 모든 버츄얼 도메인,pop 계정을 만들수 있다.

( 불필요한 유저 생성을 막을수 있다. – 보안적인 측면에 유리 )

* 각 도메인 마다 메일 계정, 메일링 리스트의 한계를 설정할수 있다.

* 웹인터페이스로 메일 추가,삭제,메일링 및 각 도메인에 대한 메일 관리가 가능하다.

* 유저별 quota 설정이 가능하다.

* 각 도메인 관리자가 자기 도메인의 메일 계정 추가 삭제가 가능하다.

* 가상 메일 없이도 도메인 마다 똑같은 사용자 계정을 만들수 있다.

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

2. 필요한 프로그램

qmail-1.03.tar.gz

qmail-1.03.qmail_local.patch

qmail-1.03.errno.patch

qmail-0.0.0.0.patch

sendmail-flagf.patch

ucspi-tcp-0.88.tar.gz

ucspi-tcp-0.88.errno.patch

daemontools-0.76.tar.gz

autorespond-2.0.2.tar.gz

qmailadmin-1.2.1.tar.gz

vpopmail-5.4.0.tar.gz

ezmlm-0.53.tar.gz

ezmlm-idx-0.40.tar.gz

qmail , ucspi-tcp , daemontools : http://qmail.org vpopmail, qmailadmin, autoresponder : http://inter7.com ezmlm  , ezmlm-idx : http://www.ezmlm.org

이 모든 패키지 저장소 : ftp://syszone.co.kr/pub/linux/server/apm+qmail

3. 설치

qmail 컴파일 설치

위 프로그램들을 모두 /usr/local/src/qmail 디렉토리 및에 옮겨두고 tar 를 푼다.

그리고 qmail 이 설치될 디렉토리를 만든다. 그런뒤 qmail103.patch 파일을

qmail-1.03 디렉토리 안에 둔다. 그런뒤 ..

[root@www3 qmail]# tar xzvf qmail-1.03.tar.gz

[root@www3 qmail]# cd qmail-1.03

[root@www3 qmail-1.03]# patch -p1 < ../qmail-1.03.errno.patch

[root@www3 qmail-1.03]# patch -p1 < ../qmail-1.03.qmail_local.patch

[root@www3 qmail-1.03]# cp ../sendmail-flagf.patch .

[root@www3 qmail-1.03]# patch -p0 < sendmail-flagf.patch

[root@www3 qmail-1.03]# mkdir /var/qmail

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

편집한다.)

[root@www3 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@www3 qmail-1.03]# sh INSTALL.ids

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

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

컴파일 한다.

[root@www3 qmail-1.03]# make

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

참고로 상황에 따라 아래와 같은 에러가 나타날 수 있다. 그 해결 방법이다.

문제 1-

qmail-1.03 make 시 발생하는 make: *** [spawn.o] 오류 1 해결법 :

vi qmail-1.03/conf-spawn

——————————————————–

1000

위의 1000 을 509 로 변경

——————————————————–

문제 2-

/usr/include/openssl/kssl.h:157: parse error before ‘*’ token

/usr/include/openssl/kssl.h:159: parse error before “kssl_ctx_setkey”

/usr/include/openssl/kssl.h:159: parse error before ‘*’ token

/usr/include/openssl/kssl.h:161: parse error before “context”

/usr/include/openssl/kssl.h:162: parse error before “kssl_build_principal_2”

/usr/include/openssl/kssl.h:162: parse error before “context”

/usr/include/openssl/kssl.h:165: parse error before “kssl_validate_times”

/usr/include/openssl/kssl.h:165: parse error before “atime”

/usr/include/openssl/kssl.h:167: parse error before “kssl_check_authent”

/usr/include/openssl/kssl.h:167: parse error before ‘*’ token

/usr/include/openssl/kssl.h:169: parse error before “enctype”

In file included from tls.h:4,

                 from qmail-remote.c:53:

/usr/include/openssl/ssl.h:909: parse error before “KSSL_CTX”

/usr/include/openssl/ssl.h:931: parse error before ‘}’ token

qmail-remote.c: In function `quit’:

qmail-remote.c:263: dereferencing pointer to incomplete type

qmail-remote.c: In function `main’:

qmail-remote.c:655: warning: return type of `main’ is not `int’

make: *** [qmail-remote.o] 오류 1

해결법 :

——————————————————————————–

qmail-1.03/conf-cc 파일 수정

cc -O2 -DTLS=20021228 -I/usr/local/ssl/include 행을

cc -O2 -DTLS=20021228 -I/usr/local/ssl/include -I/usr/kerberos/include 로..

——————————————————————————-

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

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

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

[root@www3 qmail-1.03]# ./config-fast www3.clunix.org -> << Domain >>

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

– uscpi-tcp

[root@www3 qmail]# tar xzvf ucspi-tcp-0.88.tar.gz

[root@www3 qmail]# cd ucspi-tcp-0.88

[root@www3 ucspi-tcp-0.88]# patch -p1 < ../ucspi-tcp-0.88.errno.patch

[root@www3 ucspi-tcp-0.88]# make

[root@www3 ucspi-tcp-0.88]# make setup check

– daemontools

[root@www3 qmail]# mkdir -p package

[root@www3 qmail]# chmod 1755 package

[root@www3 qmail]# cd package/

[root@www3 package]# cp ../daemontools-0.76.* .

[root@www3 package]# tar xzvf daemontools-0.76.tar.gz

[root@www3 package]# cd admin/daemontools-0.76/

[root@www3 daemontools-0.76]# patch -p1 < ../../daemontools-0.76.errno.patch

[root@www3 daemontools-0.76]# package/install

– autorespond

[root@www3 daemontools-0.76]# cd ../../..

[root@www3 qmail]# tar xzvf autorespond-2.0.2.tar.gz

[root@www3 qmail]# cd autorespond-2.0.2

[root@www3 autorespond-2.0.2]# make

[root@www3 autorespond-2.0.2]# cp autorespond /usr/local/bin

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

[root@www3 qmail]# vi /var/qmail/rc

—————————————————————-

#!/bin/sh

exec env – PATH=”/var/qmail/bin:$PATH” \\

qmail-start ./Maildir/

—————————————————————-

[root@www3 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

Q_UID=`id -u qmaild`

Q_GID=`id -g qmaild`

exec /usr/local/bin/softlimit -m 2000000 \\

     /usr/local/bin/tcpserver -vRHl 0 -x /etc/tcp.smtp.cdb \\

     -u $Q_UID -g $Q_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.238.41.167 은 당연히 설치할 서버의 주소로바꿔야 한다.

그외 메일을 중계 해줄 서버의 주소가 있다면 같은 형식으로 추가한다.

vi /etc/tcp.smtp

——————————————

127.0.0.1:allow,RELAYCLIENT=””

211.238.41.167:allow,RELAYCLIENT=””

——————————————

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

같이 한다.

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

혹은 tcprules 를 이용한 적용 방법으로 아래 command 를 실행한다.

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

알리아스 설정

만약 주 도메인의 메일 계정들도 모두 vpopmail 로 관리할 것이 아니라면

(필자는 주 도메인의 메일 계정들도 모두 vpopmail로 관리할것을 권장한다.)

몇가지 알리아스를 설정해 준다. 여기서 silver 는 root, postmaster 등으로 오는

메일을 받을 일반계정이다.

cd ~alias

echo clunix > .qmail-mailer-daemon

echo clunix > .qmail-postmaster

echo clunix > .qmail-root

chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon

qmail 부트 파일

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

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

————————————————————————-

#!/bin/sh

# For Red Hat chkconfig

# chkconfig: – 80 30

# description: the qmail MTA

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

export PATH

case “$1” in

  start)

    echo “Starting qmail”

         if [ -e /service/qmail-send ] ; then

                 if svok /service/qmail-send ; then

                        svc -u /service/qmail-send

                else

                        echo qmail-send supervise not running

                fi

         else

                 ln -s /var/qmail/supervise/qmail-send /service/

         fi

         if [ -e /service/qmail-smtpd ] ; then

                 if svok /service/qmail-smtpd ; then

                        svc -u /service/qmail-smtpd

                else

                        echo qmail-smtpd supervise not running

                fi

         else

                 ln -s /var/qmail/supervise/qmail-smtpd /service/

         fi

        

    if [ -d /var/lock/subsys ]; then

      touch /var/lock/subsys/qmail

    fi

    ;;

  stop)

    echo “Stopping qmail…”

    echo ”  qmail-smtpd”

    svc -dx /service/qmail-smtpd /service/qmail-smtpd/log

         rm -f /service/qmail-smtpd

    echo ”  qmail-send”

    svc -dx /service/qmail-send /service/qmail-send/log

         rm -f /service/qmail-send

    if [ -f /var/lock/subsys/qmail ]; then

      rm /var/lock/subsys/qmail

    fi

    ;;

  stat)

    svstat /service/qmail-send

    svstat /service/qmail-send/log

    svstat /service/qmail-smtpd

    svstat /service/qmail-smtpd/log

    qmail-qstat

    ;;

  doqueue|alrm|flush)

    echo “Flushing timeout table and sending ALRM signal to qmail-send.”

    /var/qmail/bin/qmail-tcpok

    svc -a /service/qmail-send

    ;;

  queue)

    qmail-qstat

    qmail-qread

    ;;

  reload|hup)

    echo “Sending HUP signal to qmail-send.”

    svc -h /service/qmail-send

    ;;

  pause)

    echo “Pausing qmail-send”

    svc -p /service/qmail-send

    echo “Pausing qmail-smtpd”

    svc -p /service/qmail-smtpd

    ;;

  cont)

    echo “Continuing qmail-send”

    svc -c /service/qmail-send

    echo “Continuing qmail-smtpd”

    svc -c /service/qmail-smtpd

    ;;

  restart)

    echo “Restarting qmail:”

    echo “* Stopping qmail-smtpd.”

    svc -d /service/qmail-smtpd

    echo “* Sending qmail-send SIGTERM and restarting.”

    svc -t /service/qmail-send

    echo “* Restarting qmail-smtpd.”

    svc -u /service/qmail-smtpd

    ;;

  cdb)

    tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

    chmod 644 /etc/tcp.smtp.cdb

    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 — schedules queued messages for immediate delivery

reload — sends qmail-send HUP, rereading locals and virtualdomains

  queue — shows status of queue

   alrm — same as doqueue

  flush — same as doqueue

    hup — same as reload

HELP

    ;;

  *)

    echo “Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}”

    exit 1

    ;;

esac

exit 0

———————————————————————-

실행 퍼미션을 준다.

chmod 755 /etc/rc.d/init.d/qmail

ntsysv 실행시키면 qmail 이라는 새로운 항목이 보일것이다.

리부팅 할때 qmail 데몬이 실행되도록 체크해준다.

– vpopmail 설치

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

컴파일과 설치

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

groupadd vchkpw

useradd -g vchkpw vpopmail

vpopmail 을 설치하자.

[root@www3 alias]# cd /usr/local/src/qmail/

[root@www3 qmail]# tar xzvf vpopmail-5.4.6.tar.gz

[root@www3 qmail]# cd vpopmail-5.4.6

MySQL 사용하지 않을 경우

설치시 몇가지 옵션이 있는데 자세한것은 vpopmail faq 를 읽어보도록.

보통 다음 옵션만 주고 컴파일 하면 된다.

./configure –enable-default-domain=www3.clunix.org

make

make install-strip

MySQL을 사용 할 경우

MySQL db를 사용하려 한다면, 컴파일 하기전에 먼저 vmysql.h 를 열어서

sql 서버를 억세스할수 있는 user와 암호등을 설정해 주어야 한다.

테이블을 생성/삭제 할수 있는 사용자 이여야하므로 보통 root 나 해당 유저로

설정해 준다.

./configure –enable-default-domain=www3.clunix.org –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은 도메인별로 테이블을 생성,유저

정보를 관리한다.

참고 :

vpopmail 5.4.x 이상 버전은 –enable-default-domain 컴파일 옵션이 없어지고

~vpopmail/etc/defaultdomain 파일을 사용하도록 되었다.

이 파일에 직접 default domain 이름을 넣어주면 된다.

vpopmail 5.0 이상 버전은 –enable-large-site 옵션이 –enable-many-domains 으로

바뀌었다. 즉, 각 도메인별로 테이블을 생성관리 할것이라면 –enable-many-domains=n

옵션을 사용한다.

만약 sql 헤더파일이나 라이브러리를 찾지 못한다며 컴파일에 실패한다면,

–enable-sqlincdir= sql 헤더파일 경로. –enable-sqllibdir= sql 라이브러리

경로 등을 ./configure 할때 추가 해준다.

위의 예에서 www3.clunix.org 는 주 서버의 도메인 이름이다. 이것을 설정하면 주서버의

메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다.

(이렇게 하는 것을 권장한다)

이 문서의 설정은 아래와 같이 했다.

./configure –enable-roaming-users=y \\

–enable-tcprules-prog=/usr/local/bin/tcprules \\

–enable-relay-clear-minutes=15 \\

–enable-auth-logging=y \\

–enable-logging=e

make

make install-strip

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

bin

doc

domains

etc

include

lib

users

등의 디렉토리과 필요한 바이너리들이 생겼을 것이다.

chmod 777 ~vpopmail/etc

echo “127.0.0.1:allow,RELAYCLIENT=\\”\\”” > ~vpopmail/etc/tcp.smtp

echo “211.238.41.167:allow,RELAYCLIENT=\\”\\”” >> ~vpopmail/etc/tcp.smtp

이제 기본 릴레이 파일을 만들었다면 다음 명령을 한번 실행해 준다.

~vpopmail/bin/clearopensmtp

마지막으로 crontab을 하나 설정해야 하는데, 이것은 cron에 의해 주기적으로 실행되어

릴레이가 허용된 IP 주소중 pop 인증 시간이 한시간 이상된 것이 있으면 지워준다.

vpopmail 컴파일시 별다른 옵션을 주지 않았다면 기본적으로 릴레이 허용 시간은

한시간이며 이것은 –enable-relay-clear-minutes= 옵션으로 바꿔줄수 있다.

# crontab -e

40 * * * * /home/vpopmail/bin/clearopensmtp

qmail-smtpd 시동 스크립트는 vpopmail이 조절하는 cdb 파일을 참고하도록,

다음과 같이 바꾼다.

/var/qmail/supervise/qmail-smtpd/run 의 내용

————————————————————————

#!/bin/sh

Q_UID=`id -u vpopmail`

Q_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 2000000 \\

          /usr/local/bin/tcpserver -vRHl 0 \\

          -x /home/vpopmail/etc/tcp.smtp.cdb \\

          -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

————————————————————————

– pop3 데몬 시동 파일

vpopmail 의 pop3 시동 파일을 만들자. 적당한 곳에 디렉토리를 만들고 run 파일을 만든다.

mkdir /var/qmail/supervise/vpop

/var/qmail/supervise/vpop/run 파일의 내용

————————————————————————

#!/bin/sh

VPOP_UID=`id -u vpopmail`

VPOP_GID=`id -g vpopmail`

exec /usr/local/bin/softlimit -m 2500000 \\

     tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \\

     /var/qmail/bin/qmail-popup www3.clunix.com \\

     /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

————————————————————————

chmod 755 /var/qmail/supervise/vpop/run

ln -s /var/qmail/supervise/vpop /service

5초 이내로 daemontool에 의해 pop 데몬이 구동될 것이다.

위와 같이 pop3 데몬을 daemontool/tcpserver로 운영하거나 다음과 같이 inetd 또는

xinetd 모드로 운영할수도 있다.

xinetd 모드로 운영할때 /etc/xinetd.d/ 아래 아래와 같은 파일을 하나 만들어 둔다.

vi /etc/xinetd.d/vpop3

———————————————————————-

service pop3

{

  disable     = no

  socket_type = stream

  protocol    = tcp

  wait        = no

  user        = root

  server      = /var/qmail/bin/qmail-popup

  server_args = babo.org /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir

  log_type    = FILE /var/log/xinetd.log

  log_on_success = HOST

  log_on_failure = HOST RECORD

}

———————————————————————-

그런 후

/etc/rc.d/init.d/xinetd restart

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

~vpopmail/bin 디렉토리 안에 가상 도메인 관리를 위한 바이너리들이 있는데

다음과 같은 기능을한다.

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

vadddomain :

가상 도메인을 추가한다. postmaster 암호를 물어보는데 이것은 다음에

설치할 qmailadmin 웹 인터페이스에서 로그인 할때 물어볼 암호이다.

형식은  [ vadddomain 도메인명 ]

vdeldomain :

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

vadduser :

pop 메일 유저 계정을 만든다.  [ vadduser alang@www3.clunix.org ]

vdeluser :

pop 메일 유저 삭제. [ vdeluser alang@www3.clunix.org ]

vpasswd :

메일 유저의 암호 바꾸기 [ vpasswd alang@www3.clunix.org ]

vsetuserquota :

각 유저 별로 quota 설정을 할수 있다. [ vsetuserquota alang@www3.clunix.org 51200 ]

                                                                                                                (단위는 byte 이다).

vpopbull :

서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼때 유용하게 사용할수

있다.  

이제 도메인을 추가하자. 위에서 주 도메인도 vpopmail에서 관리하기로 했다면

주 도메인과 메일 계정들도 추가해야 한다.

만약 주 도메인이 www3.clunix.org 이고, 추가할 가상 도메인이 zzang911.org,

zzang911.co.kr 라고 한다면 다음과 같이 한다

(추가하기 전에 가상 도메인들의 DNS MX 레코드의 IP주소가 주 서버로 되어있는지

확인 해보자).

vadddomain www3.clunix.org

vadddomain tru64unix.co.kr

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

cat /var/qmail/control/locals

————————————————

localhost

주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의

내용은 localhost 만이 있어야 정상이다. 다른것이 있으면 지운다.

cat /var/qmail/control/virtualdomains

———————————————–

www3.clunix.org:www3.clunix.org

tru64unix.co.kr:tru64unix.co.kr

cat /var/qmail/users/assign

———————————————–

+www3.clunix.org-:www3.clunix.org:515:510:/home/vpopmail/domains/www3.clunix.org:-::

+tru64unix.co.kr-:tru64unix.co.kr:515:510:~vpopmail/domains/tru64unix.co.kr:-::

– 메일 계정 생성

cd ~vpopmail/bin

./vadduser clunix@www3.clunix.org

– 기존 POP 사용자 변환

cd ~vpopmail/bin

./vconvert -e -c 도메인명

– 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

– qmail 가동 하기

ln -s /var/qmail/supervise/qmail-send /service/

ln -s /var/qmail/supervise/qmail-smtpd /service/

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

이렇게 /service 디렉토리에 링크를 한번 걸어주면 링크가 존재하는 한 즉,

재부팅 한다해도 daemontools에 의해서 자동으로 서비스가 시작된다.

– Daemon Tool 로 서버 제어 방법

daemontools은 상당히 편리한 서비스 관리 도구로 tcpserver와 함께 xinetd를 완전히

대체할 수 있다.

// 종료 방법

cd /service/qmail-send

rm -f /service/qmail-send

svc -dx . log

cd /service/qmail-smtpd

rm -f /service/qmail-smtpd

svc -dx . log

cd /service/vpop

rm -f /service/vpop

svc -dx .

// stat 보기

svstat /service/vpop/

// qmail 큐에 있는 메일을 강제로 배달하기

svc -a /service/qmail-send

// 서버 잠시 중지 시키기

svc -p /service/qmail-send

svc -p /service/qmail-smtpd

svc -p /service/vpop

// 다시 진행 시키기

svc -c /service/qmail-send

svc -c /service/qmail-smtpd

svc -c /service/vpop

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

여기서 주의 할것.

주 도메인 이외의 도메인 pop3 메일 계정 사용자들은 메일 클라이언트의

유저 이름을 my_id@babo2.com 과 같이 아이디@도메인명 으로 모두 써주어야

pop 로긴이 가능하다.

– qmailadmin 설치

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

/usr/local/src/qmail 가서

tar xzvf ezmlm-0.53.tar.gz

tar xzvf ezmlm-idx-0.42.tar.gz

mv -f ezmlm-idx-0.42/* ezmlm-0.53/

cd ezmlm-0.53

patch < idx.patch

make

        // make 중에 <<./makelang : 허가 거부>> 와 같은 에러가 발생 하면

        // chmod +x makelang 으로 makelang 파일에 실행 권한을 준다.

make man

make setup

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

– qmailadmin 설치

tar xvzf qmailadmin-1.21.tar.gz

cd qmailadmin-1.21

./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=/usr/local/apache/cgi-bin \\

–with-htmllibdir=/home/vpopmail/www \\

–enable-htmldir=/home/vpopmail/www \\

–enable-cgipath=/cgi-bin/qmailadmin \\

# make

# make install-strip

그런뒤 apache 의 httpd.conf 설정에서  

ScriptAlias /cgi-bin/ “/usr/local/apache/cgi-bin/”

설정의 주석을 제거하고 난뒤 /usr/local/apache/cgi-bin/qmailadmin 파일 생성을

확인한다.

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

뜨면 성공~~

이제 원하는 도메인과 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/www3.clunix.org/mailling \\

   /home/vpopmail/domains/www3.clunix.org/.qmail-mailling mailling www3.clunix.org

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

$ ./ezmlm-sub /home/vpopmail/domains/www3.clunix.org/mailling alang@www3.clunix.org

위와 같은 식으로 계속 추가 하면 된다.

추가된 리스트 확인은 ezmlm-list 명령어로 가능하다.

$ ./ezmlm-list /home/vpopmail/domains/www3.clunix.org/mailling

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

mail -v mailling@www3.clunix.org

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

주의 : 꼭 vpopmail 사용계정으로 메일링 리스트 설정을 해야 합니다.

root 로 하였을 경우 메일링이 발송 안되는 수도 있습니다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.