2. 설치

큐메일의 설치를 설명합니다. 경험이 있는 시스템애드민은 소스배포판에 있는 INSTALL의 지시사항을 따라서 큐메일을 설치할 수 있습니다. INSTALL지시사항은 공식 설치지시사항입니다. 그것은 본문서인 lwq의 지시사항보다 복잡하고, 읽는 사람이 경험있는 시스템애드민과 메일애드민이라고 여깁니다. 또한 그것은 오래되어서, Bernstein께서 현재 권장하는 방법들을 반영하지 않기도 합니다.

-------------------------------------------------------------

유의점: 다음의 지시사항을 읽으실때 하나도 빼지말고 읽어서 전체과정을 익히시기 바랍니다.

-------------------------------------------------------------

2.1. 설치 논의

2.1.1. 바이너리 대 소스코드

미리컴파일된 배포판관련 라이센싱제약때문에, 큐메일은 보통 소스코드배포판으로 설치합니다.

소스코드와 바이너리를 구분하시기 어렵다면, 집으로 피지를 배달한다고 가정하십시오. 바이너리버전피자는 즉시 먹을 수 있게 배달됩니다. 소스코드피자는 밀가루, 효모, 치즈, 토핑, 그리고 요리방법 등을 포함한 장비일체로 배달됩니다. 소스코드설치는 일을 좀더 많이 해야 하지만, 지시사항을 철저하게 따르면, 그 결과는 같거나 더 좋습니다. 직접 만들어 먹는 피자는 더 신선하고, 좋아하는 토핑을 맞춰먹을 수 있으며, 자신이 만든 피자에 대해, 그것이 어떻게 만들어졌는 지에 대해 더 많이 알게 됩니다.

2.1.2. Tarball과 운영체제별 패키지

소스코드설치를 자동으로 하는 방법을 제공하는 운영체제도 있습니다. 피자로 다시 비유하자면, 단추만 누르면 피자가 저절로 구워지도록 재료와 지시사항을 패키지하는 것입니다.

훌륭하지 않습니까?

실제로는 그렇게 좋지만은 않은 방법입니다. 패키지로 묶기가 매우 힘들고, 생각대로 움직이지 않을 수가 있습니다. 또한 그것도 소프트웨어이므로, 다른것들처럼, 벅이 있을 수도 있습니다. 벅이 없더라도, 그 편리함은 그 만한 대가를 치루게 됩니다. 스스로 만들어보는 피자의 이점인 자신의 기호에 맞춰서 토핑을 조정하고, 피자가 어떻게 만들어지고, 어떻게 작용하는 지 등을 잃게 됩니다.

큐메일이 피자라면, 스스로 컴파일해볼 수도 있을지 모릅니다. 그런데, 피자가 아닙니다. 복잡한 시스템이 되어놔서 잘 운영하려면 설치자와 유지자는 잘 이해해야 합니다. 자동설치 큐메일이 수동설치판보다 설치하기에 쉽습니다만, 수동설치판이 설정하고 문제점을 해결하는 데 쉽습니다. 시스템에 큐메일을 한번만 설치하면 되지만, 때때로 재설정해야할 수도 있고, 생각대로 메일이 흐르지 않는 이유를 파악해야 할 수도 있습니다.

이래서, 저는 큐메일을 RedHat이나 기타 자동설치번들이 아닌 소스크드 tarball로 설치하시기를 권고합니다.

2.2. 준비

큐메일을 시스템에 설치하기 전에, 큐메일설치를 처음으로 한다면, 몇가지 고려사항이 있습니다.

2.3. 시스템 필요사항

큐메일은 대부분의 유닉스와 유닉스류 시스템에 설치되고 운영됩니다만 몇가지 필요사항이 있습니다.

2.4. 소스를 받으십시오.

오우케이, 이제 큐메일을 설치할 수 있도록 필요사항에 맞는 시스템을 준비하셨군요. 첫번째 단계는 큐메일과 다른 앳온의 소스코드를 다운로드하는 것입니다. 큐메일은 당연히 필요하고요, ucspi-tcp와 daemontools도 필요할 것입니다.

웹브라우저나 FTP 클라이언트를 이용해서 이 파일들을 가져오세요.

-------------------------------------------------------------

