티스토리 뷰

큐메일은 임은재님과 이운억님의 큐메일 설치법을 마니 참조했습니다.
그분들께 감사드립니다.
큐메일이 너무 어려운거 같아 좀 더 쉽게 이해할 수 없을까해서
이렇게 문서를 만들어 보았습니다. 허접해도 이해해주셔요. ^^
그리고 첨부파일은 제홈에서 설치 이야기에서 받아 가십시요.
질문은 제홈의 질답 이야기에서만 받습니다.
비츠로 홈 http://vitro.pe.kr

qmail-1.03설치⑤ (courier-imap연동)

내가 생각하기에나 보통 qmail을 사용하는 사람들은 courier-imap을 마니
사용해서 imap과 pop3를 지원한다.
특별한 이유가 없다면 imap2002보다는 courier-imap을 사용하라.
qmail에 아주 적합하게 지원할 수 있도록 나온 imap이다
참고로 imap2002로 qmail을 지원하는 방법은 나는 모른다. 너무나
많은 패치와 수정 사항, 설치시 필요한 요건들이 너무 많아서 아예
첨부터 연동하지 않았다.

courier-imap을 사용시 문제시 되는 APM연동시 php4와의 연동시에
에러가 나지만 그것은 imap2002를 데몬을 띄우지 않고 설치만 하면
c-client를 사용할수 있으므로 에러가 해결된다.
아파치와의 연동은 qmail을 설치한뒤에 뒤에서 아파치 설치 문서를
작성하면서 할 생각이다.

그리고 courier-imap을 설치시 checkpassword와 연동할것인가,
vpopmail과 연동 할것인가에 따로 조금은 다르나 여기서는 두가지 경우일때
다 다루겠다.

우선은 courier-imap-1.6.1을 홈페이지에서 다운 받는다.

한가지 주의할것은 courier-imap 설치시에 다른 소스 설치시와는 다르게.
일반 유저로 컴파일하고 설치시에 루트로 설치를 해야 한다는 것이다.
물론 컴파일 옵션에 루트 유저로 컴파일 설치하는 것을 체크하지 않게
할 수도 있지만 보안상의 이유로 일반 유저로 컴파일하라고 하는 듯하다.
그러니 일반 유저로 컴파일후에 설치하도록 한다.

############### 먼저 루트로 작업 시작 ############

설치하기 전에 보통 아래의 두개의 패키지를 설치해라.

tcl-8.3.3-67.i386.rpm
expect-5.32.2-67.i386.rpm

위의 패키지를 imap설치하면서 필요로 한다.
정확한 이유는 모르나 개발자 패키지인것으로보면 아마 컴파일시 도구 정도로 생각된다.

rpm -Uvh --nodeps tcl-8.3.3-67.i386.rpm expect-5.32.2-67.i386.rpm
그냥 의존성 걸려도 노뎁스로 설치한다. 의존성 걸리는 것들 보면
x-win과 관련된 패키지 뿐이니 걱정마라.

----------- vpopmail일 경우 해야할 작업 ------------------

만약 qmail과 vpopmail 연동이 되어있다면
chmod 777 -R /home/vpopmail/lib

위의 라이브러리 폴더를 퍼미션 변경한다.
왜인지 몰라도 imap에서 컴파일시 위 디렉토리를 퍼미션때문에 읽지를 못한다.
나중에 컴파일 끝나고 원래 퍼미션으로 되돌린다.

------------------------------------------------------

checkpassword를 사용할시에는 위 과정이 필요없다. 그냥 넘어간다.

소스 파일의 퍼미션을 변경한다. (일반 유저로 컴파일하기 위해서.)
chmod 777 courier-imap-1.6.1.tar.bz2

이제 자신의 계정에 등록된 일반 유저로 작업한다.
나의 경우는 vitro로 라는 일반 유저로 작업을 한다고 가정한다.

############ 루트로 작업 끝 #################


$$$$$$$$$$$$ 일반 유저로 작업 시작 $$$$$$$$$$$$$

소스를 압축 해제
tar xjfp courier-imap-1.6.1.tar.bz2 -C /var/tmp

cd /var/tmp/courier-imap-1.6.1
이제 부터 실제 컴파일 시작하는데.. vpopmail과 checkpassword와 연동할 경우가
다르다.
각 색션에 맞게 보면된다. checkpassword만으로 사용할 경우는 그냥
vpopmail 부분을 건너 뛰어라. 아니면 헛갈리기만 할뿐이다.

vpopmail 연동할 경우 mysql을 연동할지 말지에 따라서 옵션이 또 다르므로
vpopmail일 경우 mysql을 연동할 옵션인지 주의하기 바란다.


configure과정 (컨피그 옵션 설정시 연동할 것에 따라 설정 법이 다르다)

---------------- vpopmail과 mysql을 연동할 경우 configure 시작 -----------------

