1. Qmail 설치전에 할 일…
컴파일 환경을 갖춘다. cc 또는 gcc를 설치하며, 관련 라이브러리들을 설치하면 된다. 다음으로 필요한 화일들을 다운로드 받는다.
2.Qmail을 컴파일 하기 전에 Ucspi-TCP를 설치해야한다. Qmail이 이것을 이용한다(tcpserver를 이용함).
Ucspi-TCP(UNIX Client-Server Program Interface)는 tcpserver, tcpclient 처럼 작은 프로그램들로 구성된 커맨드라인 인터페이스 클라이언트서버 통신 툴이다. 이것은 xinetd나 inetd를 대체할 수 있는 프로그램 정도로 생각하면 된다.
먼저, source화일을 다운로드 받는다.
http://cr.yp.to/ucspi-tcp.html 다운로드가 가능하다.
source를 풀고, conf-home 화일에서 설치 디렉토리를 변경할 수 있다.(그냥 컴파일 설치하면 /usr/local/bin에 화일들이 설치됨) conf-cc에서 컴파일러 옵션을 변경할 수 있다.
다음에 , (설치디렉토리를 변경하지 않았다면)
make
make setup check
chmod 0510 /usr/local/bin/tcpserver
chmod 0510 /usr/local/bin/tcpclient
별 에러가 없다면 설치가 성공적으로 이루어진 것이다.
2. Qmail 설치.
http://qmail.org/netqmail-1.05.tar.gz (source 화일을 다운로드 받는다.)
패치를 해야하는데, solaris용 gnu patch를 구할 수 없어서 컴파일 해서 설치했지만, 제대로 인식을 하지 못했다. 그래서, 리눅스머신에서 collate.sh를 실행해서 패치한후 패치한 소스를 가져왔다.
컴파일전에 Qmail을 실행하기위한 사용자와 그룹을 만들어준다. qmail은 root권한으로 실행되지 않는다.
# groupadd -g 81 nofiles > /dev/null 2>&1 || :
# groupadd -g 82 qmail > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail -g 81 -s /bin/false -u 81 qmaild > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail/alias -g 81 -s /bin/false -u 82 alias > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail -g 82 -s /bin/false -u 83 qmailq > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail -g 82 -s /bin/false -u 84 qmailr > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail -g 82 -s /bin/false -u 85 qmails > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail -g 81 -s /bin/false -u 86 qmaill > /dev/null 2>&1 || :
# useradd -c “Qmail server” -d /var/qmail -g 81 -s /bin/false -u 87 qmailp > /dev/null 2>&1 || :
홈디렉토리를 만들어준다.
# mkdir /var/qmail
# chown 0:qmail /var/qmail
# mkdir -p /etc/qmail/alias
# mkdir -p /etc/qmail/control
# mkdir -p /etc/qmail/users
# ln -sf /etc/qmail/alias /var/qmail
# ln -sf /etc/qmail/control /var/qmail
# ln -sf /etc/qmail/users /var/qmail
# ln -sf /usr/bin /var/qmail/bin
# ln -sf /usr/share/man /var/qmail/man
소스화일이 있는 디렉토리로 이동후
cc-conf를 열어 자신의 컴파일 환경에 맞게 변경한다.
cc -O2를
-O3 -m64 -fno-omit-frame-pointer
로 변경했다.
SMTP_AUTH를 사용하기위해서 qmail-smtp-auth를 설치한다.
http://members.elysium.pl/brush/qmail-smtpd-auth/ 에서 다운로드한다.
qmail-smtpd-auth-0.31.tar.gz 를 풀고
# cp auth.patch /usr/local/source/netqmail-1.05/netqmail-1.05/
# cp base64.c /usr/local/source/netqmail-1.05/netqmail-1.05/
# cp base64.h /usr/local/source/netqmail-1.05/netqmail-1.05
(/usr/local/source/netqmail-1.05/netqmail-1.05에 qmail 소스화일이 있다).
load 에서 cc 를 찾을수 없다는 에러
화일열어서 cc를 gcc로 변경
에러..
make: warning: Clock skew detected. Your build may be incomplete.
이것은 load파일을 수정했을 경우 나타나는 에러다.
find ./ -name “[Mm]akeFile” -exec touch \{\} \;
안됨..
해결방안.
gcc를 cc에 심볼릭 링크..
#make
#make setup check
sendmail 라이브러리를 사용하는 프로그램들을 위해서 심볼릭 링크를 걸어준다.
#ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# ln -sf /var/qmail/bin/qmail-qread /usr/bin/mailq
# rm -rf /var/qmail/boot/
# rm -rf /var/qmail/doc/
# maildirmake /etc/skel/Maildir
./config
Your hostname is smtp.
hard error
Sorry, I couldn’t find your host’s canonical name in DNS.
You will have to set up control/me yourself.
You’ll have to run the config-fast script located in the same source directory as follows:
./config-fast smtp.domain.com
Here I assume that your domain is domain.com and the hostname of your computer is smtp.
postmaster, mailer-daemon, root를 위한 alias를 설정함.(bash 셸로)
# echo sysadmin > .qmail-postmaster
# echo sysadmin > .qmail-mailer-daemon
# echo sysadmin > .qmail-root
# chmod 644 .qmail-*
# chown root:nofiles .qmail-*
사용자들은 홈디렉토리에 Maildir 을 만들어주기 위해서
# maildirmake $HOME/Maildir
이렇게 하면 홈디렉토리에 Maildir이 생성된다.
여기까지 성공했다면 qmail의 컴파일 설치는 끝이다.
3. qmail 설정하기.
qmail의 모든 설정 화일은 /etc/qmail/control 에 위치한다.
/etc/qmail/control/me –> 도메인이 저장되어 있으며 설치시 정확한 정보를 입력했다면 변경할 필요가 없다.
/etc/qmail/control/locals –>로컬호스트가 메일을 처리할 도메인들의 리스트.
(sendmail의 local-host-names와 비슷한 듯 하다.)
/etc/qmail/control/rcpthosts –> qmail 서버 사용이 허락된 도메인들의 리스트. 여기에 리스트가 없으면 메일을 받지 않는다(?)
이 화일은 가상메일호스팅(virtual mail hosting)과 관련되어 있다.
/etc/qmail/control/defaultdomain –>qmail이 사용하는 도메인 네임이 들어가는 화일이다. (호스트네임은 필요없다)
/etc/qmail/control/plusdomain –>역시 도메인 네임이 들어가는데, 아직 용도는 잘 모르겠다.(아시는분 리플좀…)
4. checkpassword 설치
source 화일을다운로드 한다.
http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
압축을 풀고,
#make
#make setup check
5. 테스트
qmail 데몬을 tcpserver를 이용하여 구동한다.
#tcpserver -p -c 1024 -DRHl localhost 0.0.0.0 25 /usr/bin/tcp-env \
tcp-env /usr/bin/qmail-smtpd /bin/checkpassword /bin/true &
# /usr/local/bin/tcpserver -c 1024 -DRHl localhost 0.0.0.0 110 /usr/bin/qmail-popup \
`hostname ` /bin/checkpassword /usr/bin/qmail-pop3d Maildir &