유의점: 위의 연결이 유효하지 않다면, 해당 패키지가 업데잇되었을 수도 있습니다. http://cr.yp.to/software.html에 가셔서 현재판을 받으세요. 업그레이드판은 다음의 설치설명과 틀릴 수도 있으니까, "Upgrading from previous versions..."의 release notes를 참조하세요.

-------------------------------------------------------------

2.5. 소스를 컴파일하세요.

2.5.1. 컴파일환경을 검증하세요.

첫번째 할일은 프로그램을 컴파일하기에 필요한 툴을 갖추었는 지 확인합니다. 이것은 사용하는 유닉스종류에 따릅니다. 말씀드릴 수 있는 가장 쉬운 방법은, 보장되지는 않지만, 해보는 겁니다.

-------------------------------------------------------------

유의점: 이것들중 하나라도 통과하면, 다음 항목으로 넘어가셔도 됩니다.

-------------------------------------------------------------

명령행프롬트에서, cc라 쓰고, 엔터를 누르세요: 

$ cc 
cc: No input files specified
$

답이 비슷하게 나오면, C 컴파일러가 경로에 있는 것입니다. 그렇지 않더라도, 설치되어 있지 않다는 것은 아닙니다. 설치되어 있을 지 모르지만, 경로에 포함되어 있지 않을 수도 있습니다. 물론, 설치되어 있지 않을 수도 있습니다. 이렇게 해보세요.

  • /usr/bin/cc

  • /usr/bin/gcc

  • /usr/local/bin/cc

  • /usr/local/bin/gcc

  • /usr/ccs/bin/cc

소용이 없으면, 플랫폼 특성에 맞는 방법으로 하셔야 합니다. 프롬트에서 다음 중 하나를 하시는데, 사용중인 OS에 따르셔야 합니다.

  • Red Hat Linux: rpm -qa | grep gcc 또는 rpm -qa | grep egcs

  • FreeBSD: GCC가 디폴트로 포함됩니다.

이번 항목에서는 큐메일을 실제로 컴파일하는 단계를 거칩니다. 오려붙이기가 간편하지만, 그렇게 필요하지는 않습니다.

2.5.2. 배포판을 풉니다.

여기까지 오셨으면, 이미 C 컴파일러와 tarball을 준비하신 겁니다. 타볼을 작업하실 디렉토리로 복사하거나 옮기세요. qmail과 ucspi-tcp는 /usr/local/src가 좋고, daemontools는 /package로 하셔야 합니다.

아직 룻이 되지 않으셨으면, 이제 룻이 되셔야 합니다.
su
umask 022
mkdir -p /usr/local/src
mv qmail-1.03.tar.gz ucspi-tcp-0.88.tar.gz /uar/local/src
mkdir -p /package
chmod 1755 /package
mv daemontools-0.76.tar.gz /package

이제 패케지들을 풉니다.
cd /usr/local/src
gunzip qmail-1.03.tar.gz
tar xpf qmail-1.03.tar
gunzip ucspi-tcp-0.88.tar.gz
tar xpf ucspi-tcp-0.88.tar
rm *.tar	 # 여유공간이 없을 때 하는 선택사항
cd /package
gunzip daemontools-0.76.tar.gz
tar xpf daemontools-0.76.tar
rm *.tar         # 선택사항

/usr/local/src/qmail-1.03, /usr/local/src/ucspi-tcp-0.88, /package/admin/daemontools-0.76 등의 디렉토리가 생깁니다. qmail-1.03 디렉토리로 가시면 시작하겠습니다.
cd /usr/local/src/qmail-1.03

2.5.3. 디렉토리를 만듭니다.

필요한 섭디렉토리는 큐메일 설치 프로그램이 만들므로, 큐메일 홈디렉토리만 만들어 주면 됩니다.
mkdir /var/qmail

그러면 다음 항목으로 갑니다.

-------------------------------------------------------------

유의점: 큐메일파일들을 /var가 아닌 다른 곳에 놓고 싶으시면, /var/qmail디렉토리에 그곳을 가리키는 심볼릭 링크를 만드시면 됩니다. 예를 들면, 다음과 같이 하시면 됩니다.
mkdir /var/qmail
ln -s /usr/man /var/qmail/man
mkdir /etc/qmail
ln -s /etc/qmail /var/qmail/control
ln -s /usr/sbin /var/qmail/bin

