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 configDB Schema: NOT OK(Database not initialized)로 표시가 되어 있는데 아직 데이터베이스에 roundcube가 사용할 테이블이 생성되지 않아서 입니다.
Initialize database버튼을 눌러 테이블을 생성합니다.

Initialize database버튼을 누르면 다음 그림과 같이 Check DB config 부분에 OK로 표시됩니다.

설치 완료

설치 완료 후 http://mail.mydomain.com/roundcube/ 접속하면 다음과 같은 화면을 볼 수 있습니다.

로그인은 리눅스 시스템 계정으로 로그인 하면 됩니다.

이상 간단하게 웹메일 서버를 구성하는 방법에 대해 알아보았습니다.


2개의 댓글

윤지우 · 2018년 5월 8일 2:54 오후

안녕하세요! 정말 좋은 글 잘 읽었습니다!
혹시 Roundcube에서 identity를 추가하는 것 말고 실제 이메일 계정을 추가할 수는 없나요?

    onlab · 2018년 5월 21일 3:45 오후

    에고! 답이 늦었습니다.
    identity 라고 칭하신 부분이 시스템계정(ID)을 말씀 하시는건가요??
    메일서버를 설치하면 기본적으로 시스템 계정이 이메일 계정이 됩니다.
    위 글을 바탕으로 메일서버를 설정하셨다고 가정했을때
    메일 계정을 추가하기 위해서는 useradd 명령으로 계정을 생성하시면 ( 예를 들어 useradd webmaster )
    webmaster@mydomain.com 계정으로 메일을 수발신 할 수 있습니다.
    물론 시스템 계정이 아닌 mysql 같은 데이터베이스를 연동해서 계정관리를 할 수 있기도 합니다.
    그부분은 추가적인 설정이 더 필요 합니다.
    감사합니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다