· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/Qmail-HOWTO

qmail-HOWTO

qmail-HOWTO

Adam McKenna

방창현

           
        

임은재

linuxdoc에서 docbook으로 전환

          
        

2001-12-03

이 문서는 LinuxIS consulting, LLC에서 전송되었다. 이 문건은 당신이 큐메일을 설치하도록 할것이다! 보다 자세한 정보는 qmail를 참조하라. 이 문서는 큐메일 하우투의 새버전이다. 이전의 버전에서 약간 변경되었다. 구체적으로 큐메일의 주소를 세팅하는 방법이 데몬툴의 최신버전과 ucspi-tcp를 이용하였다. 이 문건에 대한 리포트는 adm-howto (at) flounder.net로 해주기를 바라며 이전문건은 http://www.flounder.net/qmail-howto-old.html 에서 구할수 있다. 그러나 큐메일에 대한 질문은 보내지 말기 바란다. 질문은 큐메일 리스트(메일링리스트)를 이용해주기 바라며 나는 오직 이 HOW-TO 문건에 대해서만 질문을 받을 것이다. 원본파일은 여기에서 구할 수 있으며 거의 7만히트를 기록했다. 이문건에 대하여 사람들이 말하는 것은 여기에서 볼 수 있다. 본 문서는 큐메일을 어떻게 사용할 것인가에 대한 문건이다. 큐메일은 Dan Bernstein 에 의해서 작성된 훌륭한 메일전송에이전트이다. 여기에 기술된 명령을 따라서 수행하면 간단하게 큐메일을 인스톨하고 새로운 유저를 쉽게 만들수 있다.

고친 과정
고침 2-12001-12-03고친이 Adam
2-1판 (POP3 추가)
고침 22000-09-14고친이 Adam
2판 작성
고침 11999-08-19고친이 Adam
초판작성

1. 소개

1.1. 왜 큐메일인가?

왜 큐메일로 바꾸어야 하는가? 만일 당신이 sendmail.cf를 편집헤 본적이 있다면 당신은 알고 있을 것이다. 왜 바꾸어하 하는지. 여기에 그 몇가지 이유를 적었다.

  • 안전성: 큐메일은 안전하다. 지난해에 큐메일 지원자에 의해서 1000달러의 상금 을 걸고 도전을 받았었다. 지난한해 이 상금은 보존되었으며 프리소프트재단에 보내젼다. 댄 번스테인은 큐메일의 저자이다. 현재 500달러의 상금을 걸고 큐 메일의 보안구멍을 찾도록 하고 있다.

  • 속도. 큐메일은 일반적인 시스템에서 하루에 백만건의 메세지를 전송할수 있다. 비록 그것이 486시스템이라고 하더라도 하루에 10만건의 메세지를 다룰수 있다.

  • 신뢰성, 큐메일은 메일이 전송했음을 알리기 전에 디스크에 편지를 쓴다. 이러 한 방법은 컴퓨터의 전원이 나가도 편지를 읽어 버리는 법이 없다.

  • 아주 쉬운 가상도메인 관리. 이것은 큐메일의 애드온 형태로서 가상의 POP 도메 인으로 vchkpw 라고 불린다. 이패키지를 이용하면 유닉스의 이용자가 아니더라도 POP3 이용자로 셋업이 가능하다.

  • ezmlm 을 이용한 이용자가 제어하는 메일링 리스트. 직관적이고 직선적이며 간단한 관리가 가능하다.

