Postfix(SMTP)와 Dovecot(IMAP,POP3)그리고 Roundcube(Webmail Interface)를 이용하여 웹메일 시스템을 구축해 봅시다.
사전 준비
- OS – CentOS 7
- 메일로 사용할 도메인의 DNS서버에 MX레코드 설정
- apache, php, mysql 설치
postfix 설치
yum 패키지 관리자로 간단하게 설치 할 수 있습니다.
yum install postfix
postfix 설정파일 수정
/etc/postfix/main.cf 파일에서 다음을 찾아 수정 합니다.
myhostname = mail.mydomain.com # 서버의 hostname mydomain = mydomain.com # 메일 주소로 사용할 도메인 myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 127.0.0.0/8, [::1]/128, 10.10.20.27/32 # 서버에 부여된 IP에 맞게 적절하게 설정함. home_mailbox = Maildir/
환경에 따라서 mynetworks에 [::1]/128(ipv6용 loopback 주소) 없으면 maillog에 아래와 같은 error로그가 출력될 수 있습니다.
postfix/smtpd[10402]: NOQUEUE: reject: RCPT from localhost[::1]: 454 4.7.1 account@mydomain.com: Relay access denied; from= account@mydomain.com to=account@mydomain.com proto=ESMTP helo=<mail.mydomain.com>
postfix 데몬 구동
systemctl enable postfix.service systemctl start postfix.service
postfix 테스트
telnet localhost 25
Trying ::1... Connected to localhost. Escape character is '^]'. 220 mail.mydomain.com ESMTP Postfix ehlo localhost 250-mail.mydomain.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: account@mydomain.com 250 2.1.0 Ok rcpt to: account@mydomain.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> test . 250 2.0.0 Ok: queued as 34ED52012043 quit 221 2.0.0 Bye Connection closed by foreign host.
위 노란색으로 강조된 부분이 사용자가 직접 입력 하는 부분이고, 위와 같이 테스트가 완료 되면 /home/account/Maildir/new 디렉토리에 수신된 메일을 확인 할 수 있다.
dovecot 설치
postfix는 메일전송에이젼트(MTA) 즉 메일 전송하는 역할을 하는 데몬이고, 이메일 수신을 위해서는 pop3, imap서버 역할을 하는 프로그램이 동작해야 합니다.
dovecot이 그 역할을 합니다.
설치는 postfix와 마찬가지고 yum을 통해 설치 합니다.
yum -y install dovecot
dovecot 설정 파일 수정
다음 파일들의 내용을 수정합니다.
/etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no auth_mechanisms = plain login
/etc/dovecot/conf.d/10-master.conf
unix_listener auth-userdb { #mode = 0666 user = postfix group = postfix }
dovecot 데몬 구동
systemctl enable dovecot.service systemctl start dovecot.service
roundcube 설치
roundcube는 오픈소스 웹메일 인터페이스 입니다. 직접 소스파일을 다운받아 설치합니다.
roundcube 설치 요구사항
roundcube 다운로드
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.1/roundcubemail-1.3.1-complete.tar.gz tar xvzf roundcubemail-1.3.1-complete.tar.gz -C /var/www/html/ ln -s /var/www/html/roundcubemail-1.3.1 /var/www/html/roundcube
데이터베이스 준비
mysql> CREATE DATABASE roundcube /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; mysql> GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'password'; mysql> FLUSH PRIVILEGES;
설치 Step 1
브라우저에서 http://mail.mydomain.com/roundcube/installer/ 로 접속하면 아래와 같이 환경을 체크하는 페이지가 뜹니다.
설정상 문제가 없으면 화면 하단에 next 버튼을 클릭해 다음으로 진행합니다.
설치 Step 2
config 파일 설정하는 화면입니다. 데이터베이스 설정 부분에 위에서 만든 데이터베이스 정보에 맞게 값을 넣은 후 CREATE CONFIG버튼을 눌러 다음으로 넘어갑니다.
CREATE CONFIG버튼을 눌러 넘어온 화면에 다음 그림과 같이 config 파일이 성공적으로 저장되었다는 메시지가 표시되면 CONTINUE버튼을 눌러 다음으로 이동합니다.
설치 Step 3
마지막으로 생성된 config를 테스트 하는 화면입니다.
중간에 Check DB config 에 DB Schema: NOT OK(Database not initialized)로 표시가 되어 있는데 아직 데이터베이스에 roundcube가 사용할 테이블이 생성되지 않아서 입니다.
Initialize database버튼을 눌러 테이블을 생성합니다.
Initialize database버튼을 누르면 다음 그림과 같이 Check DB config 부분에 OK로 표시됩니다.
설치 완료
설치 완료 후 http://mail.mydomain.com/roundcube/ 접속하면 다음과 같은 화면을 볼 수 있습니다.
로그인은 리눅스 시스템 계정으로 로그인 하면 됩니다.
이상 간단하게 웹메일 서버를 구성하는 방법에 대해 알아보았습니다.
4 thoughts on “roundcube + postfix + dovecot 을 이용한 웹메일 서버 구축”
안녕하세요! 정말 좋은 글 잘 읽었습니다!
혹시 Roundcube에서 identity를 추가하는 것 말고 실제 이메일 계정을 추가할 수는 없나요?
에고! 답이 늦었습니다.
identity 라고 칭하신 부분이 시스템계정(ID)을 말씀 하시는건가요??
메일서버를 설치하면 기본적으로 시스템 계정이 이메일 계정이 됩니다.
위 글을 바탕으로 메일서버를 설정하셨다고 가정했을때
메일 계정을 추가하기 위해서는 useradd 명령으로 계정을 생성하시면 ( 예를 들어 useradd webmaster )
webmaster@mydomain.com 계정으로 메일을 수발신 할 수 있습니다.
물론 시스템 계정이 아닌 mysql 같은 데이터베이스를 연동해서 계정관리를 할 수 있기도 합니다.
그부분은 추가적인 설정이 더 필요 합니다.
감사합니다.
추가 구현가능한 기술같은건 뭐가 있을까요? 예를들면 관리자 페이지라던지 이러한 기능이 궁금합니다.
postfix와 mysql을 연동하여 email 유저 생성등 작업을 웹 인터페이스에서 가능합니다. 이 포스트에서 다룬 내용은 아니지만 구현해 보시면 많은 도움이 될 듯 하네요