<h3><a name="top">Qmail 설치 가이드</a></h3>
2003/08/28 - 패치 관련 항목 추가<br>
2002/07/08 - 첫번째 문서
<ol>
<li>이 글은 sendmail을 대체하는 현대적인 메일 전송 에이전트(MTA)인 Qmail의 설치 가이드 입니다.
<li>이 글은 qmail의 설치 방법만을 설명합니다.
<li>이 글에서는 qmail의 기술적인 면은 설명하지 않습니다.
<li>이 글은 qmail+vpopmail 문서의 qmail 설치 부분과 중복됩니다. vpopmail을 사용하시려는 분들은 <a href="qmail/">qmail + vpopmail</a>문서를 보세요.
</ol>
<li><a name="patches"><b>patches</b></a>
<p>
qmail.org에서 <a href="http://qmail.org/top.html#patches">추천하는 몇가지 패치들</a>이 있습니다.
<ul>
<li>glibc 2.3.1 이상에서는 컴파일이 제대로 되지 않습니다.
각각의 <a href="http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/">패치</a> (<a href="http://qmail.kldp.org/src/patches/glibc-2.3.1/">local</a>)를 받아 적용 후 컴파일 합니다.
<li>0.0.0.0을 local IP 주소로 인식하게 하는 <a href="http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch">패치</a> (<a href="http://qmail.kldp.org/src/patches/qmail-0.0.0.0.patch">local</a>)
<li>qmail이 sendmail을 emulation할때 -f 옵션이 From: 헤더를 설정하도록 하는 <a href="http://david.acz.org/software/sendmail-flagf.patch">패치</a> (<a href="http://qmail.kldp.org/src/patches/sendmail-flagf.patch">local</a>)
</ul>
<p>
<li><a name="tools"><b>daemontools, ucspi-tcp</b></a>
<p>
필요한 파일들이 모두 준비되었나요?
받은 몇가지 파일들을 적당한 디렉토리에 옮겨 놓고 이제 설치를 시작합시다.
<p>
일단 daemontools, ucspi-tcp를 먼저 설치하도록 하죠
(daemontools는 시스템 서비스를 관리하기 위한 도구들의 모음으로 ucspi-tcp와 같이 사용하면 inetd/xinetd 같은 구시대 수퍼 데몬을 완전히 대체할 수 있습니다).
<p>
<a name="ucspi-tcp"><b>ucspi-tcp</b></a>
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ tar xzf ucspi-tcp-0.88.tar.gz
$ cd ucspi-tcp-0.88
$ make
$ make setup check
</FONT></PRE></TD></TR></TABLE>
<p>
<a name="daemontools"><b>daemontools</b></a>
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ mkdir -p /package
$ chmod 1755 /package
$ cd /package
$ mv daemontools-0.76.tar.gz /package
$ tar xzf daemontools-0.76.tar.gz
$ rm daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76
$ package/install
</FONT></PRE></TD></TR></TABLE>
daemontools의 설치가 끝나면 svscanboot가 자동으로 시작됩니다 (*BSD는 재부팅).
<p>
<b>/var/qmail/supervise/qmail-send/log/run</b> 파일
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#DCDCDC"><PRE>
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
</PRE></TD></TR></TABLE>
<p>
<b>/var/qmail/supervise/qmail-smtpd/run</b> 파일
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#DCDCDC"><PRE>
#!/bin/sh
Q_UID=`id -u qmaild`
Q_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -vHRl 0 -x /etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
</PRE></TD></TR></TABLE>
<p>
참고: 솔라리스에서는 스크립트 내용을 다음과 같이 수정합니다.
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#DCDCDC"><PRE>
Q_UID=`/usr/xpg4/bin/id -u qmaild`
Q_GID=`/usr/xpg4/bin/id -g qmaild`
</PRE></TD></TR></TABLE>
<p>
스크립트를 만들때 인용 부호를 실수하는 경우가 많은데 <a href="http://qmail.kldp.org/hfaq/#11">이 글</a>을 참고하라.
<p>
<b>/var/qmail/supervise/qmail-smtpd/log/run</b> 파일
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#DCDCDC"><PRE>
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd
</PRE></TD></TR></TABLE>
<p>
지금 까지 만들어 놓은 파일들에 실행 권한을 줍니다.
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ 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
</FONT></PRE></TD></TR></TABLE>
<p>
다음은 qmail-smtpd 를 위한 로그 디렉토리 만들기
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ mkdir -p /var/log/qmail/smtpd
$ chown qmaill /var/log/qmail /var/log/qmail/smtpd
</FONT></PRE></TD></TR></TABLE>
<p>
마지막으로 릴레이를 위한 파일은 /etc/tcp.smtp를 수정하는데 일단 메일 서버 자신만의 릴레이가 허용되도록 하는 파일을 만듭시다.
서버의 ip가 192.168.1.1 이라고 한다면 다음과 같이 될것 입니다 (<a href="qmail_relay.php">릴레이에 관한 더 자세한 설명</a>).
<p>
<b>/etc/tcp.smtp</b> 파일
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#DCDCDC"><PRE>
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.1:allow,RELAYCLIENT=""
</PRE></TD></TR></TABLE>
<p>
이렇게 tcp.smtp를 수정한 후에는 항상 cdb 형식의 파일로 바꿔줘야 합니다.
<p>
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
</FONT></PRE></TD></TR></TABLE>
<p>
<li><a name="pop"><b>POP 서버</b></a>
<p>
POP 서버는 메일 계정을 어떻게 운영할 것인가에 따라 달라지는데 개인적으로 vpopmail을 사용할 것을 권장합니다. vpopmail은 하나의 uid/gid로 무제한의 도메인, 메일 계정을 만들어 줄 수 있으며, 관리가 매우 편합니다.
만약 vpopmail을 사용할 것이라고 결정 했다면 다음 문서를 참고 하세요.
<ul>
<li><a href="http://kldp.org/~eunjea/qmail">Qmail + vpopmail</a>
</ul>
<p>
vpopmail을 사용하지 않고 시스템 로그인 계정을 사용할 것으로 결정 했다면 암호 인증을 위한 checkpassword를 받습니다.
<ul>
<li><a href="http://cr.yp.to/checkpwd.html">checkpassword</a>
</ul>
<p>
<b>checkpassword 설치</b>
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ tar xzf checkpassword-0.90.tar.gz
$ cd checkpassword-0.90
$ make
$ make setup check
</FONT></PRE></TD></TR></TABLE>
<p>
pop 서버 구동을 위한 디렉토리/파일 만들기
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ mkdir /var/qmail/supervise/qmail-pop3d
$ chmod +t /var/qmail/supervise/qmail-pop3d
$ mkdir /var/log/qmail/pop3d
$ chown qmaill /var/log/qmail/pop3d
</FONT></PRE></TD></TR></TABLE>
<p>
<b>/var/qmail/supervise/qmail-pop3d/run</b> 파일
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \
FQDN /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
</FONT></PRE></TD></TR></TABLE>
FQDN은 서버의 호스트 이름(FQDN)을 적어줍니다.
<p>
<b>/var/qmail/supervise/qmail-pop3d/log/run</b> 파일
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
/var/log/qmail/pop3d
</FONT></PRE></TD></TR></TABLE>
<p>
만들어진 파일에 실행 권한...
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ chmod 755 /var/qmail/supervise/qmail-pop3d/run
$ chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
</FONT></PRE></TD></TR></TABLE>
<p>
<li><a name="start"><b>SMTP, POP 데몬 시작하기</b></a>
<p>
이미 설치되어 있거나 실행되고 있는 메일 서버나 POP 데몬이 있다면 중지 시키고, 시스템에서 삭제합니다.
<p>
<ul>
<li><a name="sendmail"><b>sendmail 실행 파일</b></a>
<p>
sendmail 바이너리를 사용하는 다른 어플리케이션들을 위해 대신 qmail의 그것을 링크 해줍니다.
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ ln -s /var/qmail/bin/sendmail /usr/lib
$ ln -s /var/qmail/bin/sendmail /usr/sbin
</FONT></PRE></TD></TR></TABLE>
<p>
<li><a name="alias"><b>기본 alias 계정</b></a>
<p>
다음 세가지 기본 알리아스 계정은 반듯이 만들어 줍니다.
<p>
<ol>
<li>postmaster
<li>mailer-daemon
<li>root
</ol>
<p>
이 주소들로 도착하는 메일을 받아볼 일반 계정으로 알리아스를 만들어야 하는데, 만약 로컬 계정이 silver 라면 다음과 같이 만듭니다.
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ echo silver > /var/qmail/alias/.qmail-root
$ echo silver > /var/qmail/alias/.qmail-postmaster
$ echo silver > /var/qmail/alias/.qmail-mailer-daemon
$ cd /var/qmail/alias/
$ chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon
</FONT></PRE></TD></TR></TABLE>
<p>
<li><a name="qmail_start"><b>qmail 시작하기</b></a>
<p>
다음과 같이 daemontools 서비스 디렉토리에 링크를 걸어주면 5초 이내에 qmail MTA가 시작됩니다.
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
ln -s /var/qmail/supervise/qmail-send /service/
ln -s /var/qmail/supervise/qmail-smtpd /service/
</FONT></PRE></TD></TR></TABLE>
<p>
이렇게 한번 링크를 걸어 두면 시스템을 재부팅 하더라도 daemontools에 의해 자동으로 재시작 됩니다.
<p>
시작/정지등의 명령을 좀더 쉽게 하기위해 만들어진 스크립트를 사용할 수 도 있습니다.
다음 url의 파일을 적당한 이름으로 저장한 후 실행 권한을 주고 사용하시면 됩니다.
<p>
<ul>
<li><a href="http://kldp.org/~eunjea/qmail-startup.txt">qmail-startup.txt</a>
</ul>
<p>
<li><a name="pop_start"><b>pop 서버 시작하기</b></a>
<p>
pop3 서버도 같은 요령으로 daemontools 서비스 디렉토리에 링크만 걸어주면 됩니다.
<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"><TR><TD BGCOLOR="#000000"><PRE><FONT COLOR="#FFF8DC">
$ ln -s /var/qmail/supervise/qmail-pop3d /service
</FONT></PRE></TD></TR></TABLE>