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

qmail + vpopmail

qmail + vpopmail

임은재

         
      

v2.3, 2002/03/07

이 문서는 sendmail을 대체하는 메일 전송 에이전트(MTA)인 qmail 과 가상 도메인 POP 메일을 쉽게 관리할수 있는 vpopmail 과 qmailadmin 의 설치, 운영에 대한 글입니다.

고친 과정
고침 v2.32002년 3월 7일고친이 ej
ucspi-tcp, daemontools, etc...
고침 v2.22002년 2월 1일고친이 ej
vpopmail 로밍 컴파일 옵션
고침 v2.12001년 12월 18일고친이 ej
vpopmail 컴파일 옵션 설명 오류 수정, 기타
고침 v2.02001년 11월 8일고친이 ej
vpopmail 5.0 release 에 따른 컴파일 옵션, 기타
고침 v1.92001년 10월 4일고친이 ej
sgml 수정
고침 v1.82001년 5월 23일고친이 ej
vpopmail 관련 설정 수정, inetd, xinetd 를 이용한 pop3 설정 추가
고침 v1.72001년 2월 26일고친이 ej
vpopmail을 이용한 smtp 릴레이 기능 설명, FAQ, 팁 추가, 오타 수정
고침 v1.42000년 11월 18일고친이 ej
linuxdoc sgml에서 DocBook 으로 변환
고침 v1.32000년 11월 18일고친이 ej
vpopmail, qmailadmin 설명 추가
고침 v1.02000년 8월 15일고친이 ej
첫번째 문서 linuxdoc sgml

차례
소개
1. 필요한 것들
2. qmail
2.1. 유저, 그룹 추가
2.2. qmail과 부수적인 패키지 설치
2.3. 스크립트
2.4. 기본 alias 계정
2.5. qmail 시동 파일
1. vpopmail
1.1. 유저, 그룹 추가
1.2. 컴파일 옵션
1.3. SMTP 릴레이 설정
1.4. pop3 시동 파일
1.5. 도메인, 메일 계정 추가하기
1.6. 기존 POP 사용자 변환
1. qmail 데몬 시작하기
1.1. qmail
1.2. 서버 제어
1. qmailadmin
1.1. ezmlm 설치
1.2. qmailadmin 설치
1. 관리하기, 팁, FAQ, etc...
1.1. 도메인 추가후에는
1.2. root 와 mailer-daemon 유저를 추가해라
1.3. 알리아스와 포워드 계정
1.4. 각 도메인마다 메일 계정, 메일링 리스트 수 한계 정하기
1.5. bounce 되는 메일에 메세지 넣기
1.6. 존재하지 않는 계정으로 오는 메일을 모두 받아 보려면
1.7. 존재하지 않는 계정으로 오는 메일을 삭제 하려면
1.8. 존재하지 않는 계정으로 오는 메일을 다른 도메인으로 보내려면
1.9. 특정 메일계정으로 오는 메일 바운스하기
1.10. 서버에서 메일 클라이언트를 사용하는 유저들을 위해
1.11. qmail 설치 디렉토리가 /var/qmail 이 아니라면?
1.12. 도메인 마다 IP 주소가 다를 경우
1.13. vpopmail 설정시 --enable-large-site=y (--enable-many-domains)은 무엇인가?
1.14. qmail을 rpm으로 설치했을 경우 주의점!
1.15. CDB에서 MySQL 로의 전환
1.16. NFS file locking 문제점
1.17. oracle, sybase 를 사용한다면
1.18. vpopbull
1.19. 새로운 가상 도메인과 기존 가상 도메인의 알리아스
1.20. sqwebmail 을 이용한 웹 메일 서비스
1.21. imap
1.22. qmail 서버 속도 향상 시키기
1.23. Debian 에서 vaddomain이 작동하지 않을때
1.24. 가상 도메인, 가상 계정의 클라이언트 설정
1. 맺음말
1.1. 참고
1.2. 저작권
1.3. 기타

소개

지금 당신이 sendmail (또는 다른 MTA)과 행복하게 잘 살고 있고, 다른 기능이 더이상 필요없다면 당신은 이글을 읽어볼 필요가 없다.

하지만...

qmail, vpopmail, qmailadmin 으로 무엇을 할수 있을까?

  • 한개의 서버, 한개의 IP 에서 무한정(?)의 도메인, pop 메일 서비스를 해 줄수 있다.

  • 한개의 uid,gid 로 모든 버츄얼 도메인, pop 계정을 관리 하므로 불필요한 유저 생성을 피할수 있다.

  • 각 도메인의 postmaster 는 웹 인터페이스로 pop 메일 유저 설정을 직접 할수 있다.

  • 각 도메인마다 메일 계정, 메일링 리스트의 한계를 설정 할 수 있다.

  • 유저 별로 quota 설정이 가능하다.

  • 맛있는 비빔밥 ;)

이외에도 vpopmail 은 데이타베이스(MySQL, Oracle, Sybase)를 이용한 사용자 관리, smtp 사용자들의 로밍 서비스 (고정 IP를 가지고 있지 않은 사용자에게 smtp 릴레이를 허용해주는)를 해줄수 있다.

이 문서의 가장 최신 버전은 http://kldp.org/~eunjea에 있다.


1장. 필요한 것들

qmail , ucspi-tcp , daemontools

위의 것들은 모두 http://qmail.org 에서 받을 수 있거나 링크를 찾을수 있다.