-------------------------------------------------------------

2.5.4. 사용자와 그룹을 만듭니다.

필요한 사용자와 그룹을 만드는 가장 쉬운 방법은 작은 스크립트를 만들어서 하는 것입니다. 소스디렉토리에 INSTALL.ids 파일이 있습니다. 거기에는 여러 프랫폼에 해당하는 명령행이 있는데, 그 파일을 다른 이름으로 복사해서 편집하면 빠르고 쉽습니다.
cp INSTALL.ids IDS

좋아하시는 에디터로 필요한 행을 빼고 다 지웁니다. 예를 들면, 편집후에 FreeBSD에 대한 IDS는 다음과 같습니다.
pw groupadd nofiles
pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
pw groupadd qmail
pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
pw useradd qmails -g qmail -d /var/qmail -s /nonexistent

실행하려면, chmod를 써서 실행파일로 만드시거나 sh로 실행하십시오.

첫번째 방법:
chmod 700 IDS
./IDS

두번째 방법:
/bin/sh IDS

스크립트의 실행이 완료되어 사용자와 그룹이 생기면 다음항목으로 갑니다.

그러나, INSTALL.ids에 해당 시스템이 없으면 어쩝니까? 수동으로 그것들을 만들어야 합니다. 좋아하는 에디터를 사용해서 /etc/group을 편집하세요. 다음 두 줄을 그 파일끝에 첨가하십시오.
qmail:*:2107:
nofiles:*:2108:

-------------------------------------------------------------

유의점: 2107과 2108이 사용중인 것이 아님을 확인하셔야 합니다. 사용중이라면, 다른 비사용번호를 써야 합니다.

-------------------------------------------------------------

다음으로는, vipw를 이용해서 다음 줄들을 그 파일의 끝에 붙이십시오. (대부분의 시스템에 vipw가 있지만, 없으면 에디터로 /etc/passwd를 편집합니다.)
alias:*:7790:2108::/var/qmail/alias:/bin/true
qmaild:*:7791:2108::/var/qmail:/bin/true
qmaill:*:7792:2108::/var/qmail:/bin/true
qmailp:*:7793:2108::/var/qmail:/bin/true
qmailq:*:7794:2107::/var/qmail:/bin/true
qmailr:*:7795:2107::/var/qmail:/bin/true
qmails:*:7796:2107::/var/qmail:/bin/true

-------------------------------------------------------------

유의점: 7790-7796이 사용중이지 않는다는 것과 2107과 2108이 위에서 만든 그룹아이디와 것을 확인하십시오. 그렇지 않다면, 비사용번호를 적으세요.

-------------------------------------------------------------

이런 것들을 해당파일의 끝에만 첨가해야 하는 것은 아니지만, 그래야 설명하기가 제일 쉽습니다.

다음 항목으로 가실 준비가 되셨군요.

2.5.5. 컴파일을 하세요.

이제 큐메일을 컴파일을 시작하셔도 됩니다.

컴파일환경을 검증한다항목에서, C 컴파일러를 지정하셨습니다. 그것이 cc가 아니거나 디렉토리가 PATH환경변수에 있지 않으면 conf-cc와 conf-ld를 편집하십시오. 컴파일러가 gcc이고, PATH에 있다고 하면, conf-cc와 conf-ld를 가볍게 편집하고, cc를 gcc로 바꾸십시오.

그렇게 하셨으면 명령행 프롬트에 다음과 같이 하세요.
make setup check

컴파일이 끝나면, 설치후설정을 하셔야 합니다. 이 일을 쉽게 해주는 스크립트가 두어개 있습니다.

DNS가 제대로 설정되었다면, 다음 스크립트를 실행하기만 하면 됩니다.
./config

어떤 이유로 config가 DNS에서 hostname을 찾지 못하면, config-fast script를 실행하셔야 합니다.
./config-fast 호스트네임.완전.경로

예를 들면, 도메인이 example.com이고, 당신컴퓨터의 호스트네임이 dolphin이라면, config-fast를 다음과 같이 실행합니다.
./config-fast dolphin.example.com

-------------------------------------------------------------

