큐메일 서버 구축 #1 - 프롤로그
글쓴이: 티니 (2003년 11월 02일 오후 09:11) 읽은수: 1,095
이 글을 읽어주시는 분들께 감사의 말을 드립니다.
지금부터 제작하는 문서는 제가 처음 큐메일을 대면했을때 사용했던 문서와
제가 실제 서버를 구축하면서 어려웠던 점과 고생했던 점을 포함하여 작성한 것입니다.
(이 페이지는 임은재님의 하우투을 참고하며 제 의견을 보충 했습니다.
원 저작권은 임은재님께 있으며 수정된 문서의 저작권은 저에게 있습니다.)
∵ 필자가 소개하는 Qmail
일반적으로 Unix/Linux 기반의 MTA는 Sendmail을 많이 사용하고 있습니다.
그러나 Sendmail은 프로그램이 단일화 되어 보안에 상당히 취약하며
사용함에 있어서도 불편한점이 많고 또 많은 전문지식을 필요로 합니다.
(이 글을 쓰는 필자역시 센드메일을 그다지 신뢰하지 못하고 있습니다.)
하지만 Qmail은 모듈방식을 채택하여 사용하기 편리하며 그 기능또한 매우 다양 합니다.
∵ Qmail 제작자와 제작 의도
Qmail은 D. J. Bernstein 교수가 제작했으며 2003년 11월 현재 3,000,000 개 이상의 서버에서
Qmail이 사용되고 있습니다.
또한 하루에 수십, 수백 만통의 메일을 배달해야만 하는 대형 서버들의 Qmail 사용과 제작자의 보안에 대한 보장은 그 신뢰도를 더해 주고 있습니다.
∵ Qmail 메일의 특징과 장점
1. 안전성
-> Qmail을 통해 시스템에 침입할 수 없습니다.
실제 Qmail은 발표된 이후로 아직까지 알려진 보안 사고가 없으며 Bernstein 교수가 Qmail을
만들게 된 동기 역시 정기적으로 알려지곤 하는 Sendmail이나
다른 MTA의 보안 구멍때문이었다고 합니다.
2. 신뢰성
-> Qmail은 메세지를 절대 잃어버리는 일이 없습니다.
Qmail은 NFS 파일 시스템상에서도 안전한 Maildir 형태 메일함의 선구자입니다.
Maildir 형태는 Qmail에서 처음으로 사용하기 시작한 메일함 형식으로 배달이
이루어 지고 있는 동안에 시스템이 다운되더라도 파일 시스템에 문제가 생기지 않는
유일한 메일함이며 NFS 파일 시스템상에서 동시에 여러개의 메일이 배달되고 있는 동안에도
사용자가 메일을 읽을 수 있는 안전한 메일함입니다.
3. 속도
-> Qmail은 메세지를 Sendmail보다 빠르게 처리하면서 안정성을 잃지 않습니다.
특히 수 많은 메일을 동시에 배달해야 하는 메일링 리스트의 경우 가장 빠른 성능을 보이죠.
한 예를 들면 1000개 이상의 각기 다른 호스트에 메일을 배달하는데 76초 밖에 걸리지 않으니까요.
4. 간단함
-> Qmail은 다른 어떠한 MTA 보다도 작습니다.
포워딩, 알리아싱, 메일링 리스트 메카니즘을 독립적으로 가지고 있는 다른 MTA들과는 다르게
Qmail은 한가지의 간단한 포워딩 메카니즘을 사용해 모든 기능을 구현하였습니다.
다른 MTA가 "빠르고 불안전한 -> 느린 큐" 방식의 배달 방식을 사용하는것 과는 달리
Qmail은 새로운 아이템을 즉시 큐에 넣으므로 "빠른 큐"라는 하나의 배달 방식만을 사용합니다.
5. 능률
-> Qmail은 오래된 486 16M 시스템에서 하루에 70,000통 이상의 메일을 처리하는데
무리가 없을 정도로 그 성능과 능률이 뛰어납니다.
6. 메일링 리스트
-> Qmail은 일반유저가 메일링 리스트를 제어할 수 있기 때문에
유저가 관리자를 괴롭힐 필요가 없게 되었습니다.
7. 가상 호스트 구축
-> 쉬운 가상 호스트 구축으로 Qmail은 다중 도메인 지원의 선구자입니다.
8. 직관적인 관리
-> Qmail은 최소한의 작업으로 관리가 손쉽습니다.
9. 유연한 배달 프로그램
-> Qmail은 외부 메일 프로세서를 위한 강력한 인터페이스를 제공합니다.
10. 다양한 OS 지원
-> Qmail은 동일한 소스로 포팅이 필요 없이 대부분의 UNIX 시스템을 지원합니다.
AIX, BSD/OS, FreeBSD, HP/UX, Irix, Linux, NetBSD, OpenBSD, OSF/1, SunOS, Solaris, 기타..
∵ Qmail의 모듈화 디자인
-> Qmail은 번스타인 교수의 다른 소프트웨어들 처럼 특정한 목적을 가지고 있는 작은 프로그램들의
모음이라 할 수 있는데 예를 들어 네트워크로 부터의 메일 수신은 qmail-smtpd가
외부로의 전송은 qmail-remote가 메일큐의 관리는 qmail-queue가 전담하는 식입니다.
∵ 다양한 애드언과 패치
-> Qmail의 모듈화된 구조는 새로운 기능을 추가하기 위한 다양한 에드언들의 개발을 쉽게 함으로써
이미 수많은 에드언들이 개발/제공되고 있으며, 관련 프로젝트도 많이 진행되고 있습니다.
몇가지 예를 들면...
1. vpopmail
-> vpopmail은 Qmail하에서 가상 도메인/유저를 쉽게 관리하는 통합 관리 도구로
qmailadmin과 같이 사용함으로써 모든 관리를 웹으로 편리하게 할 수 있는 소프트웨어 입니다.
2. Qmail-ldap
-> LDAP와 Qmail의 연동을 위한 패키지와 문서와 Qmail이 어떻게 메세지를 처리하는지 이해하는데
큰 도움이 되는 그림 (big qmail picture)을 제공합니다.
3. Qmail + mysql
-> Qmail과 MySQL 연동 프로젝트
4. Qmail-Scanner
-> Qmail용 메일 바이러스 검사기로 대부분의 유료 바이러스 검사기와 연동하여
사용할 수 있는 것이 장점입니다.
5. Maildrop
-> procmail을 대체하는 로컬 MDA, 필터링 도구
6. ezmlm
-> Qmail의 제작자가 만든 메일링 리스트 관리 도구로 설정과 관리가 매우 간단하고 쉽습니다.
7. Qmail-smtpd-auth
-> 유동 IP 사용자들의 SMTP 릴레이 지원을 위한 패치
※ 이 외에도 필요에 따라 사용할 수 있는 수많은 에드언과 패치가 존재하며, 관련 정보와 뉴스들은
http://qmail.org (영문)의 웹 사이트와 Qmail 메일링 리스트
<qmailannounce-subscribe(at)list.cr.yp.to>등과 한국 Qmail 홈 페이지에서 찾아 볼 수 있으며
Qmail과 MySQL을 연동한 한글 웹 메일 프로젝트도 진행 중입니다.
∴ Qmail 설치
Qmail 을 설치할 때 구성할 수 있는 경우의 수는 매우 다양합니다.
어떤 인증 모듈을 사용하는지, IMAP 지원 여부, 스팸 필터링 기능 지원 여부, QmailAdmin 지원 여부,
Webmail 지원 여부 등등에 따라 수많은 경우가 있을 수 있습니다
#2 - 필요한 프로그램 준비
이제부터 큐메일 설치를 하도록 하겠습니다.
그러나 요리를 하려면 재료가 필요 하듯이 메일서버를 구축하려면
그에 맞는 여러가지 프로그램이 필요 합니다.
필요한 프로그램을 구할 수 있는 URL을 알려드립니다.
각 프로그램에 대한 설명은 설치문서에 적겠습니다.
※ 필자가 설치문서를 제작하면서 사용한 서버 환경은 RH 7.3입니다.
∵ Qmail
-> ftp://ftp.eu.uu.net/pub/unix/mail/qmail/
∴ Qmail-ej-cocktail-Patch
-> http://kldp.org/~eunjea/qmail/patch/
∴ ucspi-tcp
-> http://cr.yp.to/ucspi-tcp/install.html
∴ daemontools
-> http://cr.yp.to/daemontools/install.html
∴ vpopmail
-> http://www.inter7.com/vpopmail.html
∴ courier-imap
-> http://prdownloads.sourceforge.net/courier/
∴ qmail-scanner
-> http://prdownloads.sourceforge.net/qmail-scanner/
∴ maildrop
-> http://prdownloads.sourceforge.net/courier/
∴ Mail-SpamAssassin
-> http://www.spamassassin.org/downloads.html
∴ Time-HiRes
-> http://search.cpan.org/~jhi/
∴ qmailadmin
-> http://www.inter7.com/qmailadmin.html
∴ ezmlm
-> http://cr.yp.to/ezmlm.html
∴ ezmlm-idx
-> http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/
∴ autorespond
-> http://www.inter7.com/osfree.html
∴ squirrel-webmail
-> http://www.squirrelmail.org/download.php
#3 - ucspi-tcp, daemontools 설치
프로그램이 모두 준비되었으면 이제부터 본격적인 설치를 시작해 봅시다.
우선 큐메일은 혼자서 작동하지 않기 때문에 데몬과 연계해서 실행해야 합니다.
큐메일의 실행은 xinetd와 tcpserver로 할 수 있습니다.
그러나 보안과 속도면에서 큐메일과 잘 맞는 tcpserver로 실행할 것을 권장 합니다.
- 필자는 tcpserver를 이용하여 큐메일 서버를 구축하도록 하겠습니다. -
※ 설치를 시작하기 전에 모든 프로그램을 /usr/local/src/ 로 옮겨주시기 바랍니다.
∴ ucspi-tcp 설치 (Version. 0.88)
[root@www root]# cd /usr/local/src/
[root@www src]# tar xfz ucspi-tcp-0.88.tar.gz
[root@www src]# cd ucspi-tcp-0.88
[root@www ucspi-tcp-0.88]# make
[root@www ucspi-tcp-0.88]# make setup check
※ 만약 서버가 RH 9.0 이라면 error.h 파일을 열어 첫번째줄에
#include <errno.h>을/를 추가해주시기 바랍니다.
이는 gcc 버전이 변경되었기 때문 입니다.
∴ daemontools 설치 (Version. 0.76) [root@www root]# cd /usr/local/src/
[root@www src]# mkdir /package
[root@www src]# chmod 1755 /package
[root@www src]# tar xfz daemontools-0.76.tar.gz -C /package
[root@www src]# /package/admin/daemontools-0.76/package/install
※ 만약 서버가 RH 9.0 이라면 error.h 파일을 열어 첫번째줄에
#include <errno.h>을/를 추가해주시기 바랍니다.
이는 gcc 버전이 변경되었기 때문 입니다.
#4 - Qmail 설치
큐메일은 AUTH 릴레이를 여러가지로 허용할 수 있습니다.
- 시스템 계정 (/etc/passwd)
- cmd5checkpw (/etc/poppasswd)
- checkpassword + mysql (유저 데이터를 db에 저장)
- vchkpw (vpopmail pop 유저 데이터를 사용, db또는 vpasswd)
그러나 필자는 vpopmail을 로밍서비스를 이용하여 릴레이를 허용하겠습니다.
아래는 vpopmail 로밍서비스에 맞도록 설치되는 큐메일 설치법 입니다.
∴ 칵테일 패치 (Version. 14)
[root@www root]# cd /usr/local/src/
[root@www src]# tar xfz qmail-1.03.tar.gz
[root@www src]# tar xfz qmail-ej-cocktail-14.tar.gz
[root@www src]# cd qmail-1.03
[root@www qmail-1.03]# patch -p1 < ../qmail-ej-cocktail-14/cocktail.patch
※ 패치도중 hunk나 fail이 나온다면 큐메일이 바닐라 소스가 아닌 것입니다.
반드시 큐메일 바닐라 소스를 이용하시기 바랍니다.
∴ 큐메일 설치 (Version. 1.03)
[root@www root]# cd /usr/local/src/qmail-1.03/
[root@www qmail-1.03]# mkdir -p /var/qmail/alias
[root@www qmail-1.03]# sh INSTALL.ids
[root@www qmail-1.03]# make
[root@www qmail-1.03]# make setup check
[root@www qmail-1.03]# ./config
∴ 컨피그 메세지 비교 (정상적인 메세지)
[root@www qmail-1.03]# ./config
Your hostname is www.
Your host's fully qualified name in DNS is www.domain.co.kr.
Putting www.domain.co.kr into control/me...
Putting domain.co.kr into control/defaultdomain...
Putting co.kr into control/plusdomain...
Checking local IP addresses:
127.0.0.1: Adding localhost to control/locals...
100.100.100.101: Adding www.domain.co.kr to control/locals...
If there are any other domain names that point to you,
you will have to add them to /var/qmail/control/locals.
You don't have to worry about aliases, i.e., domains with CNAME records.
Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to those hosts.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[root@www qmail-1.03]#
∴ 컨피그 메세지 비교 (비정상적인 메세지)
[root@www qmail-1.03]# ./config
Your hostname is mail.domain.co.kr.
hard error
Sorry, I couldn't find your host's canonical name in DNS.
You will have to set up control/me yourself.
[root@www qmail-1.03]
※ 만약 이처럼 비정상적인 메세지가 나온다면 Network와 DNS 문제 입니다.
DNS가 설치되어 있고 DNS 서버에 이름이 정상적으로 등록되어 있다면
Network 설정을 잘 살펴보아야 합니다.
[root@www root]# cat /etc/resolv.conf
search domain.co.kr
nameserver 100.100.100.101
nameserver 100.100.100.102
※ 필자는 search 부분을 등록하지 않은 서버를 세팅할때 고생한적이 있습니다.
search [domain name] 부분은 반드시 있어야 합니다.
[root@www root]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
100.100.100.101 domain.co.kr www
[root@www root]# cat /etc/sysconfig/network
.......................
HOSTNAME=www
DOMAINNAME=domain.co.kr
.......................
[root@www root]#
※ 호스트네임과 도메인네임부분 또한 반드시 있어야 합니다.
그러나 위의 사항을 모두 적용하였는데도 정상적인 config 가 수행되지 않을때가 있습니다.
그럴때는 아래와 같이 해주시면 됩니다.
[root@www qmail-1.03]# ./config-fast mail.domain.co.kr
※ config-fast [메일서버의 DNS 등록 호스트네임]
∴ 큐메일 설치 확인
[root@www qmail-1.03]# ll /var/qmail/control
※ 큐메일이 정상적으로 설치 되었다면 /var/qmail/control/ 안에는
큐메일이 정상적으로 작동하기 위한 설정 파일들이 생깁니다.
∴ 컨트롤 파일의 수정
[root@www root]# cd /var/qmail/control
[root@www control]# cat locals
localhost
[root@www control]# cat me
domain.co.kr
[root@www control]# cat plusdomain
domain.co.kr
[root@www control]# cat rcpthosts
[root@www control]#
※ 컨트롤 파일을 위와 같이 수정합니다.
rcpthosts는 vpopmail을 이용시 자동으로 추가되므로
반드시 공백으로 두시기 바랍니다.
∴ 큐메일 데몬을 위한 디렉토리와 스크립트 파일 생성
[root@www root]# vi /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
[root@www root]# chmod 755 /var/qmail/rc
[root@www root]# mkdir -p /var/qmail/supervise/qmail-send/log
[root@www root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
[root@www root]# chmod 1755 /var/qmail/supervise/qmail-send
[root@www root]# chmod 1755 /var/qmail/supervise/qmail-smtpd
[root@www root]# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
[root@www root]# vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
[root@www root]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
Q_UID=`id -u qmaild`
Q_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -vRHl 0 -x /etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
[root@www root]# vi /var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd
[root@www root]# chmod 755 /var/qmail/supervise/qmail-send/run
[root@www root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[root@www root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
[root@www root]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
∴ 큐메일을 위한 로그 디렉토리 생성
[root@www root]# mkdir -p /var/log/qmail/smtpd
[root@www root]# chown qmaill /var/log/qmail /var/log/qmail/smtpd
∴ Alias 설정
[root@www root]# echo server@domain.co.kr > /var/qmail/alias/.qmail-root
[root@www root]# echo server@domain.co.kr > /var/qmail/alias/.qmail-postmaster
[root@www root]# echo server@domain.co.kr > /var/qmail/alias/.qmail-mailer-daemon
[root@www root]# chmod 644 /var/qmail/alias/*
※ 큐메일은 root 로 메일을 배달하지 않으므로 알리아즈를 반드시 만들어 줘야 합니다.
그리고 postmaster, mailer-daemon 또한 알리아즈 해서 사용하면 편리하겠죠.
위 예제는 server@domain.co.kr 란 주소로 알리아즈 시킨 것입니다.
∴ Sendmail 바이너리 파일 Qmail로 변경
[root@www root]# mv /usr/lib/sendmail /usr/lib/sendmail.old
[root@www root]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
[root@www root]# ln -s /var/qmail/bin/sendmail /usr/lib
[root@www root]# ln -s /var/qmail/bin/sendmail /usr/sbin
∴ Qmail 링크
[root@www root]# ln -s /var/qmail/supervise/qmail-send /service/
[root@www root]# ln -s /var/qmail/supervise/qmail-smtpd /service/
#5 - Qmail 부트 스크립트
[root@www root]# vi /etc/rc.d/init.d/qmail
#!/bin/sh
# For Red Hat chkconfig
# chkconfig: - 80 30
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
case "$1" in
start)
echo "Starting qmail"
if [ -e /service/qmail-send ] ; then
if svok /service/qmail-send ; then
svc -u /service/qmail-send
else
echo qmail-send supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-send /service/
fi
if [ -e /service/qmail-smtpd ] ; then
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd
else
echo qmail-smtpd supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-smtpd /service/
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
rm -f /service/qmail-smtpd
echo " qmail-send"
svc -dx /service/qmail-send /service/qmail-send/log
rm -f /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 "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
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 -- schedules queued messages for immediate 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
[root@www root]# chmod 755 /etc/rc.d/init.d/qmail
[root@www root]# chkconfig --add qmail
[root@www root]# chkconfig --level 2345 qmail on
#6 - vpopmail 설치
앞에서 말했듯이 필자는 vpopmail 로밍서비스를 이용하여 SMTP 인증을 할 것입니다.
이것은 POP 인증후에 STMP 릴레이를 오픈 하도록 하는 기능입니다.
∴ vpopmail 설치전 기본설정
[root@www root]# cd /usr/local/src/
[root@www src]# groupadd vchkpw
[root@www src]# useradd -g vchkpw vpopmail
[root@www src]# mkdir -p /home/vpopmail/etc/
[root@www src]# chmod 777 /home/vpopmail/etc/
※ vpopmail의 기본폴더는 /home/vpopmail 입니다.
∴ vpopmail 설치 (Version. 5.2)
[root@www root]# cd /usr/local/src/
[root@www src]# tar xfz vpopmail-5.2.tar.gz
[root@www src]# cd vpopmail-5.2
[root@www vpopmail-5.2]# ./configure \
--enable-default-domain=domain.co.kr \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/bin/tcprules \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-relay-clear-minutes=15 \
--enable-auth-logging=y \
--enable-logging=e
[root@www vpopmail-5.2]# make
[root@www vpopmail-5.2]# make install-strip
※ 위 configure 옵션으로 pop3 인증후 15분동안 아무런 서버 사용이 없으면
자동으로 relay을 닫아 open relay가 되어 스패머들의 대상이 되는것을 막습니다.
만약 vpopmail 버전이 5.2.4 이상이라면 --enable-default-domain=domain.co.kr
위 옵션은 제외를 하셔야 합니다. 5.2.4 부터는 파일에서 관리되기 때문이죠.
5.2.4 에서는 /home/vpopmail/etc/defaultdomain 에 대표 도메인을 적으시면 됩니다.
∴ SMTP 릴레이 설정
[root@www root]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.:allow,RELAYCLIENT=""
100.100.100.101:allow,RELAYCLIENT=""
[root@www root]# /home/vpopmail/bin/clearopensmtp
[root@www root]# crontab -e
0,15,30,45 * * * * /home/vpopmail/bin/clearopensmtp
※ 100.100.100.101은 서버IP 인것을 잊지 않도록 합니다.
∴ SMTP 스크립트 변경
[root@www root]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -vRHl 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
∴ pop3 스크립트 생성
[root@www root]# mkdir /var/qmail/supervise/vpop
[root@www root]# vi /var/qmail/supervise/vpop/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 2500000 \
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup domain.co.kr \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@www root]# chmod 755 /var/qmail/supervise/vpop/run
[root@www root]# ln -s /var/qmail/supervise/vpop /service/
∴ 도메인과 메일계정 생성
[root@www root]# /home/vpopmail/bin/vadddomain domain.co.kr
[root@www root]# /home/vpopmail/bin/vadduser test@domain.co.kr 1234
※ vadddomain실행시 나오는 패스워드는 qmailadmin에서 사용할 비밀번호 입니다.
또한 vadddomain [도메인] [postmaster 비밀번호] 로도 사용가능합니다.
vadduser 사용법은 vadduser [메일계정] [비밀번호] 입니다.
Copyright(c) 2003-2005 HyeokJung. All Rights Reserved.
[수정]
자세한정보 [분류: 유저 팁&테크닉 ]
큐메일 서버 구축 #6 - vpopmail 설치 | 답장: 2개 | 본문에 답장
정렬 : NestedThreadedFlatUnthreaded 최근 것부터이전 것부터
손님 (2004년 09월 24일 오후 12:26)
vpopmail 설치 시..
config 도중..
configure: error: --enable-default-domain has been superceded. The default domain should be put into the file ~vpopmail/etc/defaultdomain instead
위와 같은 에러가 발생하는데 왜 그럴까여?? [ 이글에 답장 | 본문에 답장 | 책갈피 ]
onlyis4u (2005년 01월 14일 오후 08:30)
에러를 보니 vpopmail 5.2.4 이상의 버전을 사용하시려는 것 같습니다.
이 같은 경우 --enable-default-domain=domain.co.kr 옵션을 제외하고 컨피그 하셔야 합니다.
왜냐하면 5.2.4 이상부터는 기본도메인을 파일에서 관리하도록 수정되었기 때문입니다.
이는 /home/vpopmail/etc/defaultdomain 에서 관리됩니다.
모든 설치를 마치신 후 저 파일에 기본도메인을 적어주시면 됩니다.
#7 - Qmail과 vpopmail 시작
드디어 Qmail과 vpopmail의 설치가 모두 완료되었습니다.
한마디로 메일서버가 구축되었단 말이지요.
∴ 서버 시작 하기
[root@www root]# svc -c /service/qmail-send
[root@www root]# svc -c /service/qmail-smtpd
[root@www root]# svc -c /service/vpop
∴ 서버 중지 하기
[root@www root]# svc -p /service/qmail-send
[root@www root]# svc -p /service/qmail-smtpd
[root@www root]# svc -p /service/vpop
글쓴이: 티니 (2003년 11월 02일 오후 09:11) 읽은수: 1,095
이 글을 읽어주시는 분들께 감사의 말을 드립니다.
지금부터 제작하는 문서는 제가 처음 큐메일을 대면했을때 사용했던 문서와
제가 실제 서버를 구축하면서 어려웠던 점과 고생했던 점을 포함하여 작성한 것입니다.
(이 페이지는 임은재님의 하우투을 참고하며 제 의견을 보충 했습니다.
원 저작권은 임은재님께 있으며 수정된 문서의 저작권은 저에게 있습니다.)
∵ 필자가 소개하는 Qmail
일반적으로 Unix/Linux 기반의 MTA는 Sendmail을 많이 사용하고 있습니다.
그러나 Sendmail은 프로그램이 단일화 되어 보안에 상당히 취약하며
사용함에 있어서도 불편한점이 많고 또 많은 전문지식을 필요로 합니다.
(이 글을 쓰는 필자역시 센드메일을 그다지 신뢰하지 못하고 있습니다.)
하지만 Qmail은 모듈방식을 채택하여 사용하기 편리하며 그 기능또한 매우 다양 합니다.
∵ Qmail 제작자와 제작 의도
Qmail은 D. J. Bernstein 교수가 제작했으며 2003년 11월 현재 3,000,000 개 이상의 서버에서
Qmail이 사용되고 있습니다.
또한 하루에 수십, 수백 만통의 메일을 배달해야만 하는 대형 서버들의 Qmail 사용과 제작자의 보안에 대한 보장은 그 신뢰도를 더해 주고 있습니다.
∵ Qmail 메일의 특징과 장점
1. 안전성
-> Qmail을 통해 시스템에 침입할 수 없습니다.
실제 Qmail은 발표된 이후로 아직까지 알려진 보안 사고가 없으며 Bernstein 교수가 Qmail을
만들게 된 동기 역시 정기적으로 알려지곤 하는 Sendmail이나
다른 MTA의 보안 구멍때문이었다고 합니다.
2. 신뢰성
-> Qmail은 메세지를 절대 잃어버리는 일이 없습니다.
Qmail은 NFS 파일 시스템상에서도 안전한 Maildir 형태 메일함의 선구자입니다.
Maildir 형태는 Qmail에서 처음으로 사용하기 시작한 메일함 형식으로 배달이
이루어 지고 있는 동안에 시스템이 다운되더라도 파일 시스템에 문제가 생기지 않는
유일한 메일함이며 NFS 파일 시스템상에서 동시에 여러개의 메일이 배달되고 있는 동안에도
사용자가 메일을 읽을 수 있는 안전한 메일함입니다.
3. 속도
-> Qmail은 메세지를 Sendmail보다 빠르게 처리하면서 안정성을 잃지 않습니다.
특히 수 많은 메일을 동시에 배달해야 하는 메일링 리스트의 경우 가장 빠른 성능을 보이죠.
한 예를 들면 1000개 이상의 각기 다른 호스트에 메일을 배달하는데 76초 밖에 걸리지 않으니까요.
4. 간단함
-> Qmail은 다른 어떠한 MTA 보다도 작습니다.
포워딩, 알리아싱, 메일링 리스트 메카니즘을 독립적으로 가지고 있는 다른 MTA들과는 다르게
Qmail은 한가지의 간단한 포워딩 메카니즘을 사용해 모든 기능을 구현하였습니다.
다른 MTA가 "빠르고 불안전한 -> 느린 큐" 방식의 배달 방식을 사용하는것 과는 달리
Qmail은 새로운 아이템을 즉시 큐에 넣으므로 "빠른 큐"라는 하나의 배달 방식만을 사용합니다.
5. 능률
-> Qmail은 오래된 486 16M 시스템에서 하루에 70,000통 이상의 메일을 처리하는데
무리가 없을 정도로 그 성능과 능률이 뛰어납니다.
6. 메일링 리스트
-> Qmail은 일반유저가 메일링 리스트를 제어할 수 있기 때문에
유저가 관리자를 괴롭힐 필요가 없게 되었습니다.
7. 가상 호스트 구축
-> 쉬운 가상 호스트 구축으로 Qmail은 다중 도메인 지원의 선구자입니다.
8. 직관적인 관리
-> Qmail은 최소한의 작업으로 관리가 손쉽습니다.
9. 유연한 배달 프로그램
-> Qmail은 외부 메일 프로세서를 위한 강력한 인터페이스를 제공합니다.
10. 다양한 OS 지원
-> Qmail은 동일한 소스로 포팅이 필요 없이 대부분의 UNIX 시스템을 지원합니다.
AIX, BSD/OS, FreeBSD, HP/UX, Irix, Linux, NetBSD, OpenBSD, OSF/1, SunOS, Solaris, 기타..
∵ Qmail의 모듈화 디자인
-> Qmail은 번스타인 교수의 다른 소프트웨어들 처럼 특정한 목적을 가지고 있는 작은 프로그램들의
모음이라 할 수 있는데 예를 들어 네트워크로 부터의 메일 수신은 qmail-smtpd가
외부로의 전송은 qmail-remote가 메일큐의 관리는 qmail-queue가 전담하는 식입니다.
∵ 다양한 애드언과 패치
-> Qmail의 모듈화된 구조는 새로운 기능을 추가하기 위한 다양한 에드언들의 개발을 쉽게 함으로써
이미 수많은 에드언들이 개발/제공되고 있으며, 관련 프로젝트도 많이 진행되고 있습니다.
몇가지 예를 들면...
1. vpopmail
-> vpopmail은 Qmail하에서 가상 도메인/유저를 쉽게 관리하는 통합 관리 도구로
qmailadmin과 같이 사용함으로써 모든 관리를 웹으로 편리하게 할 수 있는 소프트웨어 입니다.
2. Qmail-ldap
-> LDAP와 Qmail의 연동을 위한 패키지와 문서와 Qmail이 어떻게 메세지를 처리하는지 이해하는데
큰 도움이 되는 그림 (big qmail picture)을 제공합니다.
3. Qmail + mysql
-> Qmail과 MySQL 연동 프로젝트
4. Qmail-Scanner
-> Qmail용 메일 바이러스 검사기로 대부분의 유료 바이러스 검사기와 연동하여
사용할 수 있는 것이 장점입니다.
5. Maildrop
-> procmail을 대체하는 로컬 MDA, 필터링 도구
6. ezmlm
-> Qmail의 제작자가 만든 메일링 리스트 관리 도구로 설정과 관리가 매우 간단하고 쉽습니다.
7. Qmail-smtpd-auth
-> 유동 IP 사용자들의 SMTP 릴레이 지원을 위한 패치
※ 이 외에도 필요에 따라 사용할 수 있는 수많은 에드언과 패치가 존재하며, 관련 정보와 뉴스들은
http://qmail.org (영문)의 웹 사이트와 Qmail 메일링 리스트
<qmailannounce-subscribe(at)list.cr.yp.to>등과 한국 Qmail 홈 페이지에서 찾아 볼 수 있으며
Qmail과 MySQL을 연동한 한글 웹 메일 프로젝트도 진행 중입니다.
∴ Qmail 설치
Qmail 을 설치할 때 구성할 수 있는 경우의 수는 매우 다양합니다.
어떤 인증 모듈을 사용하는지, IMAP 지원 여부, 스팸 필터링 기능 지원 여부, QmailAdmin 지원 여부,
Webmail 지원 여부 등등에 따라 수많은 경우가 있을 수 있습니다
#2 - 필요한 프로그램 준비
이제부터 큐메일 설치를 하도록 하겠습니다.
그러나 요리를 하려면 재료가 필요 하듯이 메일서버를 구축하려면
그에 맞는 여러가지 프로그램이 필요 합니다.
필요한 프로그램을 구할 수 있는 URL을 알려드립니다.
각 프로그램에 대한 설명은 설치문서에 적겠습니다.
※ 필자가 설치문서를 제작하면서 사용한 서버 환경은 RH 7.3입니다.
∵ Qmail
-> ftp://ftp.eu.uu.net/pub/unix/mail/qmail/
∴ Qmail-ej-cocktail-Patch
-> http://kldp.org/~eunjea/qmail/patch/
∴ ucspi-tcp
-> http://cr.yp.to/ucspi-tcp/install.html
∴ daemontools
-> http://cr.yp.to/daemontools/install.html
∴ vpopmail
-> http://www.inter7.com/vpopmail.html
∴ courier-imap
-> http://prdownloads.sourceforge.net/courier/
∴ qmail-scanner
-> http://prdownloads.sourceforge.net/qmail-scanner/
∴ maildrop
-> http://prdownloads.sourceforge.net/courier/
∴ Mail-SpamAssassin
-> http://www.spamassassin.org/downloads.html
∴ Time-HiRes
-> http://search.cpan.org/~jhi/
∴ qmailadmin
-> http://www.inter7.com/qmailadmin.html
∴ ezmlm
-> http://cr.yp.to/ezmlm.html
∴ ezmlm-idx
-> http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/
∴ autorespond
-> http://www.inter7.com/osfree.html
∴ squirrel-webmail
-> http://www.squirrelmail.org/download.php
#3 - ucspi-tcp, daemontools 설치
프로그램이 모두 준비되었으면 이제부터 본격적인 설치를 시작해 봅시다.
우선 큐메일은 혼자서 작동하지 않기 때문에 데몬과 연계해서 실행해야 합니다.
큐메일의 실행은 xinetd와 tcpserver로 할 수 있습니다.
그러나 보안과 속도면에서 큐메일과 잘 맞는 tcpserver로 실행할 것을 권장 합니다.
- 필자는 tcpserver를 이용하여 큐메일 서버를 구축하도록 하겠습니다. -
※ 설치를 시작하기 전에 모든 프로그램을 /usr/local/src/ 로 옮겨주시기 바랍니다.
∴ ucspi-tcp 설치 (Version. 0.88)
[root@www root]# cd /usr/local/src/
[root@www src]# tar xfz ucspi-tcp-0.88.tar.gz
[root@www src]# cd ucspi-tcp-0.88
[root@www ucspi-tcp-0.88]# make
[root@www ucspi-tcp-0.88]# make setup check
※ 만약 서버가 RH 9.0 이라면 error.h 파일을 열어 첫번째줄에
#include <errno.h>을/를 추가해주시기 바랍니다.
이는 gcc 버전이 변경되었기 때문 입니다.
∴ daemontools 설치 (Version. 0.76) [root@www root]# cd /usr/local/src/
[root@www src]# mkdir /package
[root@www src]# chmod 1755 /package
[root@www src]# tar xfz daemontools-0.76.tar.gz -C /package
[root@www src]# /package/admin/daemontools-0.76/package/install
※ 만약 서버가 RH 9.0 이라면 error.h 파일을 열어 첫번째줄에
#include <errno.h>을/를 추가해주시기 바랍니다.
이는 gcc 버전이 변경되었기 때문 입니다.
#4 - Qmail 설치
큐메일은 AUTH 릴레이를 여러가지로 허용할 수 있습니다.
- 시스템 계정 (/etc/passwd)
- cmd5checkpw (/etc/poppasswd)
- checkpassword + mysql (유저 데이터를 db에 저장)
- vchkpw (vpopmail pop 유저 데이터를 사용, db또는 vpasswd)
그러나 필자는 vpopmail을 로밍서비스를 이용하여 릴레이를 허용하겠습니다.
아래는 vpopmail 로밍서비스에 맞도록 설치되는 큐메일 설치법 입니다.
∴ 칵테일 패치 (Version. 14)
[root@www root]# cd /usr/local/src/
[root@www src]# tar xfz qmail-1.03.tar.gz
[root@www src]# tar xfz qmail-ej-cocktail-14.tar.gz
[root@www src]# cd qmail-1.03
[root@www qmail-1.03]# patch -p1 < ../qmail-ej-cocktail-14/cocktail.patch
※ 패치도중 hunk나 fail이 나온다면 큐메일이 바닐라 소스가 아닌 것입니다.
반드시 큐메일 바닐라 소스를 이용하시기 바랍니다.
∴ 큐메일 설치 (Version. 1.03)
[root@www root]# cd /usr/local/src/qmail-1.03/
[root@www qmail-1.03]# mkdir -p /var/qmail/alias
[root@www qmail-1.03]# sh INSTALL.ids
[root@www qmail-1.03]# make
[root@www qmail-1.03]# make setup check
[root@www qmail-1.03]# ./config
∴ 컨피그 메세지 비교 (정상적인 메세지)
[root@www qmail-1.03]# ./config
Your hostname is www.
Your host's fully qualified name in DNS is www.domain.co.kr.
Putting www.domain.co.kr into control/me...
Putting domain.co.kr into control/defaultdomain...
Putting co.kr into control/plusdomain...
Checking local IP addresses:
127.0.0.1: Adding localhost to control/locals...
100.100.100.101: Adding www.domain.co.kr to control/locals...
If there are any other domain names that point to you,
you will have to add them to /var/qmail/control/locals.
You don't have to worry about aliases, i.e., domains with CNAME records.
Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to those hosts.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[root@www qmail-1.03]#
∴ 컨피그 메세지 비교 (비정상적인 메세지)
[root@www qmail-1.03]# ./config
Your hostname is mail.domain.co.kr.
hard error
Sorry, I couldn't find your host's canonical name in DNS.
You will have to set up control/me yourself.
[root@www qmail-1.03]
※ 만약 이처럼 비정상적인 메세지가 나온다면 Network와 DNS 문제 입니다.
DNS가 설치되어 있고 DNS 서버에 이름이 정상적으로 등록되어 있다면
Network 설정을 잘 살펴보아야 합니다.
[root@www root]# cat /etc/resolv.conf
search domain.co.kr
nameserver 100.100.100.101
nameserver 100.100.100.102
※ 필자는 search 부분을 등록하지 않은 서버를 세팅할때 고생한적이 있습니다.
search [domain name] 부분은 반드시 있어야 합니다.
[root@www root]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
100.100.100.101 domain.co.kr www
[root@www root]# cat /etc/sysconfig/network
.......................
HOSTNAME=www
DOMAINNAME=domain.co.kr
.......................
[root@www root]#
※ 호스트네임과 도메인네임부분 또한 반드시 있어야 합니다.
그러나 위의 사항을 모두 적용하였는데도 정상적인 config 가 수행되지 않을때가 있습니다.
그럴때는 아래와 같이 해주시면 됩니다.
[root@www qmail-1.03]# ./config-fast mail.domain.co.kr
※ config-fast [메일서버의 DNS 등록 호스트네임]
∴ 큐메일 설치 확인
[root@www qmail-1.03]# ll /var/qmail/control
※ 큐메일이 정상적으로 설치 되었다면 /var/qmail/control/ 안에는
큐메일이 정상적으로 작동하기 위한 설정 파일들이 생깁니다.
∴ 컨트롤 파일의 수정
[root@www root]# cd /var/qmail/control
[root@www control]# cat locals
localhost
[root@www control]# cat me
domain.co.kr
[root@www control]# cat plusdomain
domain.co.kr
[root@www control]# cat rcpthosts
[root@www control]#
※ 컨트롤 파일을 위와 같이 수정합니다.
rcpthosts는 vpopmail을 이용시 자동으로 추가되므로
반드시 공백으로 두시기 바랍니다.
∴ 큐메일 데몬을 위한 디렉토리와 스크립트 파일 생성
[root@www root]# vi /var/qmail/rc
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/
[root@www root]# chmod 755 /var/qmail/rc
[root@www root]# mkdir -p /var/qmail/supervise/qmail-send/log
[root@www root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
[root@www root]# chmod 1755 /var/qmail/supervise/qmail-send
[root@www root]# chmod 1755 /var/qmail/supervise/qmail-smtpd
[root@www root]# vi /var/qmail/supervise/qmail-send/run
#!/bin/sh
exec /var/qmail/rc
[root@www root]# vi /var/qmail/supervise/qmail-send/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail
[root@www root]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
Q_UID=`id -u qmaild`
Q_GID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -vRHl 0 -x /etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
[root@www root]# vi /var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill \
/usr/local/bin/multilog t /var/log/qmail/smtpd
[root@www root]# chmod 755 /var/qmail/supervise/qmail-send/run
[root@www root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
[root@www root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
[root@www root]# chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
∴ 큐메일을 위한 로그 디렉토리 생성
[root@www root]# mkdir -p /var/log/qmail/smtpd
[root@www root]# chown qmaill /var/log/qmail /var/log/qmail/smtpd
∴ Alias 설정
[root@www root]# echo server@domain.co.kr > /var/qmail/alias/.qmail-root
[root@www root]# echo server@domain.co.kr > /var/qmail/alias/.qmail-postmaster
[root@www root]# echo server@domain.co.kr > /var/qmail/alias/.qmail-mailer-daemon
[root@www root]# chmod 644 /var/qmail/alias/*
※ 큐메일은 root 로 메일을 배달하지 않으므로 알리아즈를 반드시 만들어 줘야 합니다.
그리고 postmaster, mailer-daemon 또한 알리아즈 해서 사용하면 편리하겠죠.
위 예제는 server@domain.co.kr 란 주소로 알리아즈 시킨 것입니다.
∴ Sendmail 바이너리 파일 Qmail로 변경
[root@www root]# mv /usr/lib/sendmail /usr/lib/sendmail.old
[root@www root]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
[root@www root]# ln -s /var/qmail/bin/sendmail /usr/lib
[root@www root]# ln -s /var/qmail/bin/sendmail /usr/sbin
∴ Qmail 링크
[root@www root]# ln -s /var/qmail/supervise/qmail-send /service/
[root@www root]# ln -s /var/qmail/supervise/qmail-smtpd /service/
#5 - Qmail 부트 스크립트
[root@www root]# vi /etc/rc.d/init.d/qmail
#!/bin/sh
# For Red Hat chkconfig
# chkconfig: - 80 30
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
case "$1" in
start)
echo "Starting qmail"
if [ -e /service/qmail-send ] ; then
if svok /service/qmail-send ; then
svc -u /service/qmail-send
else
echo qmail-send supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-send /service/
fi
if [ -e /service/qmail-smtpd ] ; then
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd
else
echo qmail-smtpd supervise not running
fi
else
ln -s /var/qmail/supervise/qmail-smtpd /service/
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
rm -f /service/qmail-smtpd
echo " qmail-send"
svc -dx /service/qmail-send /service/qmail-send/log
rm -f /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 "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
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 -- schedules queued messages for immediate 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
[root@www root]# chmod 755 /etc/rc.d/init.d/qmail
[root@www root]# chkconfig --add qmail
[root@www root]# chkconfig --level 2345 qmail on
#6 - vpopmail 설치
앞에서 말했듯이 필자는 vpopmail 로밍서비스를 이용하여 SMTP 인증을 할 것입니다.
이것은 POP 인증후에 STMP 릴레이를 오픈 하도록 하는 기능입니다.
∴ vpopmail 설치전 기본설정
[root@www root]# cd /usr/local/src/
[root@www src]# groupadd vchkpw
[root@www src]# useradd -g vchkpw vpopmail
[root@www src]# mkdir -p /home/vpopmail/etc/
[root@www src]# chmod 777 /home/vpopmail/etc/
※ vpopmail의 기본폴더는 /home/vpopmail 입니다.
∴ vpopmail 설치 (Version. 5.2)
[root@www root]# cd /usr/local/src/
[root@www src]# tar xfz vpopmail-5.2.tar.gz
[root@www src]# cd vpopmail-5.2
[root@www vpopmail-5.2]# ./configure \
--enable-default-domain=domain.co.kr \
--enable-roaming-users=y \
--enable-tcprules-prog=/usr/bin/tcprules \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-relay-clear-minutes=15 \
--enable-auth-logging=y \
--enable-logging=e
[root@www vpopmail-5.2]# make
[root@www vpopmail-5.2]# make install-strip
※ 위 configure 옵션으로 pop3 인증후 15분동안 아무런 서버 사용이 없으면
자동으로 relay을 닫아 open relay가 되어 스패머들의 대상이 되는것을 막습니다.
만약 vpopmail 버전이 5.2.4 이상이라면 --enable-default-domain=domain.co.kr
위 옵션은 제외를 하셔야 합니다. 5.2.4 부터는 파일에서 관리되기 때문이죠.
5.2.4 에서는 /home/vpopmail/etc/defaultdomain 에 대표 도메인을 적으시면 됩니다.
∴ SMTP 릴레이 설정
[root@www root]# vi /home/vpopmail/etc/tcp.smtp
127.0.0.:allow,RELAYCLIENT=""
100.100.100.101:allow,RELAYCLIENT=""
[root@www root]# /home/vpopmail/bin/clearopensmtp
[root@www root]# crontab -e
0,15,30,45 * * * * /home/vpopmail/bin/clearopensmtp
※ 100.100.100.101은 서버IP 인것을 잊지 않도록 합니다.
∴ SMTP 스크립트 변경
[root@www root]# vi /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
Q_UID=`id -u vpopmail`
Q_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -vRHl 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb \
-u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
∴ pop3 스크립트 생성
[root@www root]# mkdir /var/qmail/supervise/vpop
[root@www root]# vi /var/qmail/supervise/vpop/run
#!/bin/sh
VPOP_UID=`id -u vpopmail`
VPOP_GID=`id -g vpopmail`
exec /usr/local/bin/softlimit -m 2500000 \
tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
/var/qmail/bin/qmail-popup domain.co.kr \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
[root@www root]# chmod 755 /var/qmail/supervise/vpop/run
[root@www root]# ln -s /var/qmail/supervise/vpop /service/
∴ 도메인과 메일계정 생성
[root@www root]# /home/vpopmail/bin/vadddomain domain.co.kr
[root@www root]# /home/vpopmail/bin/vadduser test@domain.co.kr 1234
※ vadddomain실행시 나오는 패스워드는 qmailadmin에서 사용할 비밀번호 입니다.
또한 vadddomain [도메인] [postmaster 비밀번호] 로도 사용가능합니다.
vadduser 사용법은 vadduser [메일계정] [비밀번호] 입니다.
Copyright(c) 2003-2005 HyeokJung. All Rights Reserved.
[수정]
자세한정보 [분류: 유저 팁&테크닉 ]
큐메일 서버 구축 #6 - vpopmail 설치 | 답장: 2개 | 본문에 답장
정렬 : NestedThreadedFlatUnthreaded 최근 것부터이전 것부터
손님 (2004년 09월 24일 오후 12:26)
vpopmail 설치 시..
config 도중..
configure: error: --enable-default-domain has been superceded. The default domain should be put into the file ~vpopmail/etc/defaultdomain instead
위와 같은 에러가 발생하는데 왜 그럴까여?? [ 이글에 답장 | 본문에 답장 | 책갈피 ]
onlyis4u (2005년 01월 14일 오후 08:30)
에러를 보니 vpopmail 5.2.4 이상의 버전을 사용하시려는 것 같습니다.
이 같은 경우 --enable-default-domain=domain.co.kr 옵션을 제외하고 컨피그 하셔야 합니다.
왜냐하면 5.2.4 이상부터는 기본도메인을 파일에서 관리하도록 수정되었기 때문입니다.
이는 /home/vpopmail/etc/defaultdomain 에서 관리됩니다.
모든 설치를 마치신 후 저 파일에 기본도메인을 적어주시면 됩니다.
#7 - Qmail과 vpopmail 시작
드디어 Qmail과 vpopmail의 설치가 모두 완료되었습니다.
한마디로 메일서버가 구축되었단 말이지요.
∴ 서버 시작 하기
[root@www root]# svc -c /service/qmail-send
[root@www root]# svc -c /service/qmail-smtpd
[root@www root]# svc -c /service/vpop
∴ 서버 중지 하기
[root@www root]# svc -p /service/qmail-send
[root@www root]# svc -p /service/qmail-smtpd
[root@www root]# svc -p /service/vpop
'linux > Mail' 카테고리의 다른 글
qmail FAQ (0) | 2007.03.16 |
---|---|
qmail 과 삶 (0) | 2007.03.16 |
qmail+phpmail+imap4.7 (0) | 2007.03.15 |
qmail+checkpassword+phpmail-임시 (0) | 2007.03.15 |
squirrelmail+spamassasin+qmail-scanner -- imsi (0) | 2007.03.15 |