qmail 따라잡기
1.1 1. 필요한 것들
1.2 2. patches
![[http]](http://wiki.nuxinfo.net/imgs/http.png)
- glibc 2.3.1 이상에서는 컴파일이 제대로 되지 않습니다. 각각의
패치 (
local)를 받아 적용 후 컴파일 합니다.
- 0.0.0.0을 local IP 주소로 인식하게 하는
패치 (
local)
- qmail이 sendmail을 emulation할때 -f 옵션이 From: 헤더를 설정하도록 하는
패치 (
local)
- 위 패치를 설치하고, 칵테일 패치 적용시 실패합니다.
qmail.org에서 권장하는 패치는 이미 칵테일 패치에 적용되어 있습니다. (칵테일 패치를 먼저 해놓고 권장패치를 일일이 비교해보니 이미 다 수정되어 있더군요.) 아마도 그래서 실패하는 것 같습니다. –kirrie
- 데비안 사지에서는 칵테일 패치 적용후 컴파일이 되지 않습니다.
왜 안되는지 알려 주실 수 있나요? — 임은재 2004-04-20 02:04:51
기존 칵테일 패치엔 auto_spawn.c 의 값이 255로 되어 있는 반면에 현재 패치에는 1000으로 되어 있습니다. 게시판 보고 참조했는데 아직 패치에 수정이 가해지지 않은 듯 하네요. - 칵테일 패치에 들어있는 TLS 기능을 완전히 세팅하지 않고 두면, thawte.com의 메일서버처럼 TLS로 접속을 시도하는 서버에서 아래와 같이 되어 버립니다.
635 > 454 TLS missing certificate: error:0200100D:system library:fopen:Permission denied (#4.3.0) 635 < QUIT
TLS로 접속하는 첨단(?) ESMTP서버들이 별로 없기에 망정이지… 완전히 episode 1 보이지 않는 위험 입니다.
1.3 3. daemontools, ucspi-tcp
$ tar xzf ucspi-tcp-0.88.tar.gz $ cd ucspi-tcp-0.88 $ make $ make setup check
daemontools
$ mkdir -p /package $ chmod 1755 /package $ mv daemontools-0.76.tar.gz /package $ cd /package $ tar xzf daemontools-0.76.tar.gz $ rm daemontools-0.76.tar.gz $ cd admin/daemontools-0.76 $ package/install
daemontools의 설치가 끝나면 svscanboot가 자동으로 시작됩니다 (*BSD는 재부팅).
1.4 4. qmail 컴파일/설치
$ mkdir /var/qmail $ mkdir /var/qmail/alias
$ tar xzf qmail-1.03.tar.gz $ cd qmail-1.03
$ 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
Qmail을 컴파일/인스톨 합니다.
$ make $ make setup check
$ ./config
$ ./config-fast foobar.org
1.5 5. 스크립트 만들기
$ 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
Q_UID=`/usr/xpg4/bin/id -u qmaild` Q_GID=`/usr/xpg4/bin/id -g qmaild`
![[http]](http://wiki.nuxinfo.net/imgs/http.png)
$ 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
![[http]](http://wiki.nuxinfo.net/imgs/http.png)
127.0.0.1:allow,RELAYCLIENT="" 192.168.1.1:allow,RELAYCLIENT=""
$ tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
1.6 6. POP 서버
vpopmail을 사용하지 않고 시스템 로그인 계정을 사용할 것으로 결정 했다면 암호 인증을 위한 checkpassword를 받습니다.
checkpassword 설치
$ tar xzf checkpassword-0.90.tar.gz $ cd checkpassword-0.90 $ make $ make setup check
$ mkdir -p /var/qmail/supervise/qmail-pop3d/log $ chmod +t /var/qmail/supervise/qmail-pop3d $ mkdir /var/log/qmail/pop3d $ chown qmaill /var/log/qmail/pop3d
FQDN은 서버의 호스트 이름(FQDN)을 적어줍니다.
$ chmod 755 /var/qmail/supervise/qmail-pop3d/run $ chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
1.7 7. SMTP, POP 데몬 시작하기
- sendmail 실행 파일
sendmail 바이너리를 사용하는 다른 어플리케이션들을 위해 대신 qmail의 그것을 링크 해줍니다.
$ ln -s /var/qmail/bin/sendmail /usr/lib $ ln -s /var/qmail/bin/sendmail /usr/sbin
- 기본 alias 계정
다음 세가지 기본 알리아스 계정은 반드시 만들어 줍니다.
- postmaster
- mailer-daemon
- root
이 주소들로 도착하는 메일을 받아볼 일반 계정으로 알리아스를 만들어야 하는데, 만약 로컬 계정이 silver 라면 다음과 같이 만듭니다.
$ 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
- qmail 시작하기
다음과 같이 daemontools 서비스 디렉토리에 링크를 걸어주면 5초 이내에 qmail MTA가 시작됩니다.
$ ln -s /var/qmail/supervise/qmail-send /service/ $ ln -s /var/qmail/supervise/qmail-smtpd /service/
이렇게 한번 링크를 걸어 두면 시스템을 재부팅 하더라도 daemontools에 의해 자동으로 재시작 됩니다.
시작/정지등의 명령을 좀더 쉽게 하기위해 만들어진 스크립트를 사용할 수 도 있습니다. 다음 url의 파일을 적당한 이름으로 저장한 후 실행 권한을 주고 사용하시면 됩니다.
- pop 서버 시작하기
pop3 서버도 같은 요령으로 daemontools 서비스 디렉토리에 링크만 걸어주면 됩니다.
$ ln -s /var/qmail/supervise/qmail-pop3d /service