-
들어가면서
이번에 리눅스 서버를 새로 설치하면서 레드햇 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
- supervise 디렉토리 생성
- 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
:allow
로컬호스트이외에 어떠한 메일 릴레이도 허락하지 않는 기본적인 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
- rule 파일 만들기
- 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 로 잘못 쓰는 것
- log 파일 확인
- 메일 송신 테스트하기 (여기서부터는 시스템 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)으로 온 메일을 확인한다.
- host 내부에서 사용자간의 메일 송수신을 확인
- 메일 수신 테스트하기
- 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
&mine@hanmail.net
메일주소앞에 &기호는 넣어도 되고, 싫으면 넣지 않아도 무관하다.
- 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) 메일이 정상적으로 읽혀지는지를 확인한다.
- checkpassword 설치
(제일 중요한 부분이다. 메일이 송신은 잘되어도, 수신이 안되는 경우가 허다하다.)
- SMTP 서버가 정상적으로 동작하는지를 검사
이상과 같이 따라 하다가 잘 안 된 부분은
긴 명령이 있는 스크립트 파일에서 \ 가 있을 때였는데
그냥 \를 없애고 한 줄로 길게 만들어서 파일로 저장하니 별 문제 없이 해결되었다.
나름대로 요약해서 설치 성공하긴 했는데, 우려했듯이 릴레이 문제가 걸린다.
혼자 고정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.
함용대