CFLAGS="-DHAVE_OPEN_SMTP_RELAY"; export CFLAGS
env LIBS="-L/usr/lib/mysql -lmysqlclient -lz" \
./configure \
--prefix=/usr \
--datadir=/usr/share/courier-imap \
--sysconfdir=/etc/courier-imap \
--libexecdir=/usr/libexec/courier-imap \
--localstatedir=/var \
--mandir=/usr/share/man \
--without-ipv6 \
--enable-unicode \
--with-authvchkpw \
--without-authdaemon \
--without-authmysql \
--without-authldap \
--without-authdaemon \
--without-authpgsql

위의 옵션중에 CFLAGS라는 첫부분의 옵션은 유동 아피의 릴레이 인증(smtp-auth)지원을
하기 위한 옵션이다.
두번째 라인의 env LIBS라는 라인은 mysql의 라이브러리를 찾기위한것이고
자신의 mysql 경로와 맞는지 확인하기 바란다.
----------------- vpopmail과 mysql을 연동할 경우 configure 끝 --------------


----------------- vpopmail만을 사용할 경우 configure 시작 --------------

CFLAGS="-DHAVE_OPEN_SMTP_RELAY"; export CFLAGS
./configure \
--prefix=/usr \
--datadir=/usr/share/courier-imap \
--sysconfdir=/etc/courier-imap \
--libexecdir=/usr/libexec/courier-imap \
--localstatedir=/var \
--mandir=/usr/share/man \
--without-ipv6 \
--enable-unicode \
--with-authvchkpw \
--without-authdaemon \
--without-authmysql \
--without-authldap \
--without-authdaemon \
--without-authpgsql

----------------- vpopmail만을 사용할 경우 configure 끝 --------------

------------- vpopmail과 checkpassword 사용할 경우 configure 시작 ---------

./configure \
--prefix=/usr \
--datadir=/usr/share/courier-imap \
--sysconfdir=/etc/courier-imap \
--libexecdir=/usr/libexec/courier-imap \
--localstatedir=/var \
--mandir=/usr/share/man \
--without-ipv6 \
--with-authpwd \
--with-authshadow \
--with-authpam \
--without-authmysql \
--without-authldap \
--without-authpgsql

checkpassword를 사용할 경우에는 첫라인의 smtp-auth 기능 지원을 위한 CFLAGS 옵션이
필요없다. 단순한 시스템 패스워드를 사용해서 인증할것이므로 checkpassword와 qmail에
이미 smtp-auth 기능이 구현되어 있으므로.

아까도 말한 컴파일시에 루트 체크를 하지 않는 옵션을 아래와 같은나 참고만
하고 사용하지 마라.
#--disable-root-check #Allow build as root (make check will fail)

------------- vpopmail과 checkpassword 사용할 경우 configure 끝 ---------


우선 위와 같이 세가지 경우에 따로 컨피그 옵션은 다르나 그 다음부터는
설치 법이 별 차이가 없다.
주의 할점은 위의 세가지 컴피그중에서 하나만 하라. 그냥 따라하기식으로
세번의 컨피그를 다 하는 그런 무식한 일은 안생기길 바란다.. ^^;;

컴파일
make

컴파일 이상없이 되었는지 체크
make check

$$$$$$$$$$$$ 일반 유저로 작업 끝 $$$$$$$$$$$$$

