Solaris

Cyrys IMAP 사용법

알 수 없는 사용자 2008. 3. 8.
728x90

Cyrus IMAP HOWTO

Aurora Skarra-Gallagher (Community Vision)

v1.2, 5 September 2000옮긴이: 권태준 (linusben@kldp.org)옮긴날: 2000년 9월 7일
Cyrus Imap 과 Cyrus Sasl 에 대한 설치, 설정, 실행 방법 소개

1. 이 문서에 대하여

1.1 저작권

(c) 2000 Aurora Skarra-Gallagher

이 부분은 HOWTO-HOWTO 에서 복사한 것입니다:

이 메뉴얼은 다음의 제약 아래 전체, 혹은 일부를 무료로 재사용할 수 있습니다:

  • 위에 명시한 저작권의 내용과 허가 내용은 이 문서의 전체 혹은 일부에 대해서 모두 해당됩니다.
  • 어떠한 번역이나 파생된 작업은 배포되기 전에 저자의 승인을 받아야 합니다.
  • 만약 이 문서의 일부를 배포하고 싶다면, 이 문서의 전체 내용을 얻을 수 있는 방법에 대한 소개가 반드시 들어가야 합니다.
  • 적당한 인용 형식을 포함하고 있다면 이런 허락 없이도 작은 부분을 인용할 수 있습니다. 하지만 이런 예외는 학문적 목적의 사용으로 제한합니다: 그 범위는 저자에게 직접 문의하시기 바랍니다. 이러한 제한은 다른 사람들로부터 보호를 위한 것이지 여러분과 같은 배우고자 하는 사람들을 막고자 하는 것이 아닙니다. 이 문서가 작성된 SGML 소스를 포함한 문서 내의 모든 소스 코드는 GNU General Public License 를 따릅니다. 자세한 내용은 GNU 아카이브의 익명 FTP 에서 구하실 수 있습니다.

1.2 피드백

어떤 의견(특히 오류가 있다면 수정내용)이 있다면 다음 주소로 이메일을 보내주세요 asg@CommunityVision.com

1.3 변경 사항

  • v1.2: SASL 설정 오류 수정, 새로운 postfix 설정 추가, 데이터베이스 정리 추가(Jernej 에게 감사를 표합니다)
  • v1.1: sendmail.mc 설정 오류 수정, IMAP 에 대한 기본 정보 추가.

1.4 문서 내의 표기

  • 이탤릭 디렉토리
  • 타이프체 명령어

2. IMAP에 대한 소개

2.1 IMAP 이 뭔가요?

ComputerUser.com High-Tech Dictionary에 IMAP 은 다음과 같이 정의되어 있습니다:

인터넷 메시지 억세스 프로토콜(Internet Message Access Protocol). 사용자에게 리모트 서버에 있는 email 을 제공해 주는 프로토콜. IMAP을 통하여 사용자는 메일박스 만들기, 지우기, 이름 바꾸기 등의 기능을 수행할 수 있으며, 새로운 메시지 받기, 받음 메시지 지우기, 메일 검색 기능 등을 이용할 수 있음. 메일을 보내기 위해서는 독립적인 프로토콜이 필요함. 다른 이름으로 인터넷 메일 억세스 프로토콜(Internet Mail Access Protocol)이라고도 함.

2.2 IMAP vs. POP

IMAP 은 서버 측에 매일이 보관되기 때문에 서로 다른 여러 곳에서 메일을 읽을 수 있습니다. POP는 새로 도착한 읽지 않은 편지만이 서버측에 저장되고 읽은 메일이나 저장한 메일 정보는 메일 클라이언트 측에 저장이 됩니다. POP 에서 읽은 메일을 서버에서 지우지 않도록 설정을 할 수도 있지만, 그럴 경우 똑같은 메일을 여러번 확인하게 되고 저장 공간을 낭비하게 됩니다. 하지만 IMAP 은 설정하기가 훨씬 복잡합니다. 만약 당신이 하나의 이메일 계정만을 가지고 있다면 POP 가 차라리 좋은 해결책이 될 것입니다. 만약 하나 이상의 메일 계정에 대해서 여러 군데에서 접근을 하고 싶다면 IMAP 이 보다 효율적으로 사용될 것입니다.

2.3 Cyrus IMAP vs. Washington IMAP

Cyrus IMAP은 독립적인 메일박스 데이터베이스를 가지고 있기 때문에 독립적으로 작동할 수 있으며 성능도 뛰어납니다. Washington IMAP 은 UNIX 표준 메일박스 형식을 사용하기 때문에 보다 적은 사용자 집단에 적합합니다. Washington IMAP 은 Cyrus IMAP 보다 많은 UNIX 시스템과 non-UNIX 시스템에 적용 가능하다는 장점도 있습니다. 가장 큰 차이점은 Cyrus IMAP 의 경우 새로운 메일 계정을 추가하면서 리눅스 머신에 새로운 사용자를 추가할 수 없지만 Washington IMAP 은 그러한 기능을 제공하고 있습니다.

3. 파일 구하기

3.1 Cyrus Imap 홈페이지

