지금까지 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 로 인증을 시도하다가 실패한다.
이제 외부의 웹 메일에서 새로 추가된 도메인용 메일 주소 및 메일 별명 주소로 메일을 발송하여 수신 여부를 테스트한다.
2. 참고