vpopmail, qmailadmin, autoresponderinter7.com에서 구할수 있다.

qmailadmin 은 vpopmail의 웹 인터페이스로 POP 사용자 관리를 브라우저를 통해 편하게 할 수 있도록 해준다. vpopmail 명령어들을 직접 사용할 것이라면 설치하지 않아도 아무런 다른 기능상의 제약은 없다. qmailadmin 을 설치하려면 autoresponder 와 ezmlm 도 설치한다.

ezmlm 은 qmail 하에서 돌아가는 강력한 메일링 리스트로서 http://www.ezmlm.org/에서 ezmlm 과 ezmlm-idx 를 받는다.


2장. qmail

필요한 파일들이 모두 준비되었다면 먼저 qmail 을 설치하자.

이미 qmail을 설치했거나 사용중인 시스템 이라면 다음장인 vpopmail로 넘어간다.

만약 당신이 sendmail 또는 다른 MTA가 돌아가고 있는 서버에 설치를 해야 한다 해도 걱정할것은 전혀 없다. 이 문서를 끝까지 읽고 모든 설정을 마친후 sendmail 에서 qmail 로의 전환은 수초에 끝낼수 있으며, qmail 데몬을 구동하기 전까지는 아무런 영향도 미치지 않는다. 필자도 하루에 수만통을 배달하는 서버들을 qmail로 전환하는데 아무런 장애도 주지 않았다.

이제 qmail을 설치하자.


2.1. 유저, 그룹 추가

일단 타볼을 풀고

$ tar xzf qmail-1.03.tar.gz
$ cd qmail-1.03

다음 디렉토리를 만든다.

$ mkdir /var/qmail

qmail 운영을 위한 유저,그룹을 만들어 주기 위해 운영체제에 따라 INSTALL.ids 를 편집한다. 리눅스에서의 내용은 다음과 같다.

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 

sh INSTALL.ids 해주면 필요한 유저,그룹이 생성된다.


2.2. qmail과 부수적인 패키지 설치

다음과 같이 qmail 바이너리를 만들고 인스톨 해준다.

$ make
$ make setup check

다음 기본 control 파일들의 설정을 위해

$ ./config

이것이 정상적으로 실행 되었다면 /var/qmail/control/ 안에는 qmail이 정상적으로 작동하기 위한 설정 파일들이 생겨야 한다. 만약 그렇지 않다면 서버의 DNS 설정(MX 레코드)에 문제가 있는 것이다.

이쯤에서 qmail을 위한 몇가지 부수적인 프로그램들 (ucspi-tcp , daemontools , autorespond)을 설치한다.

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
$ cd /package

다운로드 받은 daemontools 소스 파일을 /package 로 옮긴 후 설치를 진행한다.

$ mv ~/down/daemontools-0.76.tar.gz /package 

$ tar xzf daemontools-0.76.tar.gz
$ rm daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76
$ package/install

autorespond

$ tar xzf autorespond-2.0.2.tar.gz
$ cd autorespond-2.0.2
$ make
$ cp autorespond /usr/local/bin/

주의: 어떤 배포본들은 daemontools 컴파일 과정시 다음과 같은 오류가 발생 할 수 있다.