현재 내가 말할수 있는것은 큐메일은 샌드메일보다 쉽다는 것이다. 그것은 접한지 몇시간 되지 않았다고 하더라도 믿을만한 것이다. 지금 나는 센드메일보타 큐메일이 쉽다고 말하고 있는것인데 당신이 최초의 몇시간 동안을 그렇지 않았다고 하더라도 나를 믿어야 한다. 큐메일의 문서, 완벽하고 만족스럽게 쓰여졌음에도 불구하고, 대단히 이론적이지만 이 문건이 단계적이 아니다. 매뉴얼 파일은 큐메일에 대하여 이론적인 처리가 없는 새로운 어떠한 이용자에게는 대단히 추상적이다. (http://www.nrg4u.com 에 있는 큐메일의 기능도를 확인해 보라)

나의 첫번째 충고: 모든 인스톨 파일을 읽고 우직하게 맨파일을 읽어라. 큐메일의 기본적 이론이 센드메일과 다른것을 학습하고 큐메링의 키이부분을 이해 하라. 큐메일의 작업을 통해서 아이디어를 얻도록 노력하라

큐메일의 주아이디어는 모든 MTA 작업을 수행하는데 있어서 크고, 바이너리에 의한 일원화, 너무 살찐것, 거대한것을 대체하는 것이다. 큐메일은 메일을 처리하는 작업 을 각각의 별개의 수행프로그램을 할당하여 세분화한것이다. 각 프로그램은 독립적 이다. 이 모델은 몇가지의 이익을 가지는데 이용자가 쉽게 끌어들일수 있으며, 빠르게 디버깅을 하고 커스템툴들을 쉽게 통합할수 있다.


2. 필요한것들

큐메일을 인스톨 하기전에 다음것들은 꼭 필요한것이다:

  • 유닉스나 유닉스와 비슷한 운영체제를 가지는 시스템이 있어야 한다. 가장 적합 한 시스템은 큐메일의 배포파일중에 README 파일에 큐메일이 지원하는 시스템 목록이 있다.

  • 당신의 시스템은 DNS 명칭을 가지고 있어야 하며 DNS 가 수행될수 있어야 한다. 큐메일은 /etc/hosts 파일에서 필요로 하는 도메인 명을 찾지 않는다. 작업 공간은 /var/qmail/control/smtproutes 를 이용하나 꼭 그런것은 아니며 경우에 따라서 달라질수 있다.

  • 당신은 컴파일러가 있야 한다. (duh) 만일 컴파일러가 cc 라고 불리워 지지 않는다면 큐메일의 소스 트리와 그외 이용하는 conf-* 파일들을 편집하여야 할것이다.


3. 우리가 설치하는 큐메일

큐메일은 극도로 유연하다. 이것을 설치하는 방법은 엄청나게 많은 가짓수의 방법이 있다. 따라서 만일 당신이 여기에 쓰여 있는대로 따라서 하기로 했다면, 쓰여진대로 정확하게 따라야 한다,당신이 그대로만 따라서 한다면 샌드메일 놀랄만큼 비슷하다는 것을 알게 될것이다. 포함된것은.

  • /etc/aliases 의 지원

  • .forward 의 지원

이 하우투에서 가정하고 있는것은

  • 당신은 UNIX 에 대하여 대략적으로는 알고있고 그것을 작동하는 법도 알고 있다.

  • 유저를 어떻게 등록하는지, 초기파일들을 입수하고 분배하는 방법을 알고 있다.

  • GNU 의 tar / gzip / binutils /gcc 와 그밖의 유틸리티들을 사용할줄 안다.


3.1. 소스의 다운로드와 소스 풀기.

첫번째 스텝은 필요한 파일들을 서버에서 다운로드 한다. 이 지침서에서 필요한 패키지들은 다음과 같다:

qmail

oversize DNS package patch for qmail

ucspi-tcp

daemontools

fastforward

dot-forward

다음과 같은 절차에 따라 적절한 공간에 (/usr/src/ 와같은) 패키지를 푼다. (지금은 root로 수행하여야 한다.)

# gzip -d qmail-1.03.tar.gz # tar xf qmail-1.03.tar

파일을 푼후 qmail-1.03 폴더로 바꾼다.

# cd qmail-1.03


3.2. RTFM

한번쯤은 큐메일폴더에서 FAQ 와 INSTALL 파일을 읽어보기를 권한다.

	# more INSTALL
	# more INSTALL.alias
	# more INSTALL.mbox
	etc...

INSTALL 파일을 읽어보았다면 당신은 이 HOWTO를 읽어볼 필요가 없을 것이다.

당신은 아직도 계속해서 읽고 있군. 그것의 의미는 그 파일들을 읽어보지 않았다는 의미이다. 나쁜 시스템 관리자 로군! 계속해서 15분정도 더 진행을 하거나, 필드헬프데스크 에 전화를 걸거나, 아니면 그저 그와 비슷한 아무거나 하도록 하자.

계속하기로 했으면, 오버시즈 DNS 패치를 적용한다. 이 패치는 RFC 의 권고안을 무시하고 512바이트보다 큰 UDP DNS 응답을 리턴시키는 일부 프로바이더들 (AOL 과 같은) 때문에 필요 한것이다. 큐메일은 DNS 리졸브 라이브러니는 RFC 와 호환되도록 되어 있으므로 RFC 와 호환 되지 않게 보내는 메세지에는 응답하지 못한다. 이패치는 큐메일이 그러한 불법적인 DNS 의 응답에 정확하게 수행하도록 한다.

패치는 다음과 같이 한다. (큐메일의 소스 디렉토리에서 할것)

	root: /usr/local/src/qmail-1.03# patch -p1 < /patch/to/qmail-103.patch


3.3. 큐메일 디렉토리의 생성

첫번째는 큐메일이 수행하는데 필요로 하는 홈디렉토리를 생성하여야 한다. 이디렉토리는 큐메 일의 거의 모든것, 컨피규레이션 파일, 큐 그리고 실제 큐메일의 바이너리들 까지 모두 저장 되는 곳이다.

	# mkdir /var/qmail


3.4. 큐메일을 실행하는데 필요한 이용자와 그룹을 등록

이제 다양한 큐메일의 데몬을 실행하기 위한 이용자들 모두와 그룹을 생성하여야 한다. INSTALL.ids를 보면 필요한 그룹이 있다. 만일 데비안 리눅스 라면 이미 생성되어 있을것 이다. (데비안 나이스!) 리눅스와 솔라리스 라면 다음과 같은 명령을 수행한다:

	# groupadd nofiles
	# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
	# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
	# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
	# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
	# groupadd qmail
	# useradd -g qmail -d /var/qmail -s /bin/false qmailq
	# useradd -g qmail -d /var/qmail -s /bin/false qmailr
	# useradd -g qmail -d /var/qmail -s /bin/false qmails

큐메일의 이용자와 그룹을 생성중에 다음과 같는 문구가 나오면 INSTALL.ids를 읽어보라.

*** NOTE: IF YOU DO NOT CREATE THESE USERS AND GROUPS, QMAIL WILL NOT WORK. ***


3.5. 큐메일과 연관프로그램의 컴파일.

다음단계로서 프로그램과 큐메일 디렉토리 트리를 만든다.

Type:

	# make setup check

큐메일이 컴파일을 시작할 것이다. 만일 성공적으로 컴팡리이 끝나면 /var/qmail 아래에는 완벽한 큐메일 시스템의 새로운 디렉토리들이 생성되어 있을것이다.

나머지 필요한 프로그램들을 컴파일한다. rblsmtpd의 예를 들면:

	# tar zxvf rblsmtpd-0.70.tar.gz
	# cd rblsmtpd-0.70
	# make
	# make setup check

rblsmtpd 의 실행프로그램은 /usr/local/bin/ 에 생성될것이다.


3.6. 큐메일의 Configure.

큐메일이 컴파일 되었으면 컨피규를 항여야 한다. 이것은 매우 쉽다: 다시 큐메일의 디렉토리로 돌아가서 다음을 입력한다.

	# ./config

config 스크립트는 DNS 로부터 모든 로컬 IP 주소의 리저브드 DNS 찾고자 한다. 만일 이것이 수행되지 않으면 당신이 직접 귀찮은 작업을 해야 한다. INSTALL.ctl 파일을 읽어보고 당신의 로컬 IP와 DNS 의 문제를 해결해야 한다. 그래도 문제가 해결되지 않으면 다른방법으로 다음을 따라서 실행하라.

	# ./config-fast your.full.host.name

이것은 큐메일이 수행하는데 필요한 파일들을 생성할것 이다.

config-fast 를 수행한 이후에, /var/qmail/control 에 있는 파일들이 큐메일에서 이용가능 한 형태로 변경되어 있을 것이다. 컨트롤 파일과 그 기능에 대한 설명은 섹션12: 컨트롤 파일을 보도록 한다.

주의: 만일 config 스크립트가 몇가지 이유로 실패하였다면, 이설치를 계속하면 안된다. 만일 컨피규레이션 없이 큐메일을 실행시킨다면, 정상적으로 동작하지 않을것이고 오픈 릴레이 상태로 수행될것이다.


3.7. 큐메일의 알리아스의 설치

	# cd ~alias
	# echo adam > .qmail-root
	# echo bob > .qmail-postmaster
	# echo bob > .qmail-mailer-daemon

큐메일은 모든 알리어스 파일을 이용한다. 이것은 큐메일이 sendmail과 다른 주요한 것중의 하나이다. 이 것은 다음에 자세하게 설명된다. root를 위한 알리아스가 기술 된다. 이것은 다음에 자세하게 설명된다. 알리어스는 root에 의해서 쓰진다. 이것 은 root가 큐메일이 메일수신을 하는것이 아니기 때문이다. 실제로 큐메일은 root에 의해서 소유된 파일은 전송을 거부할 것이다. INSTALL.alias 파일을 보면 보다 자세 한 내용을 알수 있다.


3.8. 데몬툴의 셋업과 컨트롤 디렉토리의 생성

지금 큐메일을 설치하는데 있어서, 시스템이 동작을 시작하였을때 큐메일의 모든것들이 실행되도록 설정할 필요가 있다. 이것을 가능하게 하기위하여 svscan 을 사용 할것이고 이것은 데몬툴 패키지의 한부분이다.

하우투를 조심스럽게 따라서 해왔다면, 데몬툴은 /usr/local/bin 에 이미 설치되어 있을것이다.

첫번재로 데몬튤의 서비스 디렉토리를 만들필요가 있다. Dan Bernstein 은 /service 디렉토리를 이용할것을 권장하고 있다. 다른 디렉토리를 사용하고 있다면 그것은 자유이다. /service 대신에 사용하고 있든 당신의 디렉토리를 대신 이용하면 된다.

(겨울아찌) 원본에는 POP3 설치 부분이 없는데 필요한 사람만 설치하기 바람. POP3 용의 디렉토리를 생성할대 최초에 svscan 을 구동하기 전에 만들어져 있어야 한다. 나중에 파일을 생성하여 구동하려고 하면 계속 control 파일을 읽을 수 없다고 나온다.

	# mkdir /service
	# mkdir /var/qmail/supervise
	# mkdir /var/qmail/supervise/qmail-send
	# chmod +t /var/qmail/supervise/qmail-send
	# mkdir /var/qmail/supervise/qmail-send/log
	# mkdir /var/qmail/supervise/qmail-smtpd
	# chmod +t /var/qmail/supervise/qmail-smtpd
	# mkdir /var/qmail/supervise/qmail-smtpd/log
	# mkdir /var/qmail/supervise/qmail-pop3d
	# chmod +t /var/qmail/supervise/qmail-pop3d
	# mkdir /var/qmail/supervise/qmail-pop3d/log
	# mkdir /var/log/qmail
	# mkdir /var/log/qmail/qmail-send
	# mkdir /var/log/qmail/qmail-smtpd
	# mkdir /var/log/qmail/qmail-pop3d
	# chown qmaill /var/log/qmail
	# chown qmaill /var/log/qmail/*

svscan 을 이용하는 것은, under/service 의 디렉토리를 실제적으로 생성할수 없기 때문이다. 대신에 /var/qmail/supervise 아래에 real 디렉토리를 생성하는 것이다. 나중에 /service 디렉토리에 심볼릭링크를 걸을 것이다. 그러나 아직은 아니다.

다음의 것은 svcscan 을 시스템이 시작되면 항상 실행되게 할 필요성이 있는것으로 간단하게 rc 스크립트를 작성한다. 나의 시스템에는 아래와 같이 작성했다.

	#!/bin/sh -e
	# /etc/init.d/svscan : start or stop svscan.
	# borrowed from http://Web.InfoAve.Net/~dsill/lwq.html#start-qmail
	# modified by Adam McKenna <adam@flounder.net>
	# processname: svscan
	# chkconfig: 345 85 15
	# pidfile: /var/run/svscan.pid

	case "$1" in
		start)
		echo -n "Starting djb services: svscan "
		cd /service
		env - PATH="/usr/local/bin:$PATH" svscan &
		echo $! > /var/run/svscan.pid
		echo "."
	;;
	stop)
		echo -n "Stopping djb services: svscan "
		kill `cat /var/run/svscan.pid`
		echo -n "services "
		svc -dx /service/*
		echo -n " logging "
		svc -dx /service/*/log
		echo "."
	;;
	restart|reload|force-reload)
		$0 stop
		$0 start
	;;
	*)
		echo 'Usage: /etc/init.d/svscan {start|stop|restart}'
		exit 1
	esac

	exit 0

