리눅스

Total 331
Today 0
profile_image
관리자
04-12-10 22:35 0개 26회
설치문서
Qmail 설치방법

먼저, 이 문서은 개인적인 기록의 목적으로 작성한 것이며, 모든 내용은 http://kldp.org, http://chaosclub.net 그리고  기타 여러문서에서 종합해 일부 수정을 했음을 밝혀둔다.

 

 

 

1. 설치파일 준비

 

qmail을 설치하는 필요한 패키지는 다음과 같다. 아래의 대부분의 파일은 http://www.qmail.org 에서 받을 수 있거나 링크를 찾을 수 있다.

 

qmail (http://cr.yp.to/software/qmail-1.03.tar.gz)
ucspi-tcp (
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz)
daemontools (
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz)

checkpasswd (http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz)

SMTP 인증 패치 (Mrs. Brisby의 http://www.nimh.org/dl/qmail-smtpd.c)

qmail-103.patch  : Christopher K. Davis의 oversize DNS packets patch
                          (
http://www.ckdhr.com/ckd/qmail-103.patch)

 

qmail-queue 패치 (http://www.qmail.org/qmailqueue-patch)
Maildrop 1.4.0 (
http://download.sourceforge.net/courier/)
qmail-scanner (
http://qmail-scanner.sourceforge.net/)

 

참고로 rblsmtpd 패키지는 설치할 필요가 없다. 현재 rblsmtpd는 ucspi-tcp에 포함되어 있다. 예전에 작성된 문서에는 rblsmtpd도 설치하라고 나오는 경우가 있는데, 현재에는 신경 쓸 필요 없다. 그리고 아랫 부분에 있는 3개의 파일(qmail-queue 패치, Maildrop, qmail-scanner)은 바이러스 메일 차단 기능을 원하는 경우에 필요한 파일들이다. 해당 링크가 깨졌거나 파일을 찾을 수 없으면, http://filewatcher.org 에서 찾아보길 바란다.

 

 

 

2. 압축풀기

 

모든 설치 작업은 root 권한에서 한다. 필요한 파일들을 임시 디렉토리(필자의 경우는 /root/temp/)로 복사한후 압축을 해제한다.

 

[/root/temp]# tar xzvf qmail-1.03.tar.gz
[/root/temp]# tar xzvf ucspi-tcp-0.88.tar.gz

[/root/temp]# tar xzvf daemontools-0.76.tar.gz

 

checkpasswd 는 qmail 설치가 성공해야 pop3를 설치할 수 있으므로, qmail 설치후에 다루겠다.

 

 

 

3. 설치 및 설정

 

qmail이 설치 될 디렉토리를 만들어준다. 기본적으로 /var/qmail/ 디렉토리에 설치하도록 되어있다.

 

[/root/temp]# mkdir /var/qmail

 

그 다음엔 qmail 운영에 사용될 계정들을 만들어 주어야 하는데, /root/temp/qmail-1.03/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/temp/qmail-1.03]# sh INSTALL.ids

 

groupadd useradd 라는 명령어가 없다고 나오는 경우가 있는데, 그 경우에는 다음과 같이 PATH 변수를 갱신해 주면 된다.

 

[/root/temp/qmail-1.03]# PATH=/usr/sbin:$PATH

[/root/temp/qmail-1.03]# export PATH

 

이번에는 oversize DNS 패치를 적용한다. 이 패치는 RFC의 권고안을 무시하고 512바이트보다 큰 UDP DNS 응답을 되돌려주는 일부 ISP업체들(AOL, hanmail.net 등) 때문에 필요한 것이다. qmail의 DNS resolve 라이브러리는 RFC와 호환되도록 되어 있으므로 RFC와 호환되지 않게 전달되는 메시지에는 응답하지 못한다. 다음의 패치는 qmail이 그러한 불법적인 DNS의 응답에 정확하게 수행하도록 한다. 패치는 qmail소스 디렉토리에서 다음과 같이 한다.

 

[/root/temp/qmail-1.03]# patch -p1 < ../qmail-103.patch
patching file dns.c

 

그 다음엔 SMTP 인증 기능을 위해 패치할 차례이다. 이것은 아웃룩 익스프레스 등으로 편지를 보낼 때에도 인증을 필요하도록 하는 것인데, 스팸 메일 서버로 이용당하는 것을 원치 않는다면 꼭 필요한 기능이다. 최신 버전의 sendmail에서도 이런 기능을 기본적으로 지원한다. 이 패치는 qmail의 소스 파일 중 qmail-smtpd.c 파일을 덮어 쓰면 된다. 이 기능을 원치 않으면 안 해도 상관은 없다.

[/root/temp/qmail-1.03]# cp ../qmail-smtpd.c ./
cp: overwrite `./qmail-smtpd.c'? y

사실 최근에는 CRAM-MD5라는 방식도 지원되는 좀더 좋은 SMTP 인증 패치도 있다. 그러나 설치 방법도 좀 더 복잡하고 해서 간단한 것(설치 방법과 성능 모두 간단한)을 택했다.

그리고 바이러스 메일 차단을 넣고 싶다면 다음 패치도 해야 한다. 이 기능이 필요없다면 그냥 넘어가도 된다. 그러나 이 기능 없이 메일 서버를 운영해보면 바이러스 메일이 엄청나게 올 것이다.

 

[/root/temp/qmail-1.03]# patch -p1 < ../qmailqueue-patch
(Stripping trailing CRs from patch.)
patching file Makefile
(Stripping trailing CRs from patch.)
patching file qmail.c


qmail과 다른 다른 프로그램들도 컴파일하고 설치한다.

 

[/root/temp/qmail-1.03]# make

[/root/temp/qmail-1.03]# make setup check

 

[/root/temp/qmail-1.03]# cd /root/temp/ucspi-tcp-0.88/

[/root/temp/ucspi-tcp-0.88]# make

[/root/temp/ucspi-tcp-0.88]# make setup check

 

[/root/temp/ucspi-tcp-0.88]# cd /root/temp/daemontools-0.76/

[/root/temp/daemontools-0.76]# ./package/install

 

daemontools를 설치할 때에는 install이라는 스크립트를 실행하면 저절로 컴파일 및 설치가 된다. 주의할 점은 위에서처럼 admin/daemontools-0.76 디렉토리에서 ./package/install과 같이 실행해야 된다는 것이다. package 디렉토리 안에서 install을 실행하면 안된다.

그리고 daemontools를 설치하면 /command 디렉토리가 만들어지고, 그 안에 여러 심볼릭 링크 파일들이 daemonstools의 소스 디렉토리 안을 가리키게 된다. 그래서 qmail 설치가 끝나고 daemontools 소스 디렉토리를 지워버리면 qmail이 작동되지 않게 된다. qmail 설치가 끝난 다음에 daemontools 소스 디렉토리를 지워버리고 싶다면 다음과 같이 한다.

[/command]# rm -f /command/*
[/command]# cp /root/temp/admin/daemontools/command/* /command/

다음에는 qmail의 소스 디렉토리에서 config를 실행시켜, 설정을 해 준다.

[/command]# cd /root/temp/qmail-1.03
[/root/temp/qmail-1.03]# ./config

 

그러나 만약 여기서 "Sorry, I couldn't find your host's canonical name in DNS." 이런 메시지를 내면서 에러가 난다면 Network 설정 및 DNS 설정에 문제가 있는 경우이다. DNS 서버에 이름이 정상적으로 등록되어 있다면, Network 설정을 잘 살펴보아야 한다. 아래와 같이 파일을 확인 및 수정한다.

 

/etc/resolv.conf

..............................................................

search yourdomain

nameserver 168.126.63.1
nameserver 168.126.63.2

 

/etc/hosts

..............................................................

127.0.0.1 localhost.localdomain localhost
123.234.123.234 oracle.yourdomain oracle

123.234.123.231 other.yourdomain other

 

/etc/sysconfig/network

..............................................................

HOSTNAME=yourhostname

DOMAINNAME=yourdomain

 

만약에 그래도 안된다면 "./config-fast hostname.domain"과 같이 해준다. 여기서 뒷부분의 hostname.domain은 FQDN으로 호스트 이름과 도메인 이름으로 구성된 주소를 써주면 된다.

다음에는 qmail 데몬을 위한 디렉토리와 파일들을 생성해준다.

# 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
export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
ALIASUID=`id -u alias`
ALIASGID=`id -g alias`
exec /usr/local/bin/softlimit -m 10000000 \
/usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb \
-u $ALIASUID -g $ALIASGID 0 25 /var/qmail/bin/qmail-smtpd 2>&1

위에서 export QMAILQUEUE=... 부분은 바이러스 메일 차단 기능을 사용할 때에만 넣고, 그 기능을 사용하지 않으려면 뺀다.

softlimit -m 10000000 부분은 조절 가능하다. 바이러스 메일 필터링 기능을 사용하지 않을 것이라면 2000000으로 해도 작동할 것이다. 그러나 바이러스 메일 필터링 기능을 사용한다면 그것으로는 부족할 수 있다. 만약 이 수치가 부족하면 아웃룩 등으로 메일을 보낼때 451 qq temporary problem (#4.3.0)와 같은 메시지가 나올 것이다. 다른 문서에는 6000000으로 나오기도 하는데, 필자의 경우엔 그렇게 하니 에러가 나서 아예 10000000으로 해 주었더니 잘 작동했다.

/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의 로그 파일이 저장될 디렉토리를 만들어 준다.

 

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

 

root, postmaster 등 관리자 계정으로 수신되는 메일을 특정 일반계정으로 forward 하도록 설정한다. 만약 여러분이 root로 수신되는 메일을 red5001라는 계정으로 받기를 원한다면 다음과 같이 설정한다.

 

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

그리고 /var/qmail/control/locals 파일과 /var/qmail/control/rcpthosts 파일에 여러분이 사용하기 원하는 도메인 주소를 모두 써 주어야 한다. 두 파일의 내용은 같게 하면 된다. 예를들어
email@domain.com, email@www.domain.com, email@email.domain.com 과 같은 형식의 메일 주소로 편지를 받기를 원한다면 이 파일들에 다음과 같이 써주면 된다. 물론, 여기서는 이미 www.domain.com 이나 email.domain.com과 같은 주소의 DNS 설정이 되어 있다고 가정했을 경우이다.

domain.com
www.domain.com
email.domain.com

설사 sub.domain.com과 같은 주소가 여러분의 호스트에 할당되어 있다고 하더라도 이 파일에 주소를 써주지 않으면 email@sub.domain.com 과 같은 주소로 온 편지는 받아들이지 않는다.

그리고 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: 빠르며, 안정적이고, 유연한 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

..............................................................

 

그리고 다음과 같이 실행될 수 있도록 퍼미션 조정을 해준다.


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

 

레드햇 리눅스의 경우 ntsysv를 실행시켜 sendmail의 체크를 제거하고 리부팅시 qmail 데몬이 실행되도록 qmail에 체크를 해준다. 만약, 여기에 qmail 항목이 나타나지 않는다면 다음과 같이 한다.

# chkconfig --add qmail

이것도 안 되면 그냥 /etc/rc.d/rc.local 파일 맨 끝에 /etc/rc.d/init.d/qmail start 라고 한줄 써주면 된다. 목적은 부팅될때 자동으로 실행하는 것이니까, 어떻게 하든 상관없다.


그리고 설치가 모두 끝난 다음에는 압축을 풀어놓았던 소스 파일 디렉토리들은 모두 삭제해도 된다.(단, daemontools 관련 파일들을 /command 디렉토리로 모두 복사했다는 가정하에)

 

 

 

4. 바이러스 메일 차단 기능

 

1) Perl module Time::HiRes 설치

 

이 부분은 바이러스 메일 차단 기능을 원하는 사람만 필요한 부분이다. 필요하지 않다면 그냥 넘어가면 된다.

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

이렇게 하면 자동 설치를 할 것이냐, 수동 설치를 할 것이냐를 묻는데, 처음에 yes라고 대답하여 수동 설치를 하기를 권한다. 물론 거의 100%의 질문에 그냥 엔터만 치면 된다. 다만 중간에 대륙과 국가를 고르는 부분이 나오는데, 그 부분에서 한국으로 골라야 인터넷에서 필요한 파일을 다운로드받아서 설치할 때 빠르게 진행된다. 이것을 설치할때 중간에 필요한 파일을 자동으로 다운로드하는 단계가 있다. 인터넷 접속 속도에 따라 다르겠지만 2~3분이면 설치가 완료된다.


2) Maildrop 설치


[/root/temp]# tar xzvf maildrop-1.4.0.tar.gz
[/root/temp]# cd maildrop-1.4.0
[/root/temp/maildrop-1.4.0]# ./configure
[/root/temp/maildrop-1.4.0]# make
[/root/temp/maildrop-1.4.0]# make install-strip
[/root/temp/maildrop-1.4.0]# make install-man


3) qmail-scanner 설치


[/root/temp]# tar xzvf qmail-scanner-1.14.tgz
[/root/temp]# cd qmail-scanner-1.14
[/root/temp/qmail-scanner-1.14]# ./configure
[/root/temp/qmail-scanner-1.14]# ./configure --install

위와 같이 하면 qmail-scanner-queue.pl 파일이 생성되고 기본적으로 /var/qmail/bin/에 설치가 될 것이다.

 

 


6. 기타 설정

 

1) 릴레이 설정


기본적인 릴레이 설정을 해준다.

# vi /etc/tcp.smtp

127.0.0.1:allow,RELAYCLIENT=""
:allow


설치를 할 때에 SMTP 인증 기능을 패치했기 때문에 localhost에서 보내는 편지만 relay하도록 설정해 놓으면 충분하다. 만약 다른 ip 주소도 무조건 relay를 허가해주고 싶다면 127.0.0.1:allow,RELAYCLIENT="" 다음 줄에 원하는 ip 주소나 대역을 추가해 주면 된다. 자세한 사항은 다른 문서를 참고하기 바란다. SMTP 인증 패치를 한 이상, 위의 설정만으로도 충분하다. 이 파일에 기록된 ip 주소에서 릴레이를 요청할 때에는 인증 없이 무조건 relay를 허가해 주고, 만약 이 파일에 ip 주소가 등록되어 있지 않다면 그때는 SMTP 인증을 해야만 relay 허가가 된다.

그리고 /etc/tcp.smtp 파일을 수정하였다면 다음 명령을 수행하여 데이터베이스를 갱신할 필요가 있다.

# /etc/rc.d/init.d/qmail cdb
Reloaded /etc/tcp.smtp.


2) /var/qmail/rc 생성하기


/var/qmail/rc 파일은 qmail 파일중에서 가장 중요한 파일중의 하나이다. 이것은 qmail을 책임지고 시작하게 한다. 보다 중요한 것은 qmail이 항상 메일을 수신할 수 있도록 한다. rc 의 내용은 qmail을 위한 기본적인 전송 명령으로 되어 있다. /var/qmail/boot 디렉토리에 가면, 여러 경우에 대한 rc 파일의 예제가 파일별로 준비되어 있다. procmail을 이용하여 메일을 처리할 것이기 때문에, 다음과 같이 한다.

# cp /var/qmail/boot/proc /var/qmail/rc

그리고 /var/qmail/rc 파일을 열어서 다음과 같이 수정한다. 맨 아랫 줄에 ./Maildir/ 만 추가되었다. 이것은 Maildir 형태로 메일이 저장되도록 한다.

/var/qmail/rc

..............................................................
#!/bin/sh

# Using splogger to send the log through syslog.
# Using procmail to deliver messages to /var/spool/mail/$USER by default.

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start '|preline procmail ./Maildir/' splogger qmail

 


3) Maildir 디렉토리 만들기


이제 이 서버로 도착하는 메일은 각 사용자의 홈 디렉토리 아래에 Maildir이라는 디렉토리 안에 저장되게 된다. 따라서 모든 사용자의 홈 디렉토리 아래에 이 디렉토리가 실제로 있어야 한다. qmail은 이 디렉토리 및 서브 디렉토리를 자동으로 만들어주는 스크립트를 제공하며, 다음이 그 사용 예이다.

# su - red5001
$ /var/qmail/bin/maildirmake $HOME/Maildir
$ echo ./Maildir/ > ~/.qmail

기존 모든 계정에 대해 위와 같은 일을 해주어야 한다. 그러나, 다음과 같이 /etc/skel 디렉토리를 수정해 주면, 앞으로 생성할 사용자에 대해서는 이런 작업을 해주지 않아도 된다.

# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# echo ./Maildir/ > .qmail

 

이제부터는 추가되는 모든 사용자에게 자동으로 Maildir 디렉토리와 .qmail 파일이 생기게 될 것이다.

 

 

4) qmail로 sendmail을 대체하기

 

리눅스 배포판에 따라 특성은 있을 수 있지만 보통 다음과 같이 하면 sendmail을 중지시킬 수 있다.

# /etc/rc.d/init.d/sendmail stop
Shutting down sendmail: [ OK ]
#

 

위의 명령은 현재 실행중인 sendmail만을 제거할 뿐이다. 컴퓨터가 재시동되면, 다시 sendmail도 재시동되므로, 다음과 같은 명령어로 qmail로 모든 sendmail을 대체한다.

 

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

 

시스템을 리부팅한다.

 

# reboot

 

 

5) qmail Test

 

/var/log/maillog 파일의 내용 중 끝부분에 아래와 같은 라인이 보여야 한다.나타나지 않는다면, 설정에 문제가 있으므로 설정 부분을 다시 검토하기 바란다.

 

# cat /var/log/maillog

qmail: status: local 0/10 remote 0/20

 

# ps ax

  562 ? S 0:00 svscan
  563 ? S 0:00 supervise qmail-send
  564 ? S 0:00 supervise log
  565 ? S 0:00 supervise qmail-smtpd
  566 ? S 0:00 supervise log
  567 ? S 0:00 qmail-send
  568 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail
  569 ? S 0:00 /usr/local/bin/multilog t /var/log/qmail/smtpd
  570 ? S 0:00 /usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb
    -u 501 -g 501 0 25 /var/qmail/bin/qmail-smtpd
  576 ? S 0:00 splogger qmail
  577 ? S 0:00 qmail-lspawn |preline procmail
  578 ? S 0:00 qmail-rspawn
  579 ? S 0:00 qmail-clean

 

모양이나 숫자들이 약간씩 틀리더라도, 반드시 13개의 프로세서가 동작하고 있어야 한다. 위와 동일한 프로세서가 없다면, qmail 설정에 문제가 있는 것이다. 설치 이후의 기타설정을 다시 확인하기 바란다.

 


5.1) Host 내부 송신테스트

 

메일 테스트는 시스템 root가 아니여도 상관없다. red5001은 Host 내에 존재하는 사용자 계정이여야 한다.

 

$ echo to: red5001 | /var/qmail/bin/qmail-inject

 

내용이 없고 메일헤더만 있는 메일이 red5001에게 송신되어 있어야 하며, ~red5001/Maildir/new/ 밑에 수신메일마다 개개의 파일로 저장된다. /var/log/maillog 파일의 끝부분에는 다음과 같은 기록들이 보여야 한다.

 

new msg 362131
info msg 362131: bytes 1010 from <> qp 7690 uid 515
starting delivery 147: msg 362131 to local
me@domain
status: local 1/10 remote 0/20
delivery 147: success: procmail: _Couldn't_read_"./Maildir/"/did_0+0+1/
status: local 0/10 remote 0/20
end msg 362131

 

362131는 inode이고, 7690은 PID(Process IDentity) 이다

 

 

5.2) 전송 에러 테스트

 

none은 Host 내에 존재하지 않는 사용자 계정이여야 한다.

 

$ echo to: none | /var/qmail/bin/qmail-inject

 

/var/log/maillog 파일의 끝부분

 

new msg 362131
info msg 362131: bytes 247 from <
me@domain> qp 9177 uid 508
starting delivery 148: msg 362131 to local
none@domain
status: local 1/10 remote 0/20
delivery 148: failure: Sorry,_no_mailbox_here_by_that_name._<#5.1.1>/
status: local 0/10 remote 0/20
bounce msg 362131 qp 9180
end msg 362131
new msg 362163
info msg 362163: bytes 853 from <> qp 9180 uid 515
starting delivery 149: msg 362163 to local
medomain
status: local 1/10 remote 0/20
delivery 149: success: procmail: _Couldn't_read_"./Maildir/"did_0+0+1/
status: local 0/10 remote 0/20
end msg 362163

 

메일이 전송되지 못하고, 되돌아온 메일을 보게 될 것이다.

 


5.3) Host 외부 송신테스트

 

$ echo to: meBhotmail.com | /var/qmail/bin/qmail-inject

 

/var/log/maillog 파일의 끝부분

 

new msg 362131
info msg 362131: bytes 236 from
medomain
qp 10152 uid 508
starting delivery 150: msg 362131 to remote meB@hotmail.com

status: local 0/10 remote 1/20
delivery 150: success: ???.???.???.???_accepted_message./Remote_host_said:_250__<
20040809104957.10151.qmaildomain>_Queued_mail_for_delivery/
status: local 0/10 remote 0/20
end msg 362131

 

meBhotmail.com 의 메일수신을 확인해보라.

 

 

5.4) root, postmaster, mailer-daemon 테스트

 

앞에서 root, postmaster, mailer-daemon의 alias 를 설정하였다. 그 alias가 정상적으로 동작하는지를 확인한다.

 

$ echo to: postmaster | /var/qmail/bin/qmail-inject

 

postmaster의 alias 를 설정한 계정 (필자는 red5001)으로 온 메일을 확인한다.

 

 

5.5) SMTP 서버 테스트

 

red5001은 호스트의 유효한 계정이어야 하고, meAnaver.commeBhotmail.com 는 유효한 메일주소 이여야 한다.

 

$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 domain ESMTP

helo red5001
250 domain
mail <
meAnaver.com>
250 ok
rcpt <
meBhotmail.com>
250 ok
data
354 go ahead
Subject: testing
      
This is a test.
 .
250 ok 1092052910 qp 15001
quit
221 domain
Connection closed by foreign host.

$

 

meBhotmail.com 에 메일이 정상적으로 도착했는지 확인한다.

 

 

6) pop3  설정

 

메일 서버에 있는 메일을 자신의 컴퓨터 메일 클라이언트로 가져오기 위해서는 반드시 메일서버가 pop3를 지원해야 한다. qmail에서 기본적으로 제공되는 pop3 기능을 이용하려면 꼭 메일 저장 형태가 Maildir 형태이어야 한다. 이미 위에서 그렇게 했으므로 신경쓰지 않아도 된다.
먼저, checkpassword (
http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz) 를 설치한다.

이것은 /etc/passwd 파일을 이용하여 사용자명과 암호를 인증하는데 사용되는 qmail의 pop3를 구성하는 하나의 모듈이다. 만약 인증 방식을 /etc/passwd 파일이 아닌 다른 방식을 이용하고 싶다면 http://www.qmail.org 에서 많은 대체 모듈을 찾아보기 바란다.

 

[/root/temp]# tar -zxvf checkpassword-0.81.tar.gz
[/root/temp]# cd checkpassword-0.81
[/root/temp/checkpassword-0.81]# make
[/root/temp/checkpassword-0.81]# make setup check

 

checkpassword가 제대로 설치되었는지 확인해보자.

 

# /var/qmail/bin/qmail-popup hostname.domain.com /bin/checkpassword pwd
+ok <684.1092104292hostname.domain.com>
user red5001
+ok
pass **********
-ERR authorization failed

 

틀린 password를 입력하면, 위와 같이
제대로된 password를 입력하면, 아래와 같은 결과가 나올 것이다.

 

# /var/qmail/bin/qmail-popup hostname.domain.com /bin/checkpassword pwd
+ok <684.1092104292hostname.domain.com>
user red5001
+ok
pass **********
/home/red5001

 

설치가 되면 부팅할 때마다 pop3가 자동으로 작동되도록 /etc/rc.d/rc.local의 맨 끝줄에 다음과 같은 내용을 적는다.

 

#start qmail POP3 server
/usr/local/bin/tcpserver 0 110 /var/qmail/bin/qmail-popup FQDN /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &

 

위에서 'FQDN'이라고 되어 있는 부분은 여러분 서버의 FQDN을 써주면 된다. 예를 들면 hostname.domain.com과 같은 식이다. 이렇게 해 놓으면 부팅 될 때마다 pop3가 자동적으로 실행될 것이다. 리부팅하지 않고 바로 pop3를 실행해 보려면 위의 줄을 쉘에서 그냥 실행해주면 된다.

 


7) 다른 호스트의 메일계정으로 포워딩


대부분의 사용자가 여러 개의 메일계정을 가지는 경우가 많다. 굳이 서버의 용량을 낭비하고, 서버의 성능에 부하를 주면서까지 메일을 직접 서버에 남겨둘 필요가 없는 경우가 많다. 그렇기 때문에 도착하는 메일을 바로 다른 호스트의 메일계정으로 포워딩시키는 방법을 쓴다. qmail에서는 각 사용자가 아주 간단하게 메일 포워딩을 할 수 있는데, 자신의 계정 디렉토리의 .qmail 파일에 포워딩 되어질 메일계정을 써주면 된다.

 

$ cd
$ vi .qmail

..............................................................

@hanmail.net

 

메일 주소 앞에 &기호는 넣어도 되고, 넣지 않아도 무관하다.


 

8) qmail의 MAN 페이지 설정

 

qmail을 설치하면 /var/qmail/man 디렉토리 내에 man 페이지들이 위치한다. 이것을 man 명령어로 보기 위해서는 MANPATH 환경변수 설정을 해야 한다. bash 쉘을 사용하는 레드햇 리눅스의 경우에는 /etc/profile 파일을 열어서 맨 끝에 다음과은 내용을 삽입한다.

 

/etc/profile

..............................................................

export MANPATH=$MANPATH:/var/qmail/man

 

이렇게 설정해 놓으면 모든 사용자에 대해 MANPATH 환경변수가 새로 설정되게 되고, 다음에 로그인할 때부터 이 설정이 적용된다. 또는 아래와 같이 실행하면 로그인 없이 설정이 바로 적용된다.

 

# source /etc/profile

 


9) Outlook Express 설정

 

이 서버를 '보내는 메일(SMTP) 서버'로 이용하여 편지를 보내려면 인증을 해야 한다. 따라서 아웃룩 익스프레스에서 서버 설정 부분에서 '보내는 메일 서버'의 '인증 필요'에 체크를 하고, 계정과 비밀번호를 설정해 주면 된다. 제대로 설정이 되지 않으면 릴레이가 거부되었다는 에러 메시지가 나올 것이다.

 

 

 

댓글목록

등록된 댓글이 없습니다.