./compile tai64nlocal.c
tai64nlocal.c: In function `main':
tai64nlocal.c:54: warning: assignment makes pointer from integer without a cast
tai64nlocal.c:55: dereferencing pointer to incomplete type
...

이것은 tai64nlocal.c 의 두번째 줄 ``#include <sys/time.h>'' 를 ``#include <time.h>'' 로 수정하면 정상적으로 컴파일 할 수 있다 (life with qmail에서).


2.3. 스크립트

모두 이상없이 설치가 되었다면 다시 qmail 운영에 필요한 스크립트들과 파일들을 만든다.

/var/qmail/rc 의 내용

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/

이 파일에 실행 퍼미션을 준다.

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

/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
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

위와 같이 qmaild 의 UDI,GDI 를 사용 하거나, vpopmail을 사용할 것이라면 vpopmail 권한으로 실행되도록 한다.

참고: 솔라리스에서는 다음과 같이 스크립트 내용을 바꿔준다.

ALIAS_UID=`/usr/xpg4/bin/id -u qmaild`
ALIAS_GID=`/usr/xpg4/bin/id -g qmaild`

/var/qmail/supervise/qmail-smtpd/log/run 의 내용

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

이렇게 편집한 파일들에 실행 권한을 준다.

$ 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

다음은 qmail-smtpd 를 위한 로그 디렉토리 만들기

$ mkdir -p /var/log/qmail/smtpd
$ chown qmaill /var/log/qmail /var/log/qmail/smtpd

vpopmail의 로밍 서비스(고정 IP를 가지고 있지 않은 POP 유저에게 SMTP 릴레이를 열어 주는 것)를 사용할 것 이라면 다음장으로 넘어간다.

다음 파일에는 qmail-smtpd가 릴레이를 허용 할 주소를 적어주는 것이다. 이 예에서 사용한 192.168.1.1은 설치할 서버의 실제 주소로 바꿔야 한다. 그외 릴레이를 허용할 주소가 있다면 같은 형식으로 추가한다.

/etc/tcp.smtp의 내용

127.0.0.1:allow,RELAYCLIENT=""
192.168.1.1:allow,RELAYCLIENT=""

이 파일은 실제로 tcpserver가 읽을 수 있는 cdb 형식으로 바꿔야 하므로 다음과 같이 해준다.

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

2.4. 기본 alias 계정

qmail은 root 계정으로 메일을 배달하지 않으므로, 알리아스를 반듯이 만들어 줍니다. 그리고 postmaster, mailer-daemon 도 역시 일반 계정으로 알리아스를 만드는 것이 좋습니다.

예를 들어 이 주소들로 도착하는 메일은 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

2.5. qmail 시동 파일

레드헷 계열의 배포본에서 사용할 수 있는 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

위의 것을 그대로 복사,저장 하거나 이곳에서 받을수 있다. 이것을 /etc/rc.d/init.d/ 에 qmail 이라는 이름으로 저장 한 후 실행 퍼미션을 준다. 다음 ntsysv 실행시키면 qmail 이라는 새로운 항목이 보일것이다. 리부팅 할때 qmail 데몬이 실행되도록 체크해준다.


1장. vpopmail

vpopmail은 가상 도메인 추가, 설정, pop 유저 설정과 pop3 데몬등의 기능을 한다.

참고:


1.1. 유저, 그룹 추가

vpopmail이 제대로 작동하려면 vpopmail이 사용할 유저와 그룹을 만들어야 한다.

$ groupadd vchkpw
$ useradd -g vchkpw vpopmail

이때 생성되는 vpopmail 홈 디렉토리에는 앞으로 추가할 도메인들의 모든 이메일 계정, 메일들이 저장될 곳이므로, 공간이 넉넉한 파티션을 고르는 것이 좋겠다. 다른 파티션을 사용할 것이라면 다음과 같이 할수 있다.

$ useradd -g vchkpw -d /원하는/파티션의/디렉토리를/지정 vpopmail

1.2. 컴파일 옵션

이제 vpopmail 을 설치하자.

$ tar xzf vpopmail-5.2.tar.gz
$ cd vpopmail-5.2

  • MySQL 사용하지 않을 경우

    sql를 사용하지 않는다면 보통 다음 옵션만 주고 컴파일 하면 된다.

    $ ./configure --enable-default-domain=babo.org
    $ make
    $ make install-strip
  • MySQL을 사용 할 경우

    MySQL db를 사용하려 한다면, 컴파일 하기전에 먼저 vmysql.h 를 열어서 sql 서버를 억세스 할수 있는 user와 암호등을 설정해주어야 한다. 테이블을 생성/삭제 할수 있는 사용자 이여야 하므로 보통 root 나 해당 유저로 설정해 준다.

    $ ./configure --enable-default-domain=babo.org --enable-mysql=y
    $ make
    $ make install-strip

    이때 --enable-large-site=n|y 옵션을 사용할수도 있는데 이것은, 디폴트로 vpopmail은 모든 도메인, 유저 정보를 한개의 테이블에서 관리한다. 만약 각각의 도메인에 매우 많은 메일유저가 있다면 y 로 설정하면, vpopmail은 도메인별로 테이블을 생성,유저정보를 관리한다.

    참고: vpopmail 5.0 이상 버전은 --enable-large-site 옵션이 --enable-many-domains 으로 바뀌었다. 즉, 각 도메인별로 테이블을 생성관리 할것이라면 --enable-many-domains=n 옵션을 사용한다.

    만약 sql 헤더파일이나 라이브러리를 찾지 못한다며 컴파일에 실패한다면, --enable-sqlincdir= sql 헤더파일 경로. --enable-sqllibdir= sql 라이브러리 경로 등을 ./configure 할때 추가 해준다.

  • 로밍 서비스를 사용할 것이라면 --enable-roaming-users=y 옵션을 추가한다.

    $ ./configure --enable-default-domain=babo.org \
                  --enable-roaming-users=y \
                  --enable-tcprules-prog=/usr/local/bin/tcprules \
                  --enable-relay-clear-minutes=15

  • ip aliasing을 사용하여 각 도메인마다 각기 다른 ip를 사용할 것이라면, --enable-ip-alias-domains=y 옵션을 추가한다.

  • vpopmail pop 서버의 로그 조절 옵션

    아무런 옵션을 주지 않고 컴파일 했다면 vpopmail pop서버는 팝 유저들이 어떤 이유로든 로그인을 실패 했을 경우에만 로그를 남긴다.(/var/log/maillog 또는 /var/log/messages)에) 다음과 같은 옵션으로 로그 조절이 가능하다.

    • --enable-logging=y : 모든 pop 로그인 기록과 오류 메시지를 남긴다.

    • --enable-logging=n : 아무런 로그도 남기지 않는다.

    • --enable-logging=e : 오류/ 치명적인 오류 메세지를 기록한다.

    • --enable-logging=p : 오류 로그에 암호를 포함한다.

    • --enable-logging=v : --enable-logging=y 와 같으며 사용자 암호를 로그에 포함한다.

위의 예에서 사용한 babo.org는 주 도메인 이름으로 실제 사용할 도메인으로 바꿔준다. 이것을 설정하면 주서버의 메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다. (이렇게 하는 것을 권장한다)

참고: 매우 많은 수의 도메인과 메일 계정을 가진 대형 서버에서 vpopmail 유저들에게 SMTP 릴레이를 허용하도록 하려면 vpopmail을 MySQL를 사용하도록 컴파일 하고 tcpserver에 Matt Simerson이 만든 mysql 패치를 사용할 것을 권장한다. http://matt.simerson.net/computing/mail/toaster

설치가 되었다면 ~vpopmail 안에는

bin
doc
domains
etc
include
lib
users
등의 디렉토리과 필요한 바이너리들이 생겼을 것이다.

1.3. SMTP 릴레이 설정

vpopmail의 로밍서비스는 고정되어 있지 않은 IP사용자들에게 smtp 릴레이를 지원해 줄수 있는 기능이다. vpopmail은 먼저 POP 메일 유저의 암호를 확인한다음 얼마만큼의 시간동안 그 IP주소의 smtp 릴레이를 열어 놓게 된다. 다음과 같이 기본적인 tcp.smtp 파일을 만든다.

echo "127.0.0.:allow,RELAYCLIENT=\"\"" > ~vpopmail/etc/tcp.smtp

위 내용은 반듯이 필요하며, 이제 추가적으로 고정 IP(또는 대역)를 추가할수도 있다. 다음은 C class 10.1.1.x 대의 IP 주소로 부터의 릴레이를 허용한다.

echo "10.1.1.:allow,RELAYCLIENT=\"\"" >> ~vpopmail/etc/tcp.smtp

이제 기본 릴레이 파일을 만들었다면 다음 명령을 한번 실행해 준다.

~vpopmail/bin/clearopensmtp

마지막으로 crontab을 하나 설정해야 하는데, 이것은 cron에 의해 주기적으로 실행되어 릴레이가 허용된 IP 주소중 pop 인증 시간이 한시간 이상된 것이 있으면 지워준다. vpopmail 컴파일시 별다른 옵션을 주지 않았다면 기본적으로 릴레이 허용 시간은 한시간이며 이것은 --enable-relay-clear-minutes= 옵션으로 바꿔줄수 있다.

# crontab -e
40 * * * * /home/vpopmail/bin/clearopensmtp

qmail-smtpd 시동 스크립트는 vpopmail이 조절하는 cdb 파일을 참고하도록, 다음과 같이 바꾼다.

/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

1.4. pop3 시동 파일

vpopmail 의 pop3 시동 파일을 만들자. 적당한 곳에 디렉토리를 만들고 run 파일을 만든다.

$ mkdir /var/qmail/supervise/vpop

이 예제에서 babo.org는 서버의 도메인이다. vpopmail 설치시 --enable-default-domain 를 주고 설치했다면 더 안전하게 pop3 데몬을 vpopmail 유저 권한으로 실행시킬수 있다.

/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 babo.org \
     /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1

이 파일에 실행 권한을 준다.

$ chmod 755 /var/qmail/supervise/vpop/run

데몬의 실행은

$ ln -s /var/qmail/supervise/vpop /service
5초 이내로 daemontool에 의해 pop 데몬이 구동될 것이다.

위와 같이 pop3 데몬을 daemontool/tcpserver로 운영하거나 다음과 같이 inetd 또는 xinetd 모드로 운영할수도 있다.

  • inetd 를 사용할 경우에는 다음과 같은 설정을 /etc/inetd.conf 에 추가하면 되는데, 먼저 /etc/service 파일을 확인하여 pop3 인지 pop-3 로 정의되어 있는지 확인한다.

    	
    pop3 stream tcp nowait root /var/qmail/bin/qmail-popup \
    qmail-popup babo.org /home/vpopmail/bin/vchkpw \
    /var/qmail/bin/qmail-pop3d Maildir
  • 요즘 대부분의 배포본에 포함되어 있는 xinetd를 사용하려면 다음의 설정 파일을 사용한다.

    service pop3
    {
      disable     = no
      socket_type = stream
      protocol    = tcp
      wait        = no
      user        = root
      server      = /var/qmail/bin/qmail-popup
      server_args = babo.org /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir
      log_type    = FILE /var/log/xinetd.log
      log_on_success = HOST
      log_on_failure = HOST RECORD
    }

1.5. 도메인, 메일 계정 추가하기

~vpopmail/bin 디렉토리 안에 가상 도메인 관리를 위한 바이너리들이 있는데 다음과 같은 기능을 한다.

표 1-1. 각 바이너리들의 용도

vadddomain가상 도메인을 추가한다. postmaster 암호를 물어보는데 이것은 다음에 설치할 qmailadmin 웹 인터페이스에서 로그인 할때 물어볼 암호이다. 형식은 vadddomain 도메인명
vdeldomain가상 도메인과 모든 유저를 삭제한다. vdeldomain 도메인명
vadduserpop 메일 유저 계정을 만든다. vadduser babo@babo.org
vdeluserpop 메일 유저 삭제. vdeluser babo@babo.org
vpasswd메일 유저의 암호 바꾸기. vpasswd babo@babo.org
vsetuserquota각 유저 별로 quota 설정을 할수 있다. vsetuserquota babo@babo.org 51200 (단위는 byte 이다).
vpopbull서버에 설정되어 있는 모든 유저들에게 한번에 메일을 보낼때 유용하게 사용할수 있다.

이제 도메인을 추가하자. 위에서 주 도메인도 vpopmail에서 관리하기로 했다면 주 도메인과 메일 계정들도 추가해야 한다.

만약 주 도메인이 babo.org 이고, 추가할 가상 도메인이 babo1.org, babo2.org 라고 한다면 다음과 같이 한다 (추가하기 전에 가상 도메인들의 DNS MX 레코드의 IP주소가 주 서버로 되어있는지 확인 해보자).

./vadddomain babo.org
./vadddomain babo1.org
./vadddomain babo2.org

다음 qmail 설정 파일들이 제대로 바뀌었는지 확인해보자. 주 도메인도 vpopmail이 관리하기로 했다면 /var/qmail/control/locals 파일의 내용은 localhost 만이 있어야 정상이다. qmail smtpd가 이 서버의 것이라고 인식하며 메일을 수신할 도메인들은 다음과 같이 rcpthosts 에 저장될 것이다.

localhost
babo.org
babo1.org
babo2.org

virtualdomains 파일의 내용은

babo.org:babo.org
babo1.org:babo1.org
babo2.org:babo2.org

/var/qmail/users/assign 의 내용은

+babo.org-:babo.org:512:507:/home/vpopmail/domains/babo.org:-::
+babo1.org-:babo1.org:512:507:/home/vpopmail/domains/babo1.org:-::
+babo2.org-:babo2.org:512:507:/home/vpopmail/domains/babo2.org:-::
.

필요한 도메인, 메일 계정을 모두 추가했다면 우리는 이제 준비가 끝난 셈이다.


1.6. 기존 POP 사용자 변환

이전에 팝메일을 사용하던 계정 사용자들 (/etc/passwd에 등록되어 있는)은 vconvert를 사용하면 손쉽게 변환이 가능하다.

  • sql을 사용하지 않는 경우

    cd ~vpopmail/bin
    ./vconvert -e -c 도메인명
  • sql을 사용할 경우 vpopmail을 설치할때 사용하였던 옵션 (--enable-large-site)에 따라 -s 또는 -l 옵션을 준다.

    cd ~vpopmail/bin
    ./vconvert -e -s[l] 도메인명

    vpopmail 5.0 이상에서는

    ./vconvert -e -m 도메인명

1장. qmail 데몬 시작하기

모든 설정이 확실히 되었다고 생각된다면 이제 우리는 sendmail을 가차없이 죽이고 qmail 로 돌아설 때가 되었다. ;-)


1.1. qmail

만약 이전 sendmail이 아직 전송하지 못한 메일들이 메일큐에 쌓여 있다면 sendmail -q 를 실행 시켜서 전송을 마쳐 주어야 한다. 메일이 많이 쌓여 있을경우 이것은 한번의 실행으로 끝나지 않을수도 있다.

/etc/rc.d/init.d/sendmail stop 또는 다른 방법으로 sendmail 을 죽인다.

기존의 sendmail 바이너리를 qmail 의 것으로 바꾼다.

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

qmail 시동

$ ln -s /var/qmail/supervise/qmail-send /service/
$ ln -s /var/qmail/supervise/qmail-smtpd /service/

이렇게 /service 디렉토리에 링크를 한번 걸어주면 링크가 존재하는 한 즉, 재부팅 한다해도 daemontools에 의해서 자동으로 서비스가 시작된다.


1.2. 서버 제어

daemontools은 상당히 편리한 서비스 관리 도구로 tcpserver와 함께 inetd, xinetd를 완전히 대체할 수 있다. 개인적으로 inetd, xinetd는 더 이상 사용하지 않으며, 서버들의 모든 서비스 (nntp, pop, telnet, imap...)를 이것으로 관리하고 있다.

처음 사용하는 사람들을 위해 간단하게 지금까지 만든 qmail, vpopmail 서비스를 제어하는 예를 들면

종료

$ cd /service/qmail-send
$ rm -f /service/qmail-send
$ svc -dx . log

$ cd /service/qmail-smtpd
$ rm -f /service/qmail-smtpd
$ svc -dx . log

$ cd /service/vpop
$ rm -f /service/vpop
$ svc -dx .

stat 보기

$ svstat /service/vpop/

qmail 큐에 있는 메일을 강제로 배달하기

$ svc -a /service/qmail-send

서버 잠시 중지 시키기

$ svc -p /service/qmail-send
$ svc -p /service/qmail-smtpd
$ svc -p /service/vpop

다시 진행 시키기

$ svc -c /service/qmail-send
$ svc -c /service/qmail-smtpd
$ svc -c /service/vpop

간단한 스크립트를 만들어 사용해도 편리할 것이다.


1장. qmailadmin

qmailadmin 은 vpopmail의 웹 인터페이스이다. 도메인의 추가,삭제를 제외한 모든 기능을 웹상에서 할수 있으며, ezmlm 을 이용한 메일링 리스트 추가, 삭제, 관리까지 할수 있다.


1.1. ezmlm 설치

ezmlm 은 qmail 과 같이 사용할수 있는 강력한 메일링 리스트이다. 이 문서에서는 ezmlm 에 대한 설명은 하지 않겠다. ezmlm 에 대한 더 자세한 것은 해당 문서를 참조하라.

ezmlm 은 http://www.ezmlm.org에서 구할수 있다. ezmlm 과 ezmlm-idx 이 준비 되었다면 다음과 같이 한다.

$ tar xzf ezmlm-0.53.tar.gz
$ tar xzf ezmlm-idx-0.40.tar.gz
$ mv -f ezmlm-idx-0.40/* ezmlm-0.53/
$ cd ezmlm-0.53
$ patch < idx.patch
$ make
$ make man
$ make setup

ezmlm 은 /usr/local/bin/ezmlm/ 에 설치될 것이다.


1.2. qmailadmin 설치

$ tar xzf qmailadmin-1.x.tar.gz
$ cd qmailadmin-1.x

./configure 에 몇가지 옵션이 있다. 서버의 설정이 디폴트와 다른 경우 설정해 주자.

  • --enable-cgibindir :

    qmailadmin 이 설치될 디렉토리이다. 웹서버가 사용중인 cgi-bin 디렉토리를 적어준다. 디폴트는 /usr/local/apache/cgi-bin 이다.

  • --with-htmllibdir

    qmailadmin 의 html 템플레이트 파일 (당연히 이 파일들은 후에 입맛에 맞게 수정할수 있다.)들이 저장될 장소이다. 그냥 디폴트로 놔두어도 된다. (/usr/local/share/qmailadmin)

  • --enable-cgipath

    사용중인 웹서버의 cgi path가 /cgi-bin/ 이 아닌 경우 설정해준다. 디폴트는 /cgi-bin/qmailadmin 이다.

$ make
$ make install-strip

설치가 잘 되었는지 브라우저로 접속해본다. http://localhost/cgi-bin/qmailadmin

이제 원하는 도메인과 postmaster의 암호로 로그인한 후 여러가지 설정을 편안하게 할수 있다.


1장. 관리하기, 팁, FAQ, etc...

1.1. 도메인 추가후에는

qmail 과 vpopmail 이 돌아가고 있는 상태에서 vadddomain 으로 도메인을 추가했다면 qmail을 재시작 해야 한다.


1.2. root 와 mailer-daemon 유저를 추가해라

qmail, vpopmail 로 전환후 잊지 말고 만들어 줘야할 계정들이 있다. 나의 경우 하나의 일반 계정에 모두 알리아스로 만들어 주었다. 이전에 qmail 만을 쓰고 있던 시스템이라면 /var/qmail/alias/ 안의 파일들을 기억하라.

root
mailer-daemon

1.3. 알리아스와 포워드 계정

알리아스와 포워드 계정은 거의 비슷한 기능을 하는데 다른점은 알리아스는 이 서버에 존재하는 메일 계정에 다른 이름을 여러개 설정하는 것이고, 포워드 계정은 도착한 메일을 설정해 놓은 다른 도메인의 메일 계정(들)로 보내는 것이다.

다음 설정 과정을 보면 이해가 쉬울것이다.

qmailadmin 에서는 웹상에게 간단하게 설정 할수 있으나, 만약 qmailadmin 을 설치하지 않은 경우 다음과 같이 수동으로 파일을 만들어 주면 된다.

  • 알리아스

    silver 라는 팝 메일 계정이 존재하고, webmaster 라는 알리아스를 만드는 경우.

    해당 도메인 디렉토리(~vpopmail/domains/도메인/)에 다음과 같은 내용의 .qmail-webmaster 파일을 만든다.

    /home/vpopmail/domains/도메인/silver/Maildir/

    이제 webmaster 로 오는 메일은 silver 가 받을 것이다.

  • 포워드

    silver 로 오는 메일을 babo@kldp.org 라는 다른 도메인으로 포워딩 해줄때.

    해당 도메인 디렉토리(~vpopmail/domains/도메인/)에 다음과 같은 내용의 .qmail-silver 파일을 만든다.

    &babo@kldp.org

    이제 이 도메인의 silver 로 오는 메일들은 babo@kldp.org 로 보내질 것이다.


1.4. 각 도메인마다 메일 계정, 메일링 리스트 수 한계 정하기

이것은 웹 호스팅 업체에서 qmailadmin 으로 각 유저들에게 사용중인 도메인의 메일 설정을 직접 하게 해줄때 매우 유용하게 쓰일수 있을것이다.

각 도메인마다 메일,메일링 리스트의 설정 한계를 줄수 있는데, 이것은 ~vpopmail/domains/도메인/ 에 .qmailadmin-limits 파일을 만들어 주면 된다. 형식은 다음과 같다.

maxpopaccounts          X
maxaliases              X
maxforwards             X
maxmailinglists         X
maxautoresponders       X

X 는 해당 도메인이 사용할수 있는 최대한의 수를 넣어주면 되겠다.


1.5. bounce 되는 메일에 메세지 넣기

해당 도메인으로 수신되는 메세지가 바운스 되는 경우가 있는데 보통, 팝 유저의 쿼타 용량이 한도를 넘었거나, 유저가 존재하지 않을 경우이다.

다음과 같은 파일을 만들어 각 가상 도메인의 디렉토리에 넣어 놓으면 바운스 되는 메일들에 포함되어 되돌려 지며 당신은 센스있는 관리자가 된다 :-)

  • .over-quota.msg 에는 메일 유저의 쿼타 용량이 초과 되었으므로 메일 수신을 할수 없다는 메세지를.

  • .no-user.msg 에는 우리 도메인엔 그런 메일 계정 없지롱 하는 내용의 메세지를 넣어 두면 된다.

이 파일들이 없다면 vpopmail은 바운스되는 메일에 뻣뻣한 영문 메세지 만을 포함 시킨다.


1.6. 존재하지 않는 계정으로 오는 메일을 모두 받아 보려면

이것은 ~vpopmail/domains/virtual_domain/.qmail-default 파일을 수정하면 된다. 기본적으로 존재하지 않는 계정으로 오는 메일은 다음과 같이 바운스 되게 되어 있다.

| /vpopmail-디렉토리/bin/vdelivermail '' bounce-no-mailbox

만약 admin@test.com 으로 모두 받아보려면 다음과 같이 수정 한다.

| /vpopmail-디렉토리/bin/vdelivermail '' admin@test.com

1.7. 존재하지 않는 계정으로 오는 메일을 삭제 하려면

~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정한다.

| /vpopmail-디렉토리/bin/vdelivermail '' delete

1.8. 존재하지 않는 계정으로 오는 메일을 다른 도메인으로 보내려면

~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정한다.

| /vpopmail-디렉토리/bin/vdelivermail '' $EXT@newdomain.com 

이제 babo 라는 존재하지 않는 계정으로 온 메일은 babo@newdomain.com 으로 보내질 것이다.


1.9. 특정 메일계정으로 오는 메일 바운스하기

더 이상 사용되지 않는 메일 계정으로 오는 메일을 메세지와 함께 되돌려 보내고자 한다면 bouncesaying 을 사용한다.

예를 들어 eunjea 계정으로 오는 메일들을 메세지와 함께 되돌려 보내고자 한다면 .qmail-eunjea를 다음과 같이 만들어 준다:

|bouncesaying "이 메일 계정은 더이상 사용되지 않습니다."

1.10. 서버에서 메일 클라이언트를 사용하는 유저들을 위해

pop3로 메일을 자기 컴퓨터로 긁어가는 사용자들은 아무런 문제도 없을테지만, 서버에 직접 접속하여 메일 클라이언트를 사용하는 사용자들은 메일을 읽을수 없을테니 불만이 생길 것이다.

이런 사용자들을 위해 .qmail 파일을 조작해 사용자의 Mailbox 나 Maildir 로 가게 하는 방법도 있지만 나는 popclient 라는 조그마한 프로그램을 이용했다.

popclient 는 다음에서 받을수 있다.

http://www.csp.trentu.ca/~csess/popclient.tar.gz 또는 http://kltp.kldp.org/tmp/popclient.tar.gz

(이것은 칼 헤리스의 아주 오래된 코드인데 이것을 에릭 레이먼드가 fetchmail 로 발전 시켰지요.)

이것을 사용하면 로컬 pop3 서버에 접속하여 메일을 자신의 계정 mbox 에 옮기는 것이 가능하다.

mbox 형태의 메일함은 대부분의 메일 클라이언트에서 지원하므로 유저들에게 popclient 를 사용하여 localhost 에서 메일을 옮겨 사용하라고 만 해주면 되겠다.

사용법은 다음과 같다.

popclient -3 -u 유저 -p 암호 -o ~/mbox localhost

또는 fetchmail 과 procmail 의 조합을 사용해도 좋겠다.

이렇게 pop 서버를 사용하는 방법 외에 직접 사용자에게 배달되도록 하려면, ~vpopmail/domains/domain.org/.qmail-user 파일을 사용할 수도 있다. 예를 들어 silver@domain.org 로 도착하는 메일을 ~silver 에게 보내도록 한다면, vpopmail/domains/domain.org/.qmail-silver 파일을 다음과 같이 만든다.

silver@localhost

이제 silver@domain.org 로 도착하는 메일은 다시 silver@localhost로 보내지므로 ~silver/.qmail 을 참조하게 된다.

이때 주의할 것은 /var/qmail/control/locals 파일에는 localhost 만이 있어야 한다.


1.11. qmail 설치 디렉토리가 /var/qmail 이 아니라면?

만약 qmail이 /var/qmail 이외의 디렉토리에 설치되었다면 vpopmail 설정시 다음과 같은 옵션을 주어야 한다.

./configure --enable-qmaildir=qmail 설치 디렉토리

1.12. 도메인 마다 IP 주소가 다를 경우

IP 알리아싱을 사용하여 각 도메인마다 다른 IP를 사용하는 경우에는 vpopmail 설치시 --enable-ip-alias-domains=y 옵션을 줄수 있다.

이때 해당 도메인의 DNS 설정은 정확한 forward, reverse lookup 를 가져야 한다. 이와 같이 각 도메인마다 IP 주소가 다를 경우 POP 사용자들은 암호 인증시 "user@domain.com"의 형식이 아닌 "user" 형식을 사용할수 있다.


1.13. vpopmail 설정시 --enable-large-site=y (--enable-many-domains)은 무엇인가?

--enable-large-site=y 는 mysql을 사용할때만(--enable-mysql=y) 해당되는 것이며, 차이점은 --enable-large-site=y 의 경우 도메인마다 각기 다른 db 테이블을 생성하게 된다. 기본적으로는 한개의 테이블에서 모든 도메인과 이메일 계정을 관리한다.

vpopmail의 제작처인 inter7.com 의 설명에 의하면 이 옵션은 소수의 도메인에 매우 많은 수의 이메일 계정을 가지고 있을때 이 옵션을 권장한다. 하지만 반대로 매우 많은 수의 도메인에 소수의 이메일 계정이 있다면 이것은 좋지 않은 옵션이다.

vpopmail 5.0이상은 --enable-large-site 옵션이 --enable-many-domains 으로 변경되었다.


1.14. qmail을 rpm으로 설치했을 경우 주의점!

qmail의 rpm 패키지중 어떤 것들은 cron job으로 주기적으로 /var/qmail/users/assign 을 /etc/passwd를 참조하여 갱신하는 경우가 있다. 이것은 vpopmail의 설정을 모두 바꾸어 버리므로, 해당 cron job을 지우고, vpopmail과 관련된 모든 가상 도메인, 설정파일들을 재 설치 해야 한다.


1.15. CDB에서 MySQL 로의 전환

mysql을 사용하지 않고 vpopmail로 도메인, 유저들을 관리하고 있다가 vpopmail+mysql로의 전환을 하려 한다면, 메일 계정을 sql db로 변환 해주어야 한다.

변환 방법은 ./vconvert -c -s 로 해주면 된다. 이 명령은 시스템에 있는 모든 가상 도메인과 유저들을 하나의 테이블로 변환 해준다. 만약 각각의 테이블로 변환 하려 한다면, ./vconvert -c -s 도메인1 도메인2 ... 와 같이 해준다.


1.16. NFS file locking 문제점

vpopmail 의 디렉토리가 NFS 파일 시스템상에 위치하며, 그 NFS 서버가 user level NFS 서버를 사용하고 있다면, file locking 문제가 발생한다고 한다. 이것은 최신 커널에 포함되어 있는 kernel-level NFS, 즉 knfsd를 사용하면 해결된다고 한다.


1.17. oracle, sybase 를 사용한다면

vpopmail 은 mysql 이외에 oracle, sybase 같은 db와 사용이 가능하다.

오라클 사용자들은 voracle.h 을 수정하여 서비스, 유저, 암호등을 설정한후 proc voracle.pc 를 실행시켜 준다.

sybase 사용자들은 vsybase.h 에 서버, 유저, 암호, app 정보를 수정, 컴파일 한다.


1.18. vpopbull

vpopbull을 사용하면 해당 도메인의 모든 계정으로 메일을 한번에 보낼수 있다.

vpopbull -f 이메일_파일명 가상_도메인 ...

만약 특정 메일 주소로는 발송하지 않으려면 보내지 않을 메일 주소들을 파일로 만들어서

vpopbull -f 이메일_파일명 -e 안보낼_주소_파일명 가상_도메인 ...

1.19. 새로운 가상 도메인과 기존 가상 도메인의 알리아스

예를 들어 현재 vpopmail을 이용하여 old.com 메일 계정들을 관리하고 있다고 하자. 이때 새로운 도메인인 new.com 를 만들어, old.com의 계정들을 그대로 유지하면서 도메인째로 새로운 도메인으로 알리아싱 하고자 한다면 다음과 같이 해준다.

vaddaliasdomain new.com old.com

1.20. sqwebmail 을 이용한 웹 메일 서비스

지금 까지 설치한 시스템에 역시 http://www.inter7.com 에서 배포하는 sqwebmail 을 설치하면 바로 웹 메일 서비스를 해줄수 있다. 하지만 이 프로그램은 아직 한글화가 되어 있지 않으므로 한글 문제는 각자 해결해야 한다.


1.21. imap

imap 을 사용하려 한다면 courier-imap을 사용하면 된다. 최신 버전의 courier-imap은 vpopmail 이 설치되어 있는 시스템이라면 자동으로 해당 모듈이 첨가되므로, 별다른 설정없이 사용할수 있다.


1.22. qmail 서버 속도 향상 시키기

개인적으로 권장하지는 않지만...

만약 자신의 qmail smtp 서버가 느리다고 생각된다면 다음과 같이 할수 있다. 기본적으로 tcpserver는 사용되어지는 모든 ip 주소의 DNS 와 ident 를 체크하게 되어있다. tcpserver -H -R 를 사용하면 체크하지 않게 되므로 속도 향상을 볼수 있다.


1.23. Debian 에서 vaddomain이 작동하지 않을때

Debian 배포본의 qmail 바이너리들이 /usr/sbin 에 들어 있으므로, 간단하게 심볼릭 링크를 하나 만들어 준다. ln -s /usr/sbin /var/qmail/bin


1.24. 가상 도메인, 가상 계정의 클라이언트 설정

주 도메인(--enable-default-domain) 으로 지정하지 않은 나머지 가상 도메인의 POP 계정 클라이언트들이 POP 계정에 접속할 때에는 계정 이름과 가상 도메인을 모두 사용해야 한다. 즉, user@domain.org 과 같은 형식이 되어야 한다.


1장. 맺음말

qmail 은 정말 뛰어난 성능을 가지며, 안전하며, 매우 유연한 MTA 이라는 것을 여러분은 알게될것이다.


1.1. 참고

qmail control 파일에 관한 문서: http://kldp.org/~eunjea/qmail_control.php

qmail 릴레이에 관한 문서: http://kldp.org/~eunjea/qmail_reply.php


1.2. 저작권

Copyright (C) 2000, 2001, 2002 임은재

이 문서는 GNU Free Documentation License 버전 1.1 혹은 자유 소프트웨어 재단에서 발행한 이후 판의 규정에 따르며 저작권에 대한 본 사항이 명시되는 한 어떠한 정보 매체에 의한 본문의 전재나 발췌도 무상으로 허용됩니다.

본 저자는 문서의 내용이 야기할 수 있는 어떠한 결과에 대해서도 책임을 지지 않습니다.


1.3. 기타

이 문서가 도움이 되었나요? 그렇다면 빈 메세지라도 보내주세요. :-)

mail -s "Y.Q.D.I.G" eunjea@kldp.org < /dev/null
이 문서에 수정, 보충 할 것이 있다면 eunjea@kldp.org로 보내주세요. 메일 질문에는 답하지 않습니다.

러시아, 모스크바에서 임은재.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-11-29 16:57:16
Processing time 0.0344 sec