만일 init 스크립트에 추가를 해야한다면, svcscan 은 시스템의 부트시에 시작되도록 해야 할것이다. 어떻게 init 에 추가를 해야 하는지 각자의 시스템에 적절한 문건을 찾아 보도록 해야 할것이다.

참조1: svscan 스크립트는 모두 같은것은 아니다. 이스크립트를 당신의 init 에 추가할 필요가 있는것은 아니다. 이 스크립트는 svscan 이 실행된후에 큐메일이 실행되도록 조절하는 것이다.

겨울아찌: 일반적으로 REDHAT 을 많이 쓰는 국내환경에서는 chkconfig 를 하기 위한 부분이 필요한데 맨위의 커맨트의 끝 3라인이 첨가되어야 할 필요가 있다. 이것이 없으면 chconfig 로 등록할 수 없다. 다른것은 중요하지 않고 chkconfig 345 가 중요한데 이것이 LINUX 의 부트모드 3,4,5 에서 구동되어야 하는것을 나타내고 있다. 자세한 것은 man chkconfig 를 참조하도록 한다.

	# processname: svscan
	# chkconfig: 345 85 15
	# pidfile: /var/run/svscan.pid

이렇게 구동파일을 만들었으면 chkconfig --add svscan 으로 스크립트 파일로 등록하고 chkconfig --level 345 svscan on 으로 해당모드에서 실행되도록 설정한다. 그리고 그전에 파일모드가 실행모드 이어야 하므로 여기에서 생성하는 스크립트 파일은 모두 755 모드로 만들어 주어 실행가능 모드로 만들어 준다.