역자주: 공인아이피주소가 있는 분들은 위의 config만으로 되겠지만, 전화선을 이용한 다이얼업사용자나 요즘 활발한 케이블모뎀이나 ADSL모뎀 등을 이용하여 유동아이피를 이용하시는 분들은 config-fast를 이용하시면 됩니다. 우선 config-fast localhost.localdomain 으로 설치하신 다음에 나중에 설명하는 /var/qmail/control에 있는 locals, me, rcpthost, virtualdomains 등에 원하시는 적절한 도메인네임을 적으면 유동아이피사용자가 동적디엔에스를 이용해서 외부에 연결되는 이메일서버를 만들 수 있습니다.

-------------------------------------------------------------

큐메일이 시스템에 설치되어서 가동될 준비가 되었습니다! 다음항목은 큐메일을 가동하고 시험하는 단계를 안내합니다.

2.6. ucspi-tcp를 설치합니다.

먼저번에 qmail, ucspi-tcp, daemontools 타볼을 풀었습니다. 예제에서 그것들을 /usr/local/src/qmail에 풀었습니다. 자 ucpsi-tcp디렉토리로 옮깁시다.
cd /usr/local/src/qmail/ucspi-tcp-0.88

'컴파일을 하세요'항목에서, conf-cc와 conf-ld를 고치셨으면, 이 디렉토리에서도 똑같이 해줍니다.

그런뒤에 다음과 같이 하십시오.
make
make setup check
이것뿐입니다. ucspi-tcp가 설치되었습니다.

2.7. daemontools를 설치합니다.

daemontools 컴파일디렉토리로 이통합니다.
cd /usr/local/src/qmail/daemontools-0.76

또 한번, conf-cc와 conf-ld를 qmail과 ucspi-tcp 컴파일시 고쳤으면, 이 디렉토리에서도 똑같이 합니다.

그리고 다음과 같이 합니다.
package/install

(/etc/inittab이 없는) BSD시스템들에서는 여기서 리붓을 해서 주서비스통제데몬인 svscan을 시동해야 합니다.

"ps -ef | grep svscan" 또는 "ps waux |grep svscan" 을 하셔서 svscan이 작동하는 지 살펴보세요.

2.8. 큐메일을 가동합니다.

2.8.1. /var/qmail/rc

/var/qmail/boot디렉토리에는 여러가지 설정에 대한 본보기 큐메일 붓 스크립트가 있습니다. /var/spool/mail 대신 $HOME/Mailbox, procmail 또는 dot-forward를 이용하기, 그리고 이것들의 다양한 결합. 한번 부담없이 검토해보시기 바랍니다. 우리는 설치를 위해서 다음을 이용하겠습니다.:
#!/bin/sh

# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"

에디터로 위의 내용을 /var/qmail/rc로 만드시고, 다음과 같이 명령합니다.
chmod 755 /var/qmail/rc
mkdir /var/log/qmail

이쯤에서, .qmail파일이 전달하지 못하는 메세지들에 대한 기본전달모드를 결정해야 합니다. 다음의 테이블에 몇가지 공통선택이 간략히 예시되어 있습니다.

표 3. 공통선택사항

Mailbox format Name Location defaultdelivery Comments
mbox Mailbox $HOME ./Mailbox 가장많이쓰이고, 대부분의 MUA가 지원함
maildir Maildir $HOME ./Maildir/ 신뢰도가 높지만, 지원하는 MUA가 적음
mbox username /var/spool/mail See INSTALL.vsm 전통유닉스메일복스

정보를 더 원하시면 INSTALL.mbox, INSTALL.maildir, INSTALL.vsm 등을 보십시오.

기본 메일복스 형태를 고르시려면, 위의 테이블의 defaultdelivery 값을 /var/qmail/control/defaultdelivery에 적어넣으십시오.

예) 표준 큐메일 Mailbox 전달을 선택하시려면 다음과 같이 합니다.
echo ./Mailbox >/var/qmail/control/defaultdelivery

-------------------------------------------------------------

유의점: defaultdelivery는 표준 큐메일 통제 파일이 아닙니다. 위의 /var/qmail/rc파일의 특징입니다.

-------------------------------------------------------------

-------------------------------------------------------------

역자주: 위에서 표준 큐메일 Mailbox라 함은, 큐메일배포판에 있는 설정파일에는 Mailbox가 기본사항으로 되있기 때문입니다. maildir를 사용하시려면 다음과 같이 하십시오.
echo ./Maildir/ >/var/qmail/control/defaultdelivery

