qmail 설치 따라하기 << linux 작업물 << 작업실
qmail 설치 따라하기
- 들어가면서
이번에 리눅스 서버를 새로 설치하면서 레드햇 7.2를 깔았더니 sendmail 버전이 또 올라 갔네요.
어차피 새로 자료 찾아서 sendmail 설정을 하느니, 좀 더 안전하고 빠르다는 qmail 로 바꿔 보려고 합니다.
이 문서는 정계옥<hook7346@hsd.hackerslab.org> 문상준<dakeshi@hsd.hackerslab.org>님이 쓴
"qmail로 메일서버 구축하기 ( 메일 forwarding 과 pop3 설정까지...)" 를 직접 RH 7.2 에서
설치하면서 요약 정리한 것입니다.
이미 있는 좋은 문서를 새로 쓸 생각으로 한 것은 아니고, 저 혼자서 보기 좋게 정리해 두면
다음에 또 설치하게 될 일이 있을 때 편할 것 같아서 요약해 봤습니다.
파란 글씨로 된 부분이 키보드 입력부분이고 옅은 노랑 바탕의 글들은 파일 내용 출력입니다.
- 내 환경과 준비물
리눅스 시스템 : RedHat 7.2 (Enigma)
파일들
qmail-1.03.tar.gz : qmail 소스
qmail-103.patch : dns patch
ucspi-tcp-0.88.tar.gz : inetd 데몬의 개선판, 필수 addon
daemontools-0.76.tar.gz : 유닉스의 서비스들을 관리 모니터링하기 위한 프로그램들을 모아둔 패키지,
필수 addon
rblsmtpd-0.70.tar.gz
checkpassword-0.90.tar.gz : pop3 구현에 필요
fastforward-0.51.tar.gz qmail.tgz
qmail_man.tar.gz
serialmail-0.75.tar.gz
dot-forward-0.71.tar.gz
qmailanalog-0.70.tar.gz
|
그리고 서버의 도메인 이름과 네임서버에서 MX 레코드가 바르게 설정되었다는 가정하에서 작업을 시작한다.
- 설 치
- 루트권한으로 변경한 뒤 소스 풀기 (이후과정은 계속 루트권한이어야 한다.)
su -
cd /src/qmail
tar xvzf qmail-1.03.tar.gz
tar xvzf ucspi-tcp-0.88.tar.gz
tar xvzf daemontools-0.76.tar.gz
tar xvzf rblsmtpd-0.70.tar.gz |
- qmail 설치를 위한 디렉토리를 만들기
필요한 하위디렉토리는 qmail이 자동으로 만들기 때문에, qmail의 홈디렉토리만 만들어 주면 됩니다.
#mkdir /var/qmail
- qmail 실행을 위한 유저와 그룹을 만들기
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
|
#cd /src/qmail/qmail-1.03
#sh INSTALL.ids
- oversize DNS 패치 : 압축을 풀어 둔 qmail의 소스 디렉토리에서
#patch -p1 < ./qmail-103.patch
- qmail 과 연관 프로그램들을 컴파일
저는 /src/qmail 디렉토리 아래에 각각의 소스를 풀었습니다.
# cd /src/qmail/qmail-1.03/
# make
# make setup check
qmail을 위한 다른 프로그램들도 컴파일하고 설치한다.
(ucspi-tcp , daemontools , rblsmtpd)
이 프로그램들은 기본적으로 /usr /local/bin
# cd /src/qmail/ucspi-tcp-0.88/
# make
# make setup check
# cd /src/qmail/daemontools-0.76/
# make
# make setup check
그런데 daemontools 0.76 은 설치방법이 좀 달라진 것 같았는데,
# /src/qmail/admin/daemontools-0.76
#./package/install
해서 설치했음
# cd /src/qmail/rblsmtpd-0.70/
# make
# make setup check
*** rblsmtpd 설치가 안 됨
ucspi-tcp 0.86 이상부터는 rblsmtpd 가 포함되어져 있어서
따로 설치할 필요가 없다고 합니다.
참고 : 어떤 분이 주신 도움말씀
레드햇 7.1에서 설치할 때에는 아마 에러를 만나게 될 것입니다.
먼저, rblsmtpd 패키지는 설치하지 않으셔도 됩니다. 레드햇 7.1 에서는 이미 내장된 기능입니다.
다음, daemontools 패키지를 설치할 때, 꼭 tai64nlocal.c 파일에서 에러가 납니다.
이 문제는 직접 그 파일로 가서,
#include <sys/time.h> 라고 되어있는 부분을
#include <time.h> 로 고쳐주면 됩니다.
*** 저의 경우 (Redhat 7.2 에서는 tai64nlocal.c 소스를 고치지 않아도 컴파일이 되더군요
|
- 기본 control 파일들의 설정을 위하여, qmail config 하기
# cd /src/qmail/qmail-1.03/
# ./config
정상적인 실행결과는 다음과 같다.
[root@ped qmail-1.03]# ./config
Your hostname is chsd.
Your host's fully qualified name in DNS is chsd.chonnam.ac.kr.
Putting chsd.chonnam.ac.kr into control/me...
Putting chonnam.ac.kr into control/defaultdomain...
Putting ac.kr into control/plusdomain...
Checking local IP addresses:
127.0.0.1: Adding localhost to control/locals...
168.131.34.167: Adding chsd.chonnam.ac.kr to control/locals...
If there are any other domain names that point to you,
you will have to add them to /var/qmail/control/locals.
You don't have to worry about aliases, i.e., domains with CNAME records.
Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to those hosts.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[root@ped qmail-1.03]#
|
만약, 위와 같은 메시지가 나오지 않는다면, 당신의 Network 설정 및 DNS 설정에 문제가 있는 경우이다.
DNS 서버에 이름이 정상적으로 등록되어 있다면, Network 설정을 잘 살펴보아야 한다.
잘 살펴보아야 할 설정파일은 다음과 같다.
/etc/resolv.conf
search mydomain.com <--- 특히, 이 줄이 없어서, 문제를 겪은 경우가 있다.
nameserver 168.126.63.1
nameserver 168.126.63.2
|
특히, search [domain name] 라인이 반드시 있어야 한다.
/etc/hosts
127.0.0.1 localhost localhost.localdomain
123.234.123.234 myhost.mydomain.com myhost
123.234.123.231 otherhost.mydomain.com otherhost
|
위 파일의 내용을 확인하고, 내용에 맞추어 수정한다.
/etc/sysconfig/network
..........
..........
HOSTNAME=myhost
DOMAINNAME=mydomain.com
..........
..........
|
위의 라인을 확인하여, 없으면 추가한다.
위의 수정사항을 다 적용하였는데도, 정상적인 config 가 수행되지 않는다면,
그때는 이렇게 한다.
[root@myhost qmail-1.03]# ./config-fast myhost.mydomain.com
config-fast 다음에 서버의 DNS 등록 호스트네임을 다 써주면 된다.
그러면, 정상적으로 다음 설치가 가능하다.
- deamontools 관련 스크립트 작성
qmail 의 서비스들을 모니터링하고 관리해 주는 daemontools 관련 스크립트 작성
- supervise 디렉토리 생성
# 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
- supervise 실행 스크립트 작성
# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
|
# vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
|
# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -p -x/etc/tcp.smtp.cdb \
-u 505 -g 506 0 25 /var/qmail/bin/qmail-smtpd 2>&1
|
위의 "-u 505 -g 506" 에서 505는 alias 의 UID (user ID)이고, 506은 GID (group ID)이다.
컴퓨터마다 등록되는 alias 의 UID와 GID는 다르므로, /etc/passwd 파일을 참조하라.
그리고, 위에서 보이는 "\"기호는 라인이 바뀜 표시임
# vi /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의 log파일을 위한 디렉토리 만들기
# mkdir -p /var/log/qmail/smtpd
# chown qmaill /var/log/qmail /var/log/qmail/smtpd
- system 계정 alias 만들기 : root 와 postmaster를 위한 alias 설정
관리자 계정으로 수신되는 메일을 일반계정으로 포워딩하도록, alias를 설정해 준다.
여기서 silver 는 root, postmaster 등으로 오는 메일을 받을 일반 계정이다.
(여러분이 원하는 계정을 만들어서 바꾸어주면 된다.)
# cd ~alias
# echo silver > .qmail-mailer-daemon
# echo silver > .qmail-postmaster
# echo silver > .qmail-root
- qmail 을 부팅시 실행시켜 줄 자동실행 스크립트 만들기
이 파일을 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장한 후, 실행 퍼미션을 준다.
# vi /etc/rc.d/init.d/qmail
# chmod 755 /etc/rc.d/init.d/qmail
* 아래의 qmail 스크립트 파일 내용은 참고로만 하고
실제로는 qmail.txt 이 파일을 직접 다운로드 받아서
복사해서 사용하는 것이 더 좋겠다.
그리고 레드햇의 경우 ntsysv 에서 qmail 실행은 등록시키고
당연히 sendmail 체크는 제거한다.
/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
|
- 액세스 컨트롤 파일 작성하기
- rule 파일 만들기
qmail smtpd를 구동하기 전에, 액세스 컨트롤이 실행되도록 하여야 한다.
이 간단한 작업은 /etc/tcp.smtp 파일을 이용한다.
/etc/tcp.smtp 에 다음 한 줄을 작성한다.
# vi /etc/tcp.smtp
로컬호스트이외에 어떠한 메일 릴레이도 허락하지 않는 기본적인 configuration이다.
로컬호스트와 당신의 로컬네트웍에게만 메일 릴레이를 허락하는 configuration은
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
:allow
|
액세스 컨트롤에 대한 자세한 설명을 보려면,
다음의 파일을 받아서, 압축을 푼 후에, tcprules에 대한 man 파일을 참조하면 된다.
ftp://ftp.innominate.org/pub/pape/djb/ucspi-tcp-0.88-man.tar.gz
- cdb(데이터베이스)로부터 읽어서 tcpserver 활성화
rule 파일을 만들었으면 tcpserver가 cdb(데이터베이스)로부터 읽어서 활성화할 필요가 있다.
/etc/tcp.smtp 파일로부터 tcprules 프로그램을 이용하여 데이터베이스를 생성한다.
다음의 명령을 수행하면 된다.
# /etc/rc.d/init.d/qmail cdb
또는,
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
- sendmail 제거
우리는 이제 qmail로 모든 메일을 처리할 것이므로, sendmail을 제거하고 qmail을
sendmail로 링크시켜서 sendmail 을 이용하는 프로그램들이 qmail을 이용하도록 만드는 작업
우선 떠있는 sendmail 데몬을 찾아서 없애기
리눅스에서는
# ps ax | grep sendmail <--- sendmail 데몬이 있는지를 확인한다.
# killall -TERM sendmail <--- sendmail 데몬을 제거한다.
# ps ax | grep sendmail <--- 다시 sendmail 데몬이 살아있는지를 확인한다.
위의 명령은 현재 실행중인 sendmail만을 제거할 뿐이다. 컴퓨터가 재시동되면,
다시 sendmail도 재시동되므로, 다음과 같은 명령어로 qmail로 모든 sendmail을 대체한다.
# mv /usr/lib/sendmail /usr/lib/sendmail.old
# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
차라리 # rpm -e --nodeps sendmail 로 완전히 지워버리는게
낫지 않나 ?
- qmail 구동시키는 /var/qmail/rc 생성하기
/var/qmail/rc 파일은 qmail 파일중에서 가장 중요한 파일중의 하나이다.
이것은 qmail을 책임지고 시작하게 한다.
보다 중요한 것은 qmail이 항상 메일을 수신할 수 있도록 한다.
rc 의 내용은 qmail을 위한 기본적인 전송 명령으로 되어 있다.
/var/qmail/boot 디렉토리에 가면, 여러 경우에 대한 rc 파일의 예제가 파일별로 준비되어 있다.
우리는 procmail을 이용하여, 메일을 처리할 것이기 때문에, 다음과 같이 명령을 내린다.
# cp /var/qmail/boot/proc /var/qmail/rc
파일의 내용
#!/bin/sh
# Using splogger to send the log through syslog.
# Using dot-forward to support sendmail-style ~/.forward files.
# Using procmail to deliver messages to /var/spool/mail/$USER by default.
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start '|preline procmail' splogger qmail
|
그리고나서, 약간의 수정을 한다. 다음 에도 나오지만,
우리가 메일 수신을 각자의 홈 디렉토리밑의 ~/Maildir/ 디렉토리로 하기 때문이다.
다음과 같이 수정한다.
# vi /var/qmail/rc
#!/bin/sh
# Using splogger to send the log through syslog.
# Using dot-forward to support sendmail-style ~/.forward files.
# 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
|
./Maildir/ 이것만 추가한 것이다.
- 각 사용자별로 메일 송수신을 위한 디렉토리 만들기.
여기서는 ~/Maildir 디렉토리를 모든 송수신 메일을 저장할 디렉토리로 사용하고 있음
사용자별로 디렉토리를 만들기 위해서는, 반드시 그 사용자가 되어야 한다.
qmail 을 설치하기 전에 존재하는 모든 사용자에게 대해서,
그 사용자 로그인상태에서 다음의 명령을 내려야 한다.
root는 일반계정으로 메일이 포워딩되므로, 해 줄 필요가 없다.
대신에 root계정의 메일을 받을 일반계정(여기서는 앞에서 alias해 준 계정 "silver")에는
반드시 해 주어야 한다.
# su silver
$ /var/qmail/bin/maildirmake $HOME/Maildir
$ echo ./Maildir/ > ~/.qmail
$ exit
# su hook
$ /var/qmail/bin/maildirmake $HOME/Maildir
$ echo ./Maildir/ > ~/.qmail
$ exit
# ................
....................등등...
앞으로 추가되는 사용자마다 일일이 이런 명령을 내린다면 엄청난 시간낭비일 것이다.
그러므로, 사용자가 추가될 때마다 자동으로 이런 과정이 되도록 다음과 같이 한다.
# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# echo ./Maildir/ > .qmail
이제부터는 추가되는 모든 사용자에게
자동으로 Maildir 디렉토리와 .qmail 파일이 생기게 될 것이다.
- 설치후 검사하기 : 리부팅하고, qmail의 정상적인 동작을 확인하기
- log 파일 확인
좀더 확실한 확인을 위해서 시스템을 리부팅시킨다.
리부팅되고나서, /var/log/maillog 파일내용의 끝부분에
qmail: status: local 0/10 remote 0/20 |
이 보이지 않는다면 qmail 설정에 문제가 있는 것이므로,
앞의 과정들을 다시 한번 꼼꼼히 살펴보고, 설정파일들을 자세히 검토해야만 한다.
- process 확인
2) # 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 설정에 문제가 있는 것이다.
※ 위의 1) 2)와 같은 메시지와 프로세서들이 보이지 않는다면,
문서 앞의 과정 [Daemontools관련 스크립트 작성]부터 확인하기 바로 앞 단계 까지 과정을
다시 확인해야 한다
대표적으로 자주 하는 실수
/var/qmail/supervise/qmail-send/log/run 파일과
/var/qmail/supervise/qmail-smtpd/log/run 파일을 만들 때, qmaill을 qmail 로 잘못 쓰는 것
- 메일 송신 테스트하기 (여기서부터는 시스템 root 가 아니어도 됨)
- host 내부에서 사용자간의 메일 송수신을 확인
silver는 호스트안에 계정이 있는 사용자이어야 한다.
% echo to: silver | /var/qmail/bin/qmail-inject
그러면, 내용은 없고 메일헤더만 있는 메일이 바로 silver에게 송신되어 있어야 하고,
새로이 도착되는 메일은 ~silver/Maildir/new/ 밑에 수신메일마다 개개의 파일로 저장된다.
/var/log/maillog 파일안의 끝부분에는 다음과 같은 줄들이 보여야 한다.
qmail: new msg 53
qmail: info msg 53: bytes 246 from <me@domain> qp 20345 uid 666
qmail: starting delivery 1: msg 53 to local me@domain
qmail: status: local 1/10 remote 0/20
qmail: delivery 1: success: did_1+0+0/
qmail: status: local 0/10 remote 0/20
qmail: end msg 53
|
( 53은 inode 숫자이고, 20345 는 프로세서 ID이다.
여러분한테는 이 번호들이 다를 것이다.
- 메일전송 에러를 확인
none은 호스트의 메일사용자계정이 아니어야 한다.
% echo to: none | /var/qmail/bin/qmail-inject
/var/log/maillog 파일안의 끝부분
qmail: new msg 53
qmail: info msg 53: bytes 246 from <me@domain> qp 20351 uid 666
qmail: starting delivery 2: msg 53 to local nonexistent@domain
qmail: status: local 1/10 remote 0/20
qmail: delivery 2: failure: No_such_address.__#5.1.1_/
qmail: status: local 0/10 remote 0/20
qmail: bounce msg 53 qp 20357
qmail: end msg 53
qmail: new msg 54
qmail: info msg 54: bytes 743 from <> qp 20357 uid 666
qmail: starting delivery 3: msg 54 to local me@domain
qmail: status: local 1/10 remote 0/20
qmail: delivery 3: success: did_1+0+0/
qmail: status: local 0/10 remote 0/20
qmail: end msg 54
|
아마 여러분은 전송되지 못하고, 되돌아온 메일을 보게 될 것이다.
- 호스트 외부로의 메일 송신 확인
me@wherever 는 hook@hanmail.net 과 갈은 어떤 유효한 메일 주소이어야 한다.
% echo to: me@wherever | /var/qmail/bin/qmail-inject
/var/log/maillog 파일안의 끝부분
qmail: new msg 53
qmail: info msg 53: bytes 246 from <me@domain> qp 20372 uid 666
qmail: starting delivery 4: msg 53 to remote me@wherever
qmail: status: local 0/10 remote 1/20
qmail: delivery 4: success: 1.2.3.4_accepted_message./...
qmail: status: local 0/10 remote 0/20
qmail: end msg 53
|
라인``starting delivery''와 ``success'' 사이에는 얼마간의 시간적 지연이 있을 수 있다.
me@wherever 라는 메일 계정으로 온 메일을 확인해 보아라.
- 호스트의 root 또는 postmaster 에게 메일을 전송
앞에서 설정한 root, postmaster, mailer-daemon의 alias 의 동작 확인
% echo to: POSTmaster | /var/qmail/bin/qmail-inject
POSTmaster의 alias 를 설정한 계정 (앞에서는 silver)으로 온 메일을 확인한다.
- 메일 수신 테스트하기
(제일 중요한 부분이다. 메일이 송신은 잘되어도, 수신이 안되는 경우가 허다하다.)
- SMTP 서버가 정상적으로 동작하는지를 검사
dude 는 호스트의 유효한 계정이어야 한다.
me@domain 은 hook@hanmail.net 과 같은 유효한 메일주소이어야 한다.
$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 domain ESMTP
helo dude
250 domain
mail <me@domain>
250 ok
rcpt <me@domain>
250 ok
data
354 go ahead
Subject: testing
This is a test.
.
250 ok 812345679 qp 12345
quit
221 domain
Connection closed by foreign host.
$
|
메일이 정상적으로 도착했는지를 확인하다.
- 메일을 다른 호스트의 메일계정으로 포워딩하기
자신의 계정 디렉토리의 .qmail 파일에 포워딩되어질
메일계정을 써주면 된다.
$ cd
$ vi .qmail
메일주소앞에 &기호는 넣어도 되고, 싫으면 넣지 않아도 무관하다.
- pop3 설치하기
- checkpassword 설치
checkpassword 는 사용자명과 암호를 인증하는데 사용된다.
우선 소스 파일 압축을 풀고
#cd /src/qmail
#tar xvzf checkpassword-0.90.tar.gz
checkpassword를 컴파일하고 설치
#cd checkpassword-0.90
#make
#make setup check
- checkpassword 설치 확인
# /var/qmail/bin/qmail-popup chsd.chonnam.ac.kr /bin/checkpassword pwd
+ok <1311.955932232@hsd.chonnam.ac.kr>
user dakeshi
+ok
pass foryou
-ERR authorization failed
|
제대로 password를 입력하지 않는다면, 위와 같은 결과가 나타난다.
제대로 된 password를 입력하면,
# /var/qmail/bin/qmail-popup hsd.chonnam.ac.kr /bin/checkpassword pwd
+ok <1311.955932232@hsd.chonnam.ac.kr>
user dakeshi
+ok
pass forme
/home/dakeshi
|
라고 나올 것이다.
- pop3 자동 실행 스크립트 만들기: /etc/rc.d/rc.local
/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에는 호스트네임과 도메인 네임을 써준다. 여기서는 myhost.mydomain.com)
- pop3 동작 확인 : 리부팅 시켜서
1) 호스트에 계정이 있는 사용자에게 메일을 보낸다.
2) 호스트에 그 계정으로 접속하여 메일이 들어왔는지 확인한다.
3) 자신이 사용하고 있는 메일서비스에 pop설정을 해준 다음 메일을 가져온다.
4) 메일이 정상적으로 읽혀지는지를 확인한다.
이상과 같이 따라 하다가 잘 안 된 부분은
긴 명령이 있는 스크립트 파일에서 \ 가 있을 때였는데
그냥 \를 없애고 한 줄로 길게 만들어서 파일로 저장하니 별 문제 없이 해결되었다.
나름대로 요약해서 설치 성공하긴 했는데, 우려했듯이 릴레이 문제가 걸린다.
혼자 고정IP를 쓰면서 POP3 메일을 쓰려면
액세스 콘트롤을 위한 rule 파일을 만들 때 /etc/tcp.smtp 에서
내가 쓰는 IP 들을 넣고 qmail cdb reloading 해 주면 되겠지만
집에서 동적 IP를 쓰는 몇몇에게 계정을 주기위해선 역시 smtpd-auth 기능이나
vpopmail을 이용하는 수 밖에는 없을 것 같다.
힘들게 정리했지만 새로 KLDP에 있는 vopmail 설치 문서 http://kltp.kldp.org/eunjea/qmail/를 보고
새로 설치해야 할 것 같아 아쉬움이 남는다.
최종 수정일 : 2001-12-22
Simplicity is the ultimate sophistication. 함용대 hamyd@bigfoot.com |