만일 Debian GNU/Linux라면 다음명령 을 실행시킨다. 스크립트는 /etc/init.d/svscan 로 생성한다.

	# update-rc.d svscan defaults

큐메일을 부트시에 구동시키는 스크립트는 다음과 같이 작성한다. /etc/rc.d/init.d/qmail 이라는 파일로 생성한다.

	#!/bin/sh -e
	# /etc/init.d/qmail : start or stop the qmail mail subsystem.
	# borrowed from http://Web.InfoAve.Net/~dsill/lwq.html#start-qmail
	# modified by Adam McKenna <adam@flounder.net>
	# processname: qmail
	# chkconfig: 345 85 15
	# pidfile: /var/run/qmail.pid

	PATH=$PATH:/usr/local/bin:/var/qmail/bin

	case "$1" in
		start)
		echo -n "Starting mail-transport-agent:" 
		svc -u /var/qmail/supervise/*
		echo -n " qmail"
		svc -u /var/qmail/supervise/*/log
		echo " logging."
	;;
	stop)
		echo -n "Stopping mail-transport-agent: "
		echo -n " qmail"
		svc -d /var/qmail/supervise/*
		echo " logging"
		svc -d /var/qmail/supervise/*/log
	;;
	restart)
		$0 stop
		$0 start
	;;
	reload|force-reload)
		echo "Reloading 'locals' and 'virtualdomains' control files."
		start-stop-daemon --stop --quiet --oknodo --signal HUP --exec /usr/sbin/qmail-send
	;;
	*)
		echo 'Usage: /etc/init.d/qmail {start|stop|restart|reload}'
		exit 1
	esac