그리고 사용자마다, 또는 시스템애드민이 대신, 다음과 같이해서 사용자홈디렉토리에 Maildir를 만듭니다.
/var/qmail/bin/maildirmake $HOME/Maildir
echo ./Maildir/ > ~/.qmail

큐메일 설치가 다 끝나고, 시스템이 맘에 들면, 다음과 같이 해서 사용자를 새로 등록할 때마다 자동으로 그 사용자 홈에 Maildir가 만들어지게 합니다.
/var/qmail/bin/maildirmake /etc/skel/Maildir
echo ./Maildir/ > /etc/skel/.qmail

-------------------------------------------------------------

2.8.2. 시스템 기동 파일

2.8.2.1. qmailctl 스크립트

-------------------------------------------------------------

역자주: 설치과정이 좀 헛갈릴까봐 또는 복잡해보이는 분들을 위해서 설명하겠습니다. 지금까지 해서 큐메일 기본설치는 다 되었습니다. 이제부터는 큐메일을 기동, 유지, 운영하는 설정을 하는데, 그 중심파일이 바로다음의 qmailctl 파일입니다. qmailctl에서 다루는 tcpserver, svc, tcprules 등의 명령어 사용법을 눈여겨 보시면 도움이 많이 되겠습니다.

-------------------------------------------------------------

/var/qmail/rc 스크립트를 수동으로 실행하셔야 하면, 큐메일은 부분가동합니다. 그러나, 우리는 큐메일이 시스템이 부팅할때마다 자동으로 가동하기를 원하고, 시스템이 정지할 때는 깨끗하게 꺼지기를 원합니다.

이것은 startup/shutdown스크립트를 다음과 같이 작성하면 됩니다.

#!/bin/sh
# For Red Hat chkconfig
# chkconfig: - 30 80
# description: the qmail MTA

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH


QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`

case "$1" in
start)
echo "Starting qmail"
if svok /service/qmail-send ; then
svc -u /service/qmail-send
else
echo qmail-send service not running
fi
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd
else
echo qmail-smtpd service not running
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo "	qmail-smtpd"
svc -d /service/qmail-smtpd
echo "	qmail-send"
svc -d /service/qmail-send
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "Sending ALRM signal to qmail-send."
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /service/qmail-send
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
;;
cont)
echo "Continuing qmail-send"
svc -c /service/qmail-send
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd
;;
cdb)
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
chmod 644 /etc/tcp.smtp.cdb
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
flush -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac

exit 0

이 스크립트는 http://www.lifewithqmail.org/qmailctl-script-dt70에서도 구할 수 있습니다.

에디터로 스크립트를 만들거나 웹브라우저로 다운로드 (권장사항)해서 시스템의 init.d 디렉토리에 설치하는 과정을 설명하겠습니다.

우선, 다음같이 해서 /var/qmail/bin/qmailctl 로 만듭니다.

에디터를 이용해서 직접 스크립트를 만들 때:
 
 vi /var/qmail/bin/qmailctl 
다운로드받아서 옮길 때:
 
 cp ~/qmailctl-script-dt70 /var/qmail/bin/qmailctl 

다음으론, 시스템의 init.d디렉토리에 설치하시는데, 다음과 같은 장소가 됩니다.

  • /etc/init.d

  • /sbin/init.d

  • /etc/rc.d/init.d

해당 rc 디렉토리가 /etc/init.d라고 하면 다음과 같이 합니다.
ln -s /var/qmail/bin/qmailctl /etc/init.d/qmail

모든 시스템이 다음을 행하여 qmailctl 스크립트를 실행가능하게 하고, path에 연결합니다.
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin

다음에는 스크립트를 몇개의 rc디렉토리에 링크시키셔야 합니다. 이 데렉토리들은 rcN.d같이 되어있는데, N은 적용 runlevel입니다. 기동디렉토리 구조가 복잡해서 본 문서에는 다루지 않습니다. 그러니 간단한 지시사항이 맘에 차지 않으시면 시스템문서를 참조하십시오. rc 디렉토리는 다음중 하나일 겁니다.

  • /etc

  • /sbin

  • /etc/rc.d

링크를 만드시는데, 다음과 같이 하십시오. RCDIR를 시스템의 rc 디렉토리의 장소로 바꾸십시오.
ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail
ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail
ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail
ln -s ../init.d/qmail RCDIR/rc6.d/K80qmail

-------------------------------------------------------------

역자주: 데비안사용자들은 위와 같이 일일히 링크를 직접 만들 지 않고, 다음의 명령으로 한번에 할 수 있습니다.
update-rc.d qmail defaults
그리고, 데비안사용자들중에서 exim을 사용하시는 분이 계신다면, 다음과 같이 exim의 링크를 없애고, exim도 지웁니다.
update-rc.d -f exim remove
rm /etc/init.d/exim
이것으로 exim과는 이별입니다.

-------------------------------------------------------------

-------------------------------------------------------------

유의점: 전단계의 숫자는 매우 시스템에 의존합니다. 그렇지만 다소 유연합니다. Sendmail이 현재 설치되어 있으면, "find RCDIR -name "*sendmail" -print" 명령을 실행하면 시스템에 적용할 수 있는 숫자를 알려줍니다.

-------------------------------------------------------------

-------------------------------------------------------------

역자주: 원문의 qmailctl 설치순서가 좀 헛갈려서 제가 조정하였습니다. 원문대조후 또는 설치후에 다른 의견이 있으시면 알려주십시오.

-------------------------------------------------------------

2.8.2.2. 감독 스크립트들

이제 큐메일서비스를 위해 감독디렉토리를 만드십시오.
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
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -l 0 -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
   -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

-------------------------------------------------------------

유의점: concurrencyincoming은 표준큐메일통제파일이 아니고, 위의 스크립트의 특징입니다.

-------------------------------------------------------------

-------------------------------------------------------------

유의점: Solaris에서는 id 프로그램이 이 스크립트하고 다르므로, /usr/xpg4/bin/id 만 써서 다음과 같이 적어 넣습니다.
QMAILDUID=`/usr/xpg4/bin/id -u qmaild`
NOFILESGID=`/usr/xpg4/bin/id -g qmaild` 

-------------------------------------------------------------

-------------------------------------------------------------

유의점: softlimit 명령에서 정한 메모리한계는 운영체제와 하드웨어 플랫폼에 따라서 더 높여야만 할 수도 있습니다. 25번 포트에 접근하지 못하거나, 원격시스템으로부터 이메일을 못받으면 3000000 이나 4000000 으로 높여 보세요.

-------------------------------------------------------------

concurrencyincoming 파일을 다음과 같이 만듭니다.
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming

/var/qmail/supervise/qmail-smtpd/log/run파일을 만드십시오.
#!/bin/sh
 exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

run파일들에 실행가능을 부여합니다.
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

그런 다음에, 로그디렉토리를 만듭니다.
mkdir -p /var/log/qmail/smtpd					 
chown qmaill /var/log/qmail /var/log/qmail/smtpd

끝으로, 감독디렉토리들을 /service로 연결합니다.
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

-------------------------------------------------------------

유의점: 이렇게 연결들을 하고 나면 큐메일시스템이 자동실행됩니다. 아직 가동하고 싶지 않으면, 다음과 같이 하세요.

qmailctl stop

-------------------------------------------------------------

2.8.2.3. SMTP 접근 프로토콜

로컬호스트가 SMTP를 통해서 메일을 삽입 (inject)하도록 합니다.
echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp	
qmailctl cdb

2.8.3. 기존에 설치된 MTA를 멈추고 무력하게 합니다.

큐메일과 현존하는 MTA, 대개 Sendmail, 두개를 사용할 수도 있지만, 그렇게 하지 않을 것을 강력히 권고합니다. 그리고, 솔직히 말해서, 이 글을 읽고 계신다면, 그게 무엇을 뜻하는 지 모르실 겁니다. :-)

현존 MTA가 Sendmail이라면, init.d 스크립트를 stop인수를 주어 실행하여 멈출 수 있습니다. 예) 다음 중 하나가 유효할 겁니다.
/etc/init.d/sendmail stop	   
/sbin/init.d/sendmail stop    
/etc/rc.d/init.d/sendmail stop

init.d/sendmail 스크립트를 찾을 수 없다면, "ps -ef|grep sendmail" 또는 "ps waux|grep sendmail"을 사용해서 sendmail의 PID를 알아낸 뒤에, 다음과 같이 해서 멈춥니다.
kill PID-of-sendmail

MTA가 Sendmail이 아니면, 해당문서에서 바른 멈춤 절차를 참고하십시오.

-------------------------------------------------------------

역자주: 데비안사용자, 그중에서도 exim을 사용하신다면, /etc/inetd.conf에서 exim을 찾아서 그 줄의 맨앞에 #표시를 하여 주석처리하고, /etc/init.d/의 exim을 없애야 합니다.

-------------------------------------------------------------

시스템에서 기존의 MTA를 완전히 제거하는 것도 고려해볼 만합니다. 적어도 init.d 스크립트를 무력하게 하면 시스템이 재부팅할 때 다시는 가동하지 않습니다.

레드햇리눅스에서는 다음과 같이 해서 Sendmail을 제거합니다.
rpm -e --nodeps sendmail

끝으로, 기존의 /usr/lib/sendmail을 큐메일판으로 바꿉니다.
mv /usr/lib/sendmail /usr/lib/sendmail.old                # 에러를 무시하세요
mv /usr/sbin/sendmail /usr/sbin/sendmail.old             # 에러를 무시하세요
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old     # 에러를 무시하세요
ln -s /var/qmail/bin/sendmail /usr/lib 
ln -s /var/qmail/bin/sendmail /usr/sbin 

-------------------------------------------------------------

유의점: 기존하는 sendmail이 있던 없던 sendmail 연결을 만들어야 합니다. 많은 응용프로그램들이 sendmail을 이용해서 이메일을 보내려고 하기 때문입니다.

-------------------------------------------------------------

끝단계는 시스템앨리어스를 두어개 만드는 것입니다.

2.8.4. 시스템앨리어스를 만듭니다.

모든 큐메일설치에서는 시스템앨리어스를 세개 만들어야 합니다.

표 4. 앨리어스들

앨리어스 목적
postmaster RFC2821 요구사항이며, 메일애드민 (당신)을 가리킵니다.
mailer-daemon 바운스메일에 대한 사실상의 표준수취인
root 특권계정에서 온 메일을 시스템애드민에게 보낸다.

이 앨리어스들을 만들려면, 그것들 하나하나가 어디에 놓여져야 하는 지 (로컬사용자, 또는 원격주소) 결정하고, .qmail파일을 만들어서 갖다놓으면 됩니다. 예를 들어, 로컬사용자 dave는 시스템과 메일의 애드민이라고 하면 다음과 같이 합니다.
echo dave > /var/qmail/alias/.qmail-root 
echo dave > /var/qmail/alias/.qmail-postmaster 
ln -s /var/qmail/alias/.qmail-postmaster
/var/qmail/alias/.qmail-mailer-daemon 
chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster

INSTALL.alias에서 더 자세하게 보세요.

2.8.5. 큐메일을 가동합니다.

/service에 링크들을 만든 다음에 큐메일의 가동을 중지시켰다면, 지금 다시 가동시켜야 합니다.
qmailctl start

2.9. 설치를 시험합니다.

큐메일이 지금쯤 운행하고 있을겁니다. TEST.deliver, TEST.receive에 있는 지시사항을 따르면 제대로 작동하고 있는 지 검사할 수 있습니다. 이들 지시사항을 이용하면, 로그는 splogger가 아닌 multilog가 만든다는 것을 알아두십시오.

-------------------------------------------------------------

역자주: 처음 설치해보는 분들을 위해 daemontools의 동작방법을 간단히 설명드려서 큐메일의 운용상황을 파악하는데 도움이 되도록 하겠습니다.

daemontools가 동작하는 흐름을 한줄로 적으면 다음과 같습니다. /etc/inittab -> /command/svscanboot -> svscan -> supervise -> /service

daemontools를 설치하면, /etc/inittab에 /command/svscanboot를 적어 넣습니다. svscanboot 스크립트를 보면 svscan을 부르게 되어 있고, 이는 supervise를 불러서 /service 디렉토리에 작용하게 합니다. supervise는 /service내의 모든 디렉토리와 각 디렉토리 안의 log 디렉토리에 있는 run 파일을 실행합니다. 그리고 실행하는 디렉토리마다 supervise를 만들어서 여러 데이터를 적어놓고 svstat이 이용하도록 합니다.

-------------------------------------------------------------