3 21 2009
Postfix, Cyrus IMAP에서 가상 도메인 사용
지금까지 Postfix와 Cyrus IMAP을 사용하여 메일 서버를 단일 도메인으로만 운영했었다.
그러다가 도메인이 추가가 되어 설정을 변경해야 했다.
환경은 다음과 같다.
Solaris 10 06/6
Postfix 2.4.6
Cyrus IMAP 2.3.9
Cyrus SASL 2.1.22
MySQL 5.0.51
가상 도메인 설정
MySQL 테이블 변경
도메인 테이블(domain) 을 생성한다.
| 컬럼 명 | 설명 | 예 |
|---|---|---|
| domain | 도메인명 | newdomain.com |
| use_yn | 사용여부 | Y |
새로운 가상 도메인을 추가한다. 그리고 기존에 있던 단일 도메인은 추가하지 않는다.
계정 테이블(user) 에 mailbox 컬럼을 추가한다.
기존의 도메인에 속한 계정은 이 값이 필요 없다.
| 컬럼 명 | 설명 | 예 |
|---|---|---|
| loginname | 계정 명 | kmkim |
| password | 암호 | 1234 |
| uid | 계정 ID | 1000 |
| gid | 그룹 ID | 1000 |
| name | 성명 | 김경민 |
| mailbox | 메일박스위치 | newdomain.com/user/kmkim |
| use_yn | 사용여부 | Y |
새로운 메일 계정 정보를 추가한다.
별명 테이블(alias)의 수신자(dst)에 모두 기존 도메인을 지정한다.
| 컬럼 명 | 설명 | 예 |
|---|---|---|
| alias | 별명 | barney |
| dst | 보낼 메일 주소 | kmkim@barney.pe.kr |
| use_yn | 사용여부 | Y |
Postfix에서 가상 도메인의 질의를 위해 파일을 만든다.
root# vi /sw/mail/etc/postfix/mysql-virtual-domain.cf hosts=localhost user=postfix password=1234 dbname=postfix query=SELECT domain FROM domain WHERE domains='%s' AND use_yn='Y'
Postfix에서 가상 도메인의 메일 박스 질의를 위한 파일을 만든다.
hosts=localhost user=postfix password=1234 dbname=postfix query=SELECT mailbox FROM user WHERE loginname='%s' AND use_yn='Y'
별명을 위한 질의는 기존 도메인에서 사용하던 것을 그대로 사용하면 된다.
hosts=localhost user=postfix password=1234 dbname=postfix query=SELECT dst FROM user WHERE alias='%s' AND use_yn='Y'
Postfix의 설정파일에 아래와 같이 추가한다.
root# vi /sw/mail/etc/postfix/main.cf virtual_transport = lmtp:unix:/sw/mail/var/imap/socket/lmtp virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 virtual_mailbox_domains = mysql:/sw/mail/etc/postfix/mysql-virtual-domain.cf virtual_mailbox_base = /sw/mail/var/spool/imap/domain virtual_mailbox_maps = mysql:/sw/mail/etc/postfix/mysql-virtual-mailbox.cf virtual_alias_maps = mysql:/sw/mail/etc/postfix/mysql-alias.cf
Cyrus IMAP 설정파일에 아래와 같이 추가한다.
root# vi /sw/mail/etc/cyrus/imapd.conf virtdomains: yes defaultdomain: dtribe.co.kr
이제 Cyrus IMAP을 사용하여 메일 박스를 생성한다.
root# telnet localhost imap . login "admin" "1234" . create user.kmkim@newdomain.com . logout root# ls /sw/mail/var/spool/imap/domain/user/kmkim cyrus.cache cyrus.header cyrus.index
Cyrus SAS을 통해서 인증을 받도록 설정했다면 데몬 실행할 때 -r 옵션을 사용하여 로그인 명과 realm을 합치도록 해야한다.
그렇지 않으면 kmkim@newdomain.com 으로 메일 계정을 설정해도 kmkim 로 인증을 시도하다가 실패한다.
이제 외부의 웹 메일에서 새로 추가된 도메인용 메일 주소 및 메일 별명 주소로 메일을 발송하여 수신 여부를 테스트한다.