exit 0

이제 /var/qmail/supervise 디렉토리를 생성할때가 되었다. 우선 /var/qmail/supervise/qmail-send 로 디렉토리를 변경한다.

여기에서 다음과 같은 내용의 run 을 생성한다. 즉 /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 s2500000 \
		/var/log/qmail/qmail-send

이제 /var/qmail/supervise/qmail-smtpd 내에 같은 방법으로 유사한 파일을 생성한다. 다음과 같은 내용의 run 을 생성한다.

	#!/bin/sh
	QMAILDUID=`id -u qmaild`
	NOFILESGID=`id -g qmaild`
	exec /usr/local/bin/softlimit -m 2000000 \
		/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
		-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

log/run 파일의 내용은 다음과 같다.

	#!/bin/sh
	exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \
		/var/log/qmail/qmail-smtpd

겨울아찌: POP3 의 설정은 위와 유사한 방법으로 /var/qmail/supervise/qmail-pop3d 내에 같은 방법으로 다음과 같은 내용의 run 을 생성한다. 스크립트 내용중에 [domain-name] 은 자신의 시스템의 도메인명을 작성해 놓는다.

	#!/bin/sh
	exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup \
		[domain-name] /bin/checkpassword /var/qmail/bin/qmail-pop3d \
		Maildir 2>&1

log/run 파일의 내용은 다음과 같다.

	#!/bin/sh
	exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \
		/var/log/qmail/qmail-pop3d


3.9. 액세스 컨트롤

큐메일 SMTPD 를 구동하기 전에, 액세스 컨트롤이 실행되도록 하여야 한다. 이 간단한 작업은 /etc 에 저장되는 파일을 이용한다. /etc/tcp.smtpd 가 내가 사용하는 액세스 컨트롤 파일이다. 만일 다른 액세스컨트롤 파일을 사용하지 않는다면 /etc/tcp.smtp 에 다음 한줄을 작성한다. :allow

로컬호스트 이외에 어떠한 릴레이도 허락하지 않는 기본적인 컨피규레이션이다. 로컬호스트와 당신의 로컬네트웍 만 릴레이를 허락하는 컨피규레이션은 다음과 같다.

	127.0.0.1:allow,RELAYCLIENT=""
	192.168.1.:allow,RELAYCLIENT=""
	:allow

더 많은 예제를 보려면 man tcprules 를 참조하라.

rule 을 만들었으면 tcpserver 가 cdb(데이터베이스)로 부터 읽어서 활성화할 필요가 있다. /etc/rcp.smtp 파일로 부터 tcprules 프로그램을 이용하여 데이터 베이스를 생성한다. 다음의 명령을 수행하라.

	# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp


3.10. sendmail 죽이기!!

이것을 수행한다는 것은 좋은것을 위하여 위태로운 구 sendmail을 로부터 빠져나오는 것을 의미한다. 우선 당신의 sendmail 데몬을 찾아서 그것을 죽인다. 리눅스에서는:

	# killall -TERM sendmail

이러한 경험으로부터 기쁨을 얻은 느낌은 sendmail이 재시동되면 다시 죽여야 하기 때문에 다음을 실행시킨다.

	# mv /usr/lib/sendmail /usr/lib/sendmail.old
	# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
	# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
	# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

	# mv /usr/sbin/newaliases /usr/sbin/newaliases.old
	# ln -s /var/qmail/bin/newaliases /usr/sbin/newaliases

(/usr/sbin 은 당신의 시스템에는 없을수 있다.)

*** 중요한것: sendmail은 당신의 초기화 스크립트에 의해서 시돋되도록 되어 있다. 이러한 시스템이 reboot 될경우에 실행하는 초기화 스크립트에서 sendmail을 지워야할 필요성이 있다. 각 시스템마다 규정되어 있는 문건에서 도움을 받을수 있을 것이다.


3.11. /var/qmail/rc 생성하기

/var/qmail/rc 파일은 큐메일파일중에서 가장 중요한 파일중의 하나이다. 이것은 큐메일을 책임지고 시작하게 한다. 보다 중요한것은 큐메일이 항상 메일을 수신할수 있도록 한다. rc 의 내용은 큐메일을 위한 기본적인 전송 명령 으로 되어 있다.

	#!/bin/sh

	exec env - PATH="/var/qmail/bin:$PATH" \
		qmail-start '|dot-forward .forward |preline procmail'

겨울아찌: 이 스크립트 파일도 실행모드로 변경 시켜주어야 한다. chmod 755 rc 실행요.


3.12. Maildir.

Maildir은 메세지를 전송하는 또하나의 방법으로서 다음과 같은 이점을 가지고 있다:

  • Lock-free -- 이것은 NFS를 이용한 파일저장 방법에서도 신뢰도를 가지고 있다.

  • qmail-pop3d를 사용할수 있다. 큐메일과 사용하는 POP3 데몬은 안전하다.

  • 프로그램은 /var/spool/mail 의 당신의 메일박스의 파일의 시간을 가져오는데 stat()를 사용하지 않는다. 대규모의 유저베이스 시스템에서는 이것을 만드는데 상당한 시간이 걸릴수 있다. mutt MUA에 의해서 실제적으로 지원된다.

  • mutt MUA를 완벽하게 지원한다.