현재 Cyrus Imap 의 홈페이지는 다음과 같습니다:

http://asg.web.cmu.edu/cyrus/imapd

3.2 파일 받기

IMAP 과 SASL 이 모두 필요합니다. 최신 프로그램을 다음에서 구하실 수 있을 겁니다:

ftp://ftp.andrew.cmu.edu/pub/cyrus-mail

다운받은 cyrus-imapd-X.X.X.tar.gz 과 cyrus-sasl-X.X.X.tar.gz 을 임시 디렉토리로 옮깁니다 (여기서 X.X.X 는 최신 버전을 의미합니다).

이 문서에서는 /temp 디렉토리에 파일들의 압축을 풀었다고 가정하겠습니다.

4. Cyrus SASL

4.1 압축 풀기

다음과 같은 방법으로 파일의 압축을 풉니다.

  1. cd /temp
  2. tar -zxvf cyrus-sasl-X.X.X.tar.gz
  3. cd cyrus-sasl-X.X.X

4.2 실행 파일 만들기

대부분의 경우 다음과 같은 방법으로 프로그램을 쉽게 인스톨할 수 있을 것입니다. 만약 설정 내용을 바꾸고 싶다면 ./configure --help | more 의 내용을 참조하시기 바랍니다.

  1. ./configure
  2. make
  3. make install

만약 기본적인 sasldb 를 이용한 사용자 인증을 사용하지 않으려면 PAM, kerberos_v4, passwd, shadow 가운데 사용할 방법을 지정해주어야 합니다. 만약 PAM 을 사용하여 인증을 처리하고자 한다면 위의 ./configure 를 다음과 같이 바꾸어 실행합니다:

./configure --with-pwcheck_method=PAM

5. Cyrus IMAP 설치

5.1 압축 풀기

다음과 같은 과정으로 cyrus IMAP 을 /temp 에다 풉니다.

  1. cd /temp
  2. tar -zxvf tar/cyrus-imapd-1.6.24.tar.gz
  3. cd cyrus-imapd-1.6.24

5.2 com_err.h 에 대해서

제가 Cyrus IMAP 을 설치하려고 할 때 com_err.h 에서 에러가 발생했습니다. 제가 설치할 때 com_err.h 파일이 /usr/include/et 밑에 있었습니다. 그렇다면 이 파일을 /usr/include으로 옮기십시오. 다음 명령으로 이 파일이 제대로 위치를 찾았는지 확인할 수 있습니다:

locate com_err.h

이 명령어는 파일이 어디에 위치하고 있는지를 보여줄 것입니다. 만약 /usr/include 밑에 있다면 다음 내용을 무시하셔도 됩니다. 만약 다른 디렉토리에 존재한다면 그냥 파일을 /usr/include로 복사하시기 바랍니다. 만약 이 파일이 없다면 다음 주소에서 새로 받아서 설치하시기 바랍니다: http://www.ludd.luth.se/~jnilsson/cvsweb/cvsweb.cgi/src/contrib/com_err.

5.3 설정하기

./configure --with-auth=unix

5.4 기본 사용자 추가

Cyrus 는 파일들을 소유할 사용자를 필요로 합니다. 기본 사용자는 cyrus가 됩니다. 다음 명령을 통하여 "mail" 그룹에 속하는 사용자 cyrus 를 시스템에 추가할 수 있습니다.

useradd -g mail cyrus

이 사용자 아이디에 대해 비밀번호를 넣고자 한다면 다음과 같이 하면 됩니다.

passwd cyrus

5.5 실행파일 만들기

  1. make depend
  2. make all CFLAGS=-O
  3. make install

이제 끝났습니다. 이제 Cyrus IMAP 을 설정하기만 하면 됩니다.

6. Cyrus IMAP 설정

6.1 conf 파일 편집하기

  1. /etc/syslog.conf 를 편집하여 아래와 같은 내용을 끝에 추가합니다:
            local6.debug    /var/adm/imapd.log
            auth.debug      /var/adm/auth.log
    
  2. 새로 만들어진 /etc/imapd.conf 를 열고 다음 내용을 추가합니다:
            configdirectory: /var/imap
            partition-default: /var/spool/imap
            admins: cyrus root
            srvtab: /var/imap/srvtab
            allowanonymouslogin: no
            sasl_passwd_check: shadow
    

6.2 필요한 디렉토리들을 생성하기

이들 작업은 imap 에서 사용할 디렉토리들을 설정하기 위한 것입니다.

  1. mkdir /var/adm
  2. touch /var/adm/imapd.log /var/adm/auth.log
  3. mkdir /var/imap /var/spool/imap /var/imap/srvtab
  4. chown cyrus /var/imap /var/spool/imap /var/imap/srvtab
  5. chgrp mail /var/imap /var/spool/imap /var/imap/srvtab
  6. chmod 750 /var/imap /var/spool/imap /var/imap/srvtab
  7. su cyrus

