자... 필요한 파일들이 모두 준비되었다면 일단 Qmail 을 설치한다.
이미 qmail(아무런 패치도 가하지 않은) 을 설치한 시스템 이라면 다음장인 vpopmail 로 넘어간다.
만약 당신이 열심히 sendmail 이 돌아가고 있는 서버에 설치를 해야 한다 해도 걱정할것은 전혀 없다. 이 문서를 끝까지 읽고 모든 설정을 마친후 sendmail 에서 qmail 로의 전환은 수초에 끝낼수 있으며, qmail 데몬을 시동하기 전까지는 아무런 영향도 미치지 않는다. 필자도 하루에 수만통을 배달하는 서버들을 qmail로 전환하는데 아무런 장애도 주지 않았다.
다음 순서대로 하면 되는데 하나라도 잊거나 틀리면 문제가 생기니 주의 하도록
일단 타볼을 풀고 tarx qmail-1.03.tar.gz cd qmail-1.03 |
다음 디렉토리를 만든다.
mkdir /var/qmail
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 |
sh INSTALL.ids 해주면 필요한 유저,그룹이 생성된다. (시간이 남아도는 사람은 위 명령들을 하나하나 입력해도 좋다 :-))
Qmail 컴파일 하기
make make setup check |
다음 기본 control 파일들의 설정을 위해
./config
이것이 정상적으로 실행 되었다면 /var/qmail/control/ 안에는 qmail이 정상적으로 작동하기 위한 설정 파일들이 생겨야 한다. 만약 그렇지 않다면 서버의 DNS 설정에 문제가 있는것이다. 더 자세한것은 qmail 문서를 참조하라
이쯤에서 qmail을 위한 몇가지 부수적인 프로그램들을 (ucspi-tcp , daemontools , rblsmtpd, autorespond)을 설치한다. 다음과 같이 간단하다.
tar xzf ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 make make setup check tar xzf daemontools-0.70.tar.gz cd daemontools-0.70 make make setup check tar xzf rblsmtpd-0.70.tar.gz cd rblsmtpd-0.70 make setup check tar xzf autorespond-1.0.0.tar.gz cd autorespond-1.0.0 gcc -Wall -o autorespond autorespond.c cp autorespond /usr/local/bin/ |
모두 이상없이 설치가 되었다면 다시 qmail 을 위해 파일을 만든다.
vi /var/qmail/rc
#!/bin/sh exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start ./Maildir/ splogger 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 |
위와 같이 alias 의 UDI,GDI 를 사용 한다.
/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 데몬이 메일을 중계할 주소를 적어주는 것이다. 192.168.1.1 은 당연히 설치할 서버의 주소로 바꿔야 한다. 그외 메일을 중계 해줄 서버의 주소가 있다면 같은 형식으로 추가한다.
/etc/tcp.smtp 의 내용 127.0.0.1:allow,RELAYCLIENT="" 192.168.1.1:allow,RELAYCLIENT="" |
후에 이 파일에 변경이 있는 경우 다음의 qmail 부트 스크립트를 이용해 다음과 같이 한다.
/etc/rc.d/init.d/qmail cdb
만약 주 도메인의 메일 계정들도 모두 vpopmail 로 관리할 것이 아니라면 (필자는 주 도메인의 메일 계정들도 모두 vpopmail 로 관리할것을 권장한다.) 몇가지 알리아스를 설정해 준다. 여기서 silver 는 root, postmaster 등으로 오는 메일을 받을 일반 계정이다.
cd ~alias echo silver > .qmail-mailer-daemon echo silver > .qmail-postmaster echo silver > .qmail-root |
다음은 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 |
위의 것을 그대로 복사,저장 하거나 이곳에서 받는다. http://kltp.kldp.org/tmp/qmail.txt. 이것을 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장한후 실행 퍼미션을 준다. 다음 ntsysv 실행시키면 qmail 이라는 새로운 항목이 보일것이다. 리부팅 할때 qmail 데몬이 실행되도록 체크해준다. 당연히 sendmail 은 언체크. (redhat 이외 계열의 배포본은 알아서 하세요. 부팅할때 뜨도록 ;-))
qmail 설치 끝~
복잡 한듯 싶지만 알고 보면 그렇지도 않다 ;-) 이쯤에서 잊은것이 없는지 처음부터 하나하나 다시 살펴보는 것도 좋겠다. 잘 설치된 qmail을 마지막 그 순간(?)까지 잘 놔두고 다음장으로 넘어가자.