Maildir을 사용하게 되면 몇가지의 단점을 가지고 있다.

  • PINE과 같는 일부 대중적인 프로그램은 Maildir을 사용하기 위해서는 패치를 하고 재컴파일을 해야한다. PINE의 패치를 위해서 Bloodhounds Internations 의 c-클라이언트 패치가 필요하다.

  • Maildir은 각 메세지 별로 분리된 파일로 저장한다. 이것은 하나의 스풀파일을 사용하는것보다 자원을 많이 소모한다.

만일 /var/spool/mail 디렉토리 대신에 당신의 홈디렉토리에서 Maildir을 이용하기를 원한다면 /var/qmail/rc 를 다음과 같이 변경한다.

	#!/bin/sh

	exec env - PATH="/var/qmail/bin:$PATH" \
		-start '|dot-forward .forward ./Maildir/'

기억할것은 Maildir 은 이용자의 것으로 소유가 되어 있어야 한다. 만일 root에 의해 서 생성되면 당신의 것으로 오우너싶을 바꾸어 놓아야 한다. /etc/skil에 있는 Maildir을 포함하는것도 좋은 아이디어 이다. 이것은 자동적으로 새로운 유저에게 Maildir을 만들어 준다. Maildir에 대하여 좀더 알고 싶으면 INSTALL.maildir을 읽어보라.


3.13. 큐메일 시작

이제 모든것이 완료되어 큐메일을 시작할 준비가 되었다. svscan 이 이미 실행 중 이므로 /service 디렉토리에 /var/qmail/supervise 의 컨트롤 디렉토리들을 심볼릭 링크를 해주어야 한다.

	# ln -s /var/qmail/supervise/* /service/

큐메일 서비스가 구동되려면 잠깐기다려야 한다. ps 로서 실행이 되는지 를 체크한다.

겨울아찌: 만약에 큐메일이 제대로 시작되지 않거나 로그에 tcpserver 의 포트가 사용 중이라고 나오면 어떠한 원인으로 tcpserver 가 이미 기동된 상태일 수 있다. 이런메세지가 나오면 /etc/rc.d/init.d/qmail stop 으로 정지시키고 ps 로 tcpserver 가 구동되어 있는지 확인해 본다. 있으면 kill 로 죽이고 /etc/rc.d/init.d/qmail start 로 다시 기동해 본다.

또하나 /var/log/qmail 이하의 log 디렉토리에 log 파일이 정상적으로 쌓이는 것은 current 파일에 쌓인다 만약에 파일이 제대로 나타나지 않을 경우 svscan 이 정상적으로 필요한 시스템 파일을 만들지 못한경우이다. 이런경우 svscan 이나 qmail 로 시작시킬경우 해당 control 파일을 읽을수 없다는 메세지가 나온다. 그러면 /etc/rc.d/init.d/svscan stop 으로 정지시키고 run 파일을 제외한 모든 파일을 삭제한다. 그리고 다시 /etc/rc.d/init.d/svscan start 로 구동시킨다. 3개의 파일중에서 1-2개만 안될경우도 모두 지우고 다시 해야한다.

	# ps auxww | grep qmail

하나의 qmail-send 프로세서와 몇개의 supervise 프로세스가 보일것이다. 만일 그렇지 않으면 좀더 기다려 본다. 무언가 잘못되었다고 생각되면 이전에 수행한 단계들을 재점검 해봐야 할것아다.

큐메일 프로세스가 보였다면 로컬딜리버리를 테스트 한다. 그것은 TEST.deliver 문건 대로 따라서 한다. qmail-smtpd 프로세스가 telnet 포트 25번을 통하여 수행되고 있는지 확인해 보라.


3.14. rblsmtpd

rblsmtpd 는 tcpserver 하에서 (예를 들면 큐메일과 sendmail) SMTP 서버로서 수행 하는 일반적인 프로그램이다. 만일 MAPS RBL에 목록화된 불록사이트를 원한다면 SMTP 데몬을 어떠한 인수를 rblsmtpd에게 줄 필요는 없이 SMTP데몬이 수행된다. 만일 당신이 다른 블럭킹 시스템에서 블럭기반의 시스템을 원한다면 릴레이 스팸 스토퍼(RSS)를 찾아보도록 한다. 이것은 rblsmtpd 의 수행을 멀티플로 수행시킬 필요가 있을 것아다. 이것은 서버의 명칭에 -b 플러그를 이용함 으로서 할수 있다. 당신은 각각 실행하는 방법을 찾아볼수 있다.

큐메일에 rblsmtpd 를 추가되게 하려면 /var/qmail/supervise/qmail-smtp/run 파일을 다음과 같이 수정한다.

	#!/bin/sh
	QMAILDUID=`id -u qmaild`
	NOFILESGID=`id -g qmaild`
	exec /usr/local/bin/softlimit -m 2000000 \
		/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
		-u $QMAILDUID -g $NOFILESGID 0 smtp rblsmtpd /var/qmail/bin/qmail-smtpd 2>&1