이제 cyrus 라는 유저 상태가 되었을 것입니다. 이는 파일의 소유권 문제 때문에 필요한 과정입니다. 계속 작업을 진행합니다:

  1. tools/mkimap
  2. cd /var/imap
  3. chattr +S . user quota user/* quota/*
  4. chattr +S /var/spool/imap
  5. exit

이제 다시 root 로 돌아왔습니다. 마지막으로 다음 명령을 실행합니다.

chattr +S /var/spool/mqueue

6.3 추가적인 설정 파일 편집

  1. /etc/services에서 다음 내용을 확인합니다. 내용이 없다면 추가하도록 합니다:
            pop3    110/tcp
            imap    143/tcp
            imsp    406/tcp
            kpop    1109/tcp
            sieve   2000/tcp
    
  2. /etc/inetd.conf 에서 모든 imap 과 pop3 관련 내용을 주석 처리합니다. 그리고 다음 내용을 추가하도록 합니다:
            imap    stream  tcp     nowait  cyrus   /usr/cyrus/bin/imapd    imapd
            pop3    stream  tcp     nowait  cyrus   /usr/cyrus/bin/imapd    pop3d
    
  3. /etc/sendmail.mc 을 편집합니다. 아래 내용을 추가하면서 추가적인 공백을 넣지 않도록 주의하셔야 합니다(탭이 제대로 들어가지 않을 수 있으니 이 문서의 내용을 복사하여 붙이지 마세요):
      MAILER(local)
      MAILER(cyrus)
      define(`confLOCAL_MAILER',`cyrus') 
      LOCAL_RULE_0
      R$=N                   $: $#local $: $1
      R$=N < @ $=w . >       $: $#local $: $1
      Rbb + $+ < @ $=w . >   $#cyrusbb $: $1
    
    데이터를 구분하기 위해서는 탭을 사용합니다(예를 들어 R$=N 와 $: $#local $: $1 사이에는 세 개의 탭이 들어갑니다). 그리고는 다음과 같이 실행하세요: m4 sendmail.mc > sendmail.cf
  4. /etc/group 을 열고 사용자 daemon 을 mail 그룹에 추가합니다.

6.4 만약 sendmail 대신에 postfix 를 사용한다면?

Postfix는 sendmail 과 같은 메일 전송 프로그램입니다. 대부분의 리눅스 머신에는 sendmail이 기본으로 설치되어 있습니다. 만약 여러분이 postfix 를 사용하신다면 위의 설정 단계 가운데 세번째 단계를 무시하고 다음 내용을 /etc/postfix/master.cf에 추가하시기 바랍니다.

cyrus   unix    -       n       n       -       -       pipe    flags=R user=cyrus      
argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user}

또한 다음 내용을 /etc/postfix/main.cf에도 추가합니다.

local_transport = cyrus

7. Cyrus IMAP 구현

7.1 cyrus 관리자 추가

다음 명령을 수행하여 cyrus 를 사용하기 위한 사용자를 세팅합니다

/usr/local/sbin/saslpasswd cyrus

7.2 Cyrus IMAP 테스트하기

  1. killall -HUP inetd
  2. su cyrus
  3. imtest -m login -p imap localhost

이제 비밀번호를 입력합니다. 만약 다음과 같은 화면이 보인다면 설정이 성공적으로 이루어진 것입니다:

        (L01 OK User logged in means you're in)

다음 과정을 통하여 로그아웃합니다

        . logout

7.3 일반 사용자 설정

cyrus 의 권한으로 다음 명령을 실행합니다. 이 과정은 각각의 사용자들에 대해서 메일박스(es)를 설정하게 됩니다. (username) 부분에는 설정하고자 하는 사용자의 아이디를 입력합니다.

  1. cyradm localhost
  2. cm user.(username) (모든 사용자에 대해서 설정합니다)
  3. quit
  4. exit (루트로 돌아옵니다)

이제 루트 권한으로 각각의 사용자들의 비밀번호를 입력합니다:

saslpasswd (username)

7.4 배달 데이터베이스 정리

만약 배달 데이터베이스를 정기적으로 정리해주지 않는다면, 파일 시스템이 넘치게 될 지도 모릅니다. 따라서 하루에 한 번 정도 cron 을 통해 이 작업을 해주는 것이 좋습니다. 우선 /etc/cron.daily 디렉토리에 cyrus-imapd 라는 이름의 파일을 만들고 다음과 같이 두 줄을 추가해줍니다:

#!/bin/bash
su cyrus -s /bin/bash -c '/usr/cyrus/bin/deliver -E 3'

다음과 같이 하여 이 스크립트를 실행 가능하게 만듭니다: chmod 755 cyrus-imapd

또한 데이터베이스 파일들을 저장하기 위해서는 deliverdb 디렉토리를 만듭니다:

mkdir /var/imap/deliverdb

7.5 마무리

시스템을 재부팅하고 새 설정이 제대로 실행되는지 확인합니다.

8. 문제 해결

만약 사용시 어떤 문제가 생긴다면 다음과 같은 방법으로 에러를 확인할 수 있습니다:

  1. tail /var/log/messages
  2. tail /var/adm/imapd.log
  3. killall sendmail && sendmail -bd -X /root/error.log (그런 뒤 /root/error.log을 살펴보십시오)
728x90

댓글