############ 루트로 작업 두번째 시작 #################
find /* > /root/courier-imap1

실제 설치 시작
make install-strip

설정 파일 설치
make install-configure

find /* > /root/courier-imap2

diff /root/courier-imap1 /root/courier-imap2 > courier-imap-install

지겹게 이야기 했지만 find로 기존의 시스템 파일목록을
만든후 소스 설치후에 다시 find로 소스 설치후의
파일목록을 만들어 두개를 비교하면 설치된
파일 리스트가 나온다. 나중에 언인스톨할 시를
위해 만들어 둔다.


소스 디렉토리에 시작스크립트가 있다.
그것을 복사해서 시작 스크립트로 쓴다.
cd /var/tmp/courier-imap-1.6.1
cp -f courier-imap.sysvinit /etc/rc.d/init.d/courier-imap
chown 0.0 /etc/rc.d/init.d/courier-imap
chmod 700 /etc/rc.d/init.d/courier-imap
chkconfig --add courier-imap
chkconfig --level 345 courier-imap on

------------- vpopmail과 사용할 경우 마무리(mysql연동 포함) 시작 ---------

아까 컴파일시 변경한 vpopmail의 라이브러리 폴더의 퍼미션을 원래대로 되돌린다.
chmod 700 /home/vpopmail/lib
chmod 600 /home/vpopmail/lib/libvpopmail.a
chown -R 110.110 /home/vpopmail/lib <-- 나는 vpop 유저의 uid를 110로 사용했으므로.

첨부파일의 qmail-vpop-imap을 /etc/rc.d/init.d/qmail 복사한다.
기존의 qmail 시작 스크립트는 덮어씌워버린다.

------------- vpopmail과 사용할 경우 마무리(mysql연동 포함) 끝 ---------


-------- checkpassword 사용시 위 부분을 그냥 건너뛰고 시작 스크립트만 다르다. -----

첨부파일의 qmail-courier-imap을 /etc/rc.d/init.d/qmail 복사한다.
기존의 qmail 시작 스크립트는 덮어씌워버린다.
이 시작 스크립트는 qmail-pop 부분만 주석으로 막아서 사용하지 않게 하여서
courier-imap이 /etc/passwd 를 사용하여 인증한다.
-----------------------------------------------------------------------------

chown 0.0 /etc/rc.d/init.d/qmail
chmod 700 /etc/rc.d/init.d/qmail
/etc/rc.d/init.d/qmail restart

이제 courier-imap 설정 파일 셋팅을 하는데
나는 vpop의 인증을 그대로 사용할것이나
인증 모듈만 이용할것이며 pop3 데몬은 이제부터 courier-imap의 데몬을
사용하여 vpopmail의 인증모듈인 vchkpw를 이용하여 인증한다.
courier-imap에 기본으로 포함된 pop3데몬을 이용하면 여러가지 설정을
할수 있고 나중에 ssl지원도 간단하게 되며. 관리상 조금은 더 편리하게 된다.
어떤이는 courier-imap의 pop3를 데몬을 죽이고 vpopmail과 qmail-pop을
이용하는 사람이 많을 줄 안다.
자신이 편리한대로 쓰면 될것이나 나는 courier-imap에 포함된것을 사용한다.
checkpassword를 사용할경우도 마찬가지다.

아래는 imap과 pop3을 사용하기 위한 두 설정파일을 만드는 것이다.

echo "ADDRESS="자신의 아피주소 > /etc/courier-imap/imapd
echo 'PORT=143
MAXDAEMONS=40
MAXPERIP=40
PIDFILE=/var/run/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
AUTHMODULES="authvchkpw authpam"
DEBUG_LOGIN=1
IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_IDLE_TIMEOUT=60
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_ULIMITD=65536
IMAP_USELOCKS=0
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:3
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/bin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=YES' >> /etc/courier-imap/imapd
echo 'PIDFILE=/var/run/pop3d.pid
MAXDAEMONS=40
MAXPERIP=40
AUTHMODULES="authvchkpw authpam"
DEBUG_LOGIN=1
POP3AUTH=""
POP3AUTH_TLS=""
PORT=110
ADDRESS=0 # 0 = all adderess - edit your ip
TCPDOPTS="-nodnslookup -noidentlookup"
POP3DSTART=YES' > /etc/courier-imap/pop3d

vpopmail을

---------- vpopmail과 사용할 경우 (mysql연동 포함) 설정 파일 수정 시작 ---------

/usr/libexec/courier-imap/imapd.rc 파일의 46번째 라인에
-user=vpopmail -group=vchkpw \ <-- 요 부분을 추가해야 한다.

/usr/libexec/courier-imap/pop3d.rc 파일의 39번째 라인에
-user=vpopmail -group=vchkpw \ <--- 요 부분을 추가

위부분을 추가하는 것은 vpop의 인증을 이용할 시 vpop유저의 권한이 필요하기 때문이다.
이제 courier-imap을 사용시에 vpop user의 권한으로 인증 모듈을 사용할수 있게
되었다.

------------- vpopmail과 사용할 경우 마무리(mysql연동 포함) 끝 ---------

--------------------------------------------------------------------------
--------- checkpassword를 사용할 경우는 그냥 수정 않고 사용하면 된다. -------
--------------------------------------------------------------------------

chmod 755 /usr/libexec/courier-imap/imapd.rc
chmod 755 /usr/libexec/courier-imap/pop3d.rc
/etc/rc.d/init.d/courier-imap start

이제 모든 설치가 끝났다.

그러나 나중에 아파치와 연동시 php와 imap을 연동할 시에
분명히 에러가 발생할것이다. c-client라는 라이브러리를 못 찾는다는...
나중에 아파치와 연동을 생각해서.. 앞의 imap2002소스 설치 법을 보고

imap2002을 설치하되. 데몬을 안 띄운다.
즉 /etc/xinet.d/imap과 pop3를 열어서 desable=yes로 만들어 줘라.

이렇게 하면 courier-imap이 c-client를 사용해서 php와 연동이 가능하게 된다.

아파치와 연동시 꼭 imap2002를 설치하는 것을 잊지마라.



출처 : http://kltp.kldp.org/stories.php?story=03/02/19/9559783&topic=2
댓글
안내
궁금한 점을 댓글로 남겨주시면 답변해 드립니다.