당신의 눈이 좋다면, qmail-smtpd 프로세서 이전에 rblsmtpd이 추가되어 있는것을 볼수 있을것이다. 이것은 rbl.mps.vix.com 영역에 나열된 블럭메일 이 될것으로 만일 RSS 를 이용하길 원한다면 qmail-smtpd 이전에 또하나의 rblsmtpd 를 추가 한다.

	#!/bin/sh
	QMAILDUID=`id -u qmaild`
	NOFILESGID=`id -g qmaild`
	exec /usr/local/bin/softlimit -m 2000000 \
	/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
		-u $QMAILDUID -g $NOFILESGID 0 smtp rblsmtpd rblsmtpd \
		-rrelays.mail-abuse.org /var/qmail/bin/qmail-smtpd 2>&1

추가시킨 rblsmtpd 프로세스 만큼 복수의 블랙리스트를 체크한다.


3.15. RTFM

이시점에 있어서 공식적인 문서를 읽어보는것이 좋은 생각일것이다. 물론 당신이 나의 빈약한 문건을 계속해서 읽는다면 그렇게 하지 않아도 된다. 나는 당신을 지긋지긋하게 할것이지만 그것은 나를 몰입하게 한다.

어떻든 간에 qmail로 돌아가자.


3.16. 제어파일들

당신은 한번은 qmail 시스템을 셋업하고 수행시켰다. 그것이 단순한 몇가지의 지식 으로 하였다고 하더라도 말이다. 무었보다도 지금 당신은 알게된것에 대하여 행복 할것이고 이제 sendmail보다 가상의 호스트를 쉽게 세팅하는것에 대하여 해보도록 한다.

당신의 /var/qmail/control 디렉토리르 보면 다음과 같은 파일들이 있다.

	nose:/var/qmail/control$ ls -la
	total 8
	drwxr-xr-x 2 root qmail 1024 Sep 29 10:08 .
	drwxr-xr-x 10 root root 1024 Sep 18 02:48 ..
	-rw-r--r-- 1 root root 22 Sep 18 02:40 defaultdomain
	-rw-r--r-- 1 root root 27 Sep 18 02:40 locals
	-rw-r--r-- 1 root root 27 Sep 18 02:40 me
	-rw-r--r-- 1 root root 17 Sep 18 02:40 plusdomain
	-rw-r--r-- 1 root root 27 Sep 18 02:40 rcpthosts
	-rw------- 1 root root 147 Sep 29 10:08 virtualdomains

세개의 가장 중요한 파일들이 있는데 (무었보다도 중요하다):

me -- (qmail은 사실 이파일로 수행된다. 이것에는 당신의 로컬 호스트명과 도메인 명을 가지고 있다) rcpthosts -- (qmail이 편지를 받기위한 모든 호스타이다. 당신의 로컬 도메인을 이 파일에 곡 세팅하여야 한다.)

중요한것: 도메인을 위한 qmail 바운스메일은 rcpthost에 리스트 되어 있지는 않다. 당신의 가상도메인을 포함아혀 모든 도메인들은 이파일에 목록화 되어야 한다.

locals -- (로컬의 모든 호스트, 즉 /etc/passwd 내에 있는 편지를 받은 유저들의 호스트들이 기록된다.)


3.17. dot-qmail.

dot-qmail 은 중요한 컨셉이고 나의 생각에 이 HOW-TO에서 마땅히 하나의 섹션을 할당 받을 만한 것이다. 그러한 이유는 당신은 qmail이 설치하고 나면 95% 가 dot- qmail을 사용할것이기 때문이다.

dot-qmail은 qmail-local이라고도 불리며 메세지를 수신한 이후의 모든것을 할 수 있다. dot-qmail을 사용하면 그이용자는 메일을 포워드 할수 있고, ezmlm 메일링 리스트를 생성할수 있고 (qmail 메일링 리스트와 같은), 사용자 이름하의 알리아스를 생성할수 있고, 외부 프로그램을 호출하여 자동답신을 할 수 있다.

dot-qmail은 당신의 홈디렉토리에 있는 .qmail 파일에 의하여 실행된다. qmail-local은 message를 이파일의 명령에 따라서 읽어들인다.

qmail이 .qmail 파일을 찾지 못할 경우에 수신자의 홈디렉토리에 있는 메일박스에 메일을 전송한다. dot-mail의 매뉴얼 페이지를 보도록 하라.

dot-qmail의 위해단 점중의 하나는 유저가 자신의 알이아스를 가질수 있다는 것이다. 만일 나의 이용자 account가 "adm"으로 되어 있다면 나는 .qmail-info 파일을 셋업 할수 있다. 이파일에는 처리하는 메세지들을 adam-info에 주소화하는 명령어를 가지 고 있을 것이다. dot-qmail은 당신의 취향대로 많은 알리아스를 생성할수 있고 분산화된 목록이라도 이용할 수 있다.


3.18. 가상도메인.

dot-mail에 감사를 보내면서 가상 도메인은 알리아스를 만드는것 만큼이나 쉽다. 가상도메인 파일에 다음과 같는 포맷으로 작성한다.

	example.com:user

이 도메인으로 수신되는 메일은 어느 유저에게 보낼것인가를 알려주고 있다. 이것은 처음볼때에는 복잡해 보이나, 실제로는 매우 직관적이다. 만일 나의 계정이 example.com 으로 수신되는 가상도메인의 의해서 지정된 adm이라면 .qmail 파일에 나의 홈디렉토리에서 example.com 일반적으로 사용되는것과 마찬가지 로 저장되도록 할수 있다. 그렇다면 .qmail-info는 info@example.com 으로 되어야 한다.

그러나 나의 이용자계정으로 부터 하나의 가상도메인보다 많은 관리를 하려면 어떻게 해야할까?

가상도메인 파일은 매우 직감적으로 만들수 있다. 호혜적인 사용자간의 밀어내기 대신 에 단지 호혜적인 이용자 확장을 설정한다. 예를 들면:

	example.com:adam-example
	example2.com:adam-example2

이러한 컴피규레이션은 가상 호스트알리아스 생성을 쉽게 한고 dot-qmail 파일명으로 확장하는것과는 다르다. 지금 info@example.com 은 .qmail-example-info 에 의해서, info@example2.com 은 .qmail-example2-info 으로 된다.

만일 .qmail-ext 가 존재하지 않으면 qmail-local 은 기설정된 .qmail 을 이용한다. 예를 들면 ext 가 for-bar 이면 (?) qmail-local 은 .qmail-for- 보다도 우선 .qmail-for-bar을 찾는다, 그리고 마지막으로 .qmail-defualt를 찾는다. 만일 어떤것도 발견되지 않으면 qmail-local은 메세지를 바운스(?)한다. (예외로서 기본적인 이용자 주소가 있다면 qmail-local은 .qmail 이 존재하지 않거나 .qmail이 비어었음으로 처리한다.) 이러한 처리는 dot-qmail의 매뉴얼 페이지로부터 온것이다.


3.19. FastForward

대부분의 샌드메일 유저들은 /etc/aliases 에 익숙하다. djb 의 fastforward 패키지는 이러한 샌드메일의 /etc/aliases 를 지원한다. 더불어서

/etc/aliases 가 활성화 되면, /var/qmail/alias/.qmail-default 에 그내용을 저장한다.

	| fastforward -d /etc/aliases.cdb

축하한다. 이제는 /etc/aliases 가 활성화 되었다. 당신은 샌드메일 형식으로 /etc/aliases 을 사용할 수 있다. 가상도메인에서도 이용할수 있다. (샌드메일에서는 지원하지 않는다) /etc/aliases 를 병경하게 되면 /etc/qmail/bin/newaliases 를 수행하여야 한다. 보다 자세한 정보를 얻으려면 fastforward 에 포함되는 ALIASES 파일을 읽어보라.


3.20. 끝 (그리고 시작)

큐메일은 극단적으로 빠르고, 유연하고 안전한 MTA 이다. 이것은 많은 다른 응용프로그램으로 이루어져 있고 내가 하고자 하는 것들을 할수 있게 해주었다. 더 필요한 정보는 큐메일 웹사이트를 읽어라.


3.21. 알아두어야 할것들

나는 다름과 같은 사람들에게 감사를 표한다.

  • Dan Bernstein, 그의 훌륭한 프로그램을 제공해 준것에 대하여

  • Russell Nelson, qmail 홈페이지를 호스팅하여 준것에 대하여

  • Christopher Johnson, vckpw 패키지를 작성해 준것에 대하여

  • Mr. Sam, maildrop을 포함하도록 qmail의 다양한 기능을 진전시켜 준것에 대하여

  • 다음사람들에게는 이 HOWTO가 좀더 잘만들어 지도록 피드백을 보내준데 대하여 감사를 드린다.

    • Matthew Gibbins

    • Scott Schwartz

    • Mark Delany

    • harold@nb.com.[sg]

    • Erik Linder

    • Djalil Chafai

    • Olivier Mueller

    • Peter Rye

    • Harry Hersh

    • Michael Handler

    • Mate Wierdl

    • Dave Sill (See Life with Qmail을 보라, 또다른 훌륭한 큐메일 레퍼런스 이다.)

    • Neal Pollack


3.23. 지불!

당신은 이제까지의 이러한 작업을 쉽게 하였는가? 그렇다면 걱정할것은 없다. 나는

만일 이 HOWTO 가 당신에게 도움이 되었다면 나에게 감사하게 생각하면 되고, 가능하면 우편엽서라도 보내주거나, 특별하게 감사하게 생각한다면 Amazone.com buy.com 에서 Gift Certificate 를 보내주면 더욱 좋겠다.

--Adam adam@flounder.net This HOWTO is Copyright(R) 1998-2000 Adam D. McKenna 이문건의 허가와 재배포는 Open Content 라이선스에 따른다.


ID
Password
Join
Your mode of life will be changed for the better because of good news soon.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-06-10 18:35:09
Processing time 0.0196 sec