단순히 [Postfix/Sendmail]를 이용하여 메일을 전달만 하는 게 아닌 상용 메일 솔루션처럼 웹 인터페이스를 통해 메일을 주고받고 할 수 있는 메일서버를 만들어보도록 하겠습니다. 모든 오픈 소스를 동원해 하나의 메일서버처럼 작동을 해야 하므로 매우 복잡한 세팅 과정을 거쳐야 합니다. 최대한 순차적으로 풀어서 이해할 수 있도록 진행하도록 하겠습니다.
[2022-06-01]
진행하시다가 막히는 부분이 있다면 트러블슈팅(troubleshooting) 포스팅을 한번 읽어보시면 도움이 되실 것으로 생각 됩니다 : https://foxydog.tistory.com/105
□ 오픈소스 솔루션 소개
| Rocky Linux [공식 홈페이지] | CentOS 창립자인 Gregory Kurtzer에 의해 별도의 커뮤니티 중심, 엔터프라이즈급 운영체재 100% 목표로 버그 별 호환될 수 있도록 하는 Linux로 개발된 OS 입니다. |
| Postfix [공식 홈페이지] | IBM 보안 전문가가 만든 무료 오픈 소스 MTA(메일 전송 에이전트)로 인터넷을 통해 다른 서버로 전자 메일을 라우팅하고 SMTP 프로토콜을 이용해 전달하는 역활을 합니다. |
| Dovecot [공식 홈페이지] | 보안 위주로 제공하고 있는 Linux/Unix계열 시스템 용 오픈 소스 IMAP/POP3 서비스입니다. |
| MariaDB [공식 홈페이지] | 이제는 누구나 알고 있는 관계형 데이터베이스(DB) 관리 시스템 오픈 소스 입니다. 여기서는 RoundCube(웹메일) 및 사용자(로그인 정보)계정을 보관하기 위해 사용됩니다. |
| RoundCube [공식 홈페이지] | 메일을 읽고 쓰고 발송할 수 있는 인터페이스를 제공하는 오픈 소스용 웹메일 입니다. 상용 메일 솔루션만큼은 아니지만 기본적인 MIME지원, 주소록, 폴더 조작, 메시지 검색 및 맞춤법 검사를 포함한 이메일 클라이언트와 비슷하게 기능을 제공 하고 있습니다. |
만약 실제 메일서버를 운영하기 위해서는 다음과 같은 전제조건이 필요
※ 도메인 구입 필요 [예로 제가 사용하는 foxydog.co.kr 도메인 주소를 말합니다]
※ 수발신을 위한 A/MX 레코드 등록 필요 [서버를 찾아갈 수 있게 mail.foxydog.co.kr DNS에 호스트를 등록]
■ [설치환경 및 준비물]
릴리즈 설치 테스트 : 2022-05-26
※ YUM/DNF 명령어를 통해 설치 진행
※ Firewall 방화벽을 그대로 이용
※ 실제 운영중인 물리 서버(VMware)에 공인 IP를 할당하여 서버를 구축합니다.
| 서버준비 | Rocky Linux 설치 서버 [포스팅 참고] ※ 포스팅은 8.5지만 최근 8.6이 나왔습니다. |
| OS Version | Rocky Linux release 8.6 (Green Obsidian) |
| 커널(Kernel) | 4.18.0-372.9.1.el8.x86_64 |
| postfix | 3.5.8 |
| dovecot | 2.3.16 |
| DB | MariaDB 10.6 [포스팅 참고] ※ 수명이 가장 긴 10.6 버전을 설치하는게 좋습니다. |
| Web | Apache 2.4.37 / PHP 7.4.19 |
| Webmail | RoundCube 1.5.2 |
STEP01 - Rocky Linux 설치 후 준비 과정
1-1 전체 패키지 업데이트 하기
오픈 소스의 경우는 한번 적용하기 시작하면 추후 보안 패치나 수정에 어려움이 많이 발생합니다. 특히나 메일서버의 경우는 스패머들에 의해 타깃 노출이 많이 되므로 보안을 위해 모든 패키지를 최신 버전으로 설치하는 게 좋습니다.
[root@localhost ]# dnf update
1-2 firewall 방화벽 사용
※ iptables 방화벽을 사용하고 싶다면 아래와 같이 이용, 선택 사항입니다.
[root@localhost ~]# systemctl stop firewalld [firewalld 중지]
[root@localhost ~]# systemctl mask firewalld [firewalld 자동시작 중지]
[root@localhost ~]# dnf install -y iptables-services [iptables 서비스 관련 패키지 설치]
[root@localhost ~]# systemctl enable iptables [iptables 자동 시작]
[root@localhost ~]# systemctl start iptables [iptables 시작]
[root@localhost ~]# iptables -nL [적용 확인]
[root@localhost ~]# /etc/sysconfig/iptables [설정 기본경로]
1-3 SELinux 비활성화
[root@localhost ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# cat /etc/selinux/config | grep disabled [변경 확인]
# disabled - No SELinux policy is loaded.
SELINUX=disabled
1-4 호스트 등록
본인이 가지고 있는 도메인을 호스트로 등록합니다. 아래는 제가 실제 구입한 도메인입니다. 추 후 외부에서 메일을 수신받기 위한 서버 이름이라고 생각하시면 됩니다.
[root@localhost ~]# hostnamectl set-hostname mail.foxydog.co.kr
[root@localhost ~]# hostname
mail.foxydog.co.kr [적용 확인]
1-5 패키지 업데이트 및 SELinux 적용을 위해 서버 재시작
[root@localhost ~]# reboot
STEP02 - Postfix, Apache 및 PHP 설치하기
2-1 Postfix, Apache 설치하기
[root@localhost ]# dnf install httpd postfix postfix-mysql policycoreutils-python-utils epel-release
2-2 PHP는 7.4.X 버전 설치
CentOS 8 에서는 Remi 저장소를 이용했지만 Rocky Linux AppStream는 자체 저장소에서도 선택을 할 수 있습니다.
[root@localhost ~]# dnf module list php [사용 가능한 PHP 버전 확인]
[root@localhost ~]# dnf module enable php:7.4 [PHP 7.4 모듈을 사용하기 위한 활성화 및 디폴트 설정]
※ 모듈 스트림 활성화 메시지가 나오면 [Y/N]: Y 진행하기
[root@localhost ~]# dnf install php [PHP 7.4 설치]
[root@localhost ~]# dnf install php-common php-json php-xml php-mbstring php-mysqlnd php-intl [추가 php모듈 설치]
※ RoundCube에서 php-intl 추가로 설치되어야 진행이 가능합니다.

STEP03 - MariaDB 설치 및 구성하기
※버전별 세팅 방법[스크린샷 참고]
https://downloads.mariadb.org/mariadb/repositories/#mirror=yongbok
Rocky는 호환되는 CentOS/Redhat 패키지 설치 방법을 따라가면 됩니다.

※ 서버를 새로 구축을 한다면 수명이 긴 [10.6] 버전으로 설치하는 게 가장 좋습니다.
3-1 MariaDB 10.6 버전 설치
먼저 YUM 저장소 생성[파일 생성 후 저장]
[root@localhost ~]# vi /etc/yum.repos.d/MariaDB.repo [아래의 값을 복사 후 저장]
# MariaDB 10.6 RedHat repository list - created UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://mirror.yongbok.net/mariadb/yum/10.6/rhel8-amd64
module_hotfixes=1
gpgkey=https://mirror.yongbok.net/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

# https://mariadb.org/download/
[mariadb]
name = MariaDB
#baseurl = https://mirror.yongbok.net/mariadb/yum/10.6/rhel9-amd64
baseurl=https://mirror.mariadb.org/yum/11.4/rhel9-amd64
module_hotfixes=1
#gpgkey=https://mirror.yongbok.net/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgkey=https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
~
[root@localhost ~]# dnf install MariaDB [설치]
[root@localhost ~]# systemctl start mariadb [DB 구동]
[root@localhost ~]# systemctl enable mariadb [부팅 자동 실행]
[root@localhost ~]# ps -ef | grep mariadbd [구동 확인]
mysql 4356 1 2 09:56 ? 00:00:00 /usr/sbin/mariadbd
[root@localhost ~]# mariadb-secure-installation [초기 세팅]
Enter current password for root (enter for none): [Enter]
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] Y
New password: 패스워드 입력
Re-enter new password: 패스워드 재입력
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Thanks for using MariaDB!
3-2 로그인 계정 및 RoundCube를 사용하기 위한 구성
※ Postfix가 IMAP을 이용하여 계정을 인증할 때 크게 3가지 방법이 있습니다.
1. /etc/passwd 리눅스 계정 리스트의 PAM을 이용한 인증
2. 직접 사용자 계정 login.list [임의] 파일을 만들어 관리 및 인증
3. MariaDB 같은 데이터베이스에 저장하여 인증 [해당 방법을 이용]
[root@localhost ~]# mysql -u root -p [DB 접속, 순서대로 진행]
□ Postfix 계정을 저장할 데이터베이스 생성
MariaDB [(none)]> create database postfix_accounts;
□ 방금 생성한 데이터베이스에 접근할 전체 권한 계정을 생성
※예시# grant all on 데이터베이스 이름.* to '유저 ID'@'localhost' identified by '패스워드';
MariaDB [(none)]> grant all on postfix_accounts.* to foxydog@localhost identified by 'test123';
□ 서버에 도메인을 저장할 테이블 만들기 [전체한 줄]
MariaDB [(none)]> CREATE TABLE `postfix_accounts`.`domains_table` (
`DomainId` INT NOT NULL AUTO_INCREMENT,
`DomainName` VARCHAR(50) NOT NULL,
PRIMARY KEY (`DomainId`)
) ENGINE = InnoDB;
□ 사용자 계정을 보관할 테이블 만들기 [전체한 줄]
MariaDB [(none)]> CREATE TABLE `postfix_accounts`.`accounts_table` (
`AccountId` INT NOT NULL AUTO_INCREMENT,
`DomainId` INT NOT NULL,
`password` VARCHAR(300) NOT NULL,
`Email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`AccountId`),
UNIQUE KEY `Email` (`Email`),
FOREIGN KEY (DomainId) REFERENCES domains_table(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;
□ 별칭 사용자 계정을 보관할 테이블 만들기 [전체한 줄]
※ 별칭은 일종의 리다이렉션처럼 A계정이 수신을 받으면 B계정으로 받는 기능
MariaDB [(none)]> CREATE TABLE `postfix_accounts`.`alias_table` (
`AliasId` INT NOT NULL AUTO_INCREMENT,
`DomainId` INT NOT NULL,
`Source` varchar(100) NOT NULL,
`Destination` varchar(100) NOT NULL,
PRIMARY KEY (`AliasId`),
FOREIGN KEY (DomainId) REFERENCES domains_table(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;

이제 만든 테이블에 사용할 도메인 및 계정 정보 레코드 입력[각 한 줄씩 명령어]
□ 구입한 도메인 입력[foxydog.co.kr]
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`domains_table` (DomainName) VALUES ('foxydog.co.kr');
□ 첫 번째 계정 생성[foxydog@foxydog.co.kr]
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`accounts_table` (DomainId, password, Email) VALUES (1, ENCRYPT('test123', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'foxydog@foxydog.co.kr');
□ 두 번째 계정 생성[foxydog2@foxydog.co.kr]
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`accounts_table` (DomainId, password, Email) VALUES (1, ENCRYPT('test123', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'foxydog2@foxydog.co.kr');
□ 별칭 계정 생성 [foxydogsub@eztest.com ▷ foxydog@foxydog.co.kr]
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`alias_table` (DomainId, Source, Destination) VALUES (1, 'foxydogsub@foxydog.co.kr', 'foxydog@foxydog.co.kr');
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`accounts_table` (DomainId, password, Email) VALUES (1, ENCRYPT('test123', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'foxydog@mail2.frpsystems.link');
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`accounts_table` (DomainId, password, Email) VALUES (1, ENCRYPT('test123', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'foxydog2@mail2.frpsystems.link');
MariaDB [(none)]> INSERT INTO `postfix_accounts`.`alias_table` (DomainId, Source, Destination) VALUES (1, 'foxydogsub@mail2.frpsystems.link', 'foxydog@mail2.frpsystems.link');
※ 데이터가 제대로 입력되었는지 확인[스크린샷 대체]

□ 나중에 설치할 RoundCube 데이터베이스 미리 생성하기
MariaDB [none]> create database roundcube;
□ 동일하게 데이터베이스에 접근할 전체 권한 계정을 생성
MariaDB [none]> grant all on roundcube.* to roundcube_admin@localhost identified by 'test123';
MariaDB [none]> flush privileges; [바로 적용]
MariaDB [none]> quit [끝]
STEP04 - Postfix 구성 세팅 하기
※ 구성파일 위치 /etc/postfix/
4-1 master.cf 파일 설정[수정 또는 추가 후 저장]
[root@localhost ]# vim /etc/postfix/master.cf
□ 다음과 같이 아래 주석[#] 제거하거나 추가[스크린샷 참고]
17 submission inet n - n - - smtpd [#주석 제거]
18 -o syslog_name=postfix/submission [#주석 제거]
20 -o smtpd_sasl_auth_enable=yes [#주석 제거]
22 -o smtpd_reject_unlisted_recipient=no [#주석 제거]
27 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject [#주석 제거]
28 -o milter_macro_daemon_name=ORIGINATING [#주석 제거]
134 dovecot unix - n n - - pipe [추가]
135 flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient} [추가 ※앞줄 한 칸 띄어쓰기, 붙이면 문법 에러 납니다. 주의할 것]

4-2 main.cf 파일 설정[수정 또는 추가 후 저장]
[root@localhost ]# vim /etc/postfix/main.cf
□ 다음과 같이 아래 주석[#] 제거하거나 추가[스크린샷 참고]
96 myhostname = mail.foxydog.co.kr [추가]
104 mydomain = foxydog.co.kr [추가]
120 myorigin = $mydomain [#주석 제거]
134 inet_interfaces = all [#주석 제거, 또는 변경]
140 inet_protocols = all [기본 설정]
186 mydestination = localhost [변경]
441 home_mailbox = Maildir/ [#주석 제거]
712 #smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem [#주석 처리]
718 #smtpd_tls_key_file = /etc/pki/tls/private/postfix.key [#주석 처리]
723 smtpd_tls_security_level = may [기본 설정]
739 smtp_tls_security_level = may [기본 설정]
□ 맨 하단에는 SSL 보안 관련 옵션으로 당장 사용하지는 않지만 미리 등록 [추가]
743 smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
744 message_size_limit = 4194304
745 append_dot_mydomain = no
746 biff = no
748 smtpd_use_tls = yes
749 smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
750 smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
751 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
752 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
753 smtpd_sasl_path = private/auth
754 smtpd_sasl_type = dovecot
756 config_directory = /etc/postfix
757 virtual_transport = dovecot
□ 마지막으로 STEP03 데이터베이스에 저장한 정보를 Postfix 액세스 권한 부여하는 구성 [추가]
758 virtual_mailbox_domains = mysql:/etc/postfix/database-domains.cf
759 virtual_mailbox_maps = mysql:/etc/postfix/database-users.cf
760 virtual_alias_maps = mysql:/etc/postfix/database-alias.cf

4-3 Postfix가 데이터베이스에 각 정보를 액세스 할 수 있도록 파일 생성[추가 후 저장]
□ 도메인 엑세스
[root@localhost ]# vim /etc/postfix/database-domains.cf
user = foxydog
password = test123
hosts = 127.0.0.1
dbname = postfix_accounts
query = SELECT 1 FROM domains_table WHERE DomainName='%s'
□ 사용자 계정 액세스
[root@localhost ]# vim /etc/postfix/database-users.cf
user = foxydog
password = test123
hosts = 127.0.0.1
dbname = postfix_accounts
query = SELECT 1 FROM accounts_table WHERE Email='%s'
□ 별칭 계정 액세스
[root@localhost ]# vim /etc/postfix/database-alias.cf
user = foxydog
password = test123
hosts = 127.0.0.1
dbname = postfix_accounts
query = SELECT Destination FROM alias_table WHERE Source='%s'
4-4 생성한 파일 권한 설정
[root@localhost ~]# chmod 640 /etc/postfix/database*
[root@localhost ~]# chown root:postfix /etc/postfix/database*
[root@localhost ~]# ls -al /etc/postfix/ | grep database [적용 확인]
-rw-r----- 1 root postfix 144 5월 26 22:54 database-alias.cf
-rw-r----- 1 root postfix 140 5월 26 22:54 database-domains.cf
-rw-r----- 1 root postfix 136 5월 26 22:54 database-users.cf
[root@localhost ~]# systemctl restart postfix [서비스 재시작]
[root@localhost ~]# systemctl status postfix | grep active [Active 정상 구동]
Active: active (running) since Thu 2020-08-27 03:00:05 EDT; 42s ago
[root@localhost ~]# ps -ef |grep postfix [프로세스 구동 확인]
root 6676 1 0 5월26 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 6678 6676 0 5월26 ? 00:00:00 qmgr -l -t unix -u
postfix 6754 6676 0 00:36 ? 00:00:00 pickup -l -t unix -u
4-5 설정 테스트[Postfix가 데이터베이스에 정상 접근하는지]
※ 응답 값이 숫자 1이 나오거나 끝에는 별칭(리다이렉트) 계정이 표시되면 정상
[root@localhost postfix]# postmap -q foxydog.co.kr mysql:/etc/postfix/database-domains.cf
1
[root@localhost postfix]# postmap -q foxydog@foxydog.co.kr mysql:/etc/postfix/database-users.cf
1
[root@localhost postfix]# postmap -q foxydog2@foxydog.co.kr mysql:/etc/postfix/database-users.cf
1
[root@localhost postfix]# postmap -q foxydogsub@foxydog.co.kr mysql:/etc/postfix/database-alias.cf
foxydog@foxydog.co.kr

STEP05 - Dovecot 설치 및 구성
5-1 Dovecot 설치하기
[root@localhost ~]# dnf install dovecot dovecot-mysql
5-2 설치 후 시스템에서 메일을 처리할 사용자 및 그룹을 추가
[root@localhost ~]# groupadd -g 6000 vmail
[root@localhost ~]# useradd -g vmail -u 6000 vmail -d /home/vmail -m
5-3 dovecot.conf 설정[수정 후 저장]
[root@localhost ]# vim /etc/dovecot/dovecot.conf
24 protocols = imap pop3 lmtp [#주석 제거]
30 listen = *, :: [#주석 제거]
97 !include conf.d/*.conf [기본 설정]
101 !include_try local.conf [기본 설정]
103 log_path = /var/log/dovecot.log [추가]

5-4 10-auth.conf 설정[수정 후 저장]
[root@localhost ]# vim /etc/dovecot/conf.d/10-auth.conf
10 disable_plaintext_auth = no [#주석 제거 후 변경]
100 auth_mechanisms = plain login [추가]
122 #i!include auth-system.conf.ext [#주석 처리]
123 !include auth-sql.conf.ext [#주석 제거]

5-5 활성화한 auth-sql.conf.ext 파일 구성 [수정 후 저장]
[root@localhost ~]# vim /etc/dovecot/conf.d/auth-sql.conf.ext
5 passdb {
6 driver = sql
9 args = /etc/dovecot/dovecot-sql.conf.ext
10 }
27 userdb {
28 driver = static
29 args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
30 }

[참고]
※ 별도로 /home/vmail 경로에 이메일을 저장하기 위해 다음과 같은 변수를 이용
%u – 사용자 이름
%n – user@domain의 사용자 부분 , 도메인이 없는 경우 % u와 동일
%d – user@domain의 도메인 부분 , 도메인이 없으면 비어 있음
%h – 홈 디렉토리
5-6 변수에 맞게 해당 경로 도메인 등록
※ /home/vmail/domain 디렉터리 (/home/vmail/%d/ )를 생성
[root@localhost ~]# mkdir /home/vmail/foxydog.co.kr
5-7 위 설정에서 "args"에 포함된 파일에 postfix에 대해 구성한 데이터베이스 세부 정보를 추가
[root@localhost ~]# vim /etc/dovecot/dovecot-sql.conf.ext [추가 후 저장]
driver = mysql
connect = "host=127.0.0.1 dbname=postfix_accounts user=foxydog password=test123"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM accounts_table WHERE Email='%u';
5-8 10-mail.conf 파일 구성
※ 메일 사서함(저장 위치) 및 네임스페이스(Namespace) inbox 사용 설정
[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf [수정 후 저장]
30 mail_location = maildir:/home/vmail/%d/%n/Maildir [#주석 제거 후 추가]
42 namespace inbox {
61 inbox = yes
80 }
114 mail_privileged_group = mail [#주석 제거 후 추가]
325 mbox_write_locks = fcntl [기본 설정]

5-9 10-master.conf 파일 구성
※ 각 서비스에 대한 포트 지정 생각하면 됩니다.
[root@localhost ~]# vim /etc/dovecot/conf.d/10-master.conf
17 service imap-login {
18 inet_listener imap {
19 port = 143 [#주석 제거]
20 }
21 inet_listener imaps {
22 #port = 993
23 #ssl = yes
24 }
36 }
38 service pop3-login {
39 inet_listener pop3 {
40 port = 110 [#주석 제거]
41 }
42 inet_listener pop3s {
43 #port = 995
44 #ssl = yes
45 }
46 }
□ submission은 Postfix에서 이미 사용 중으로 포트 충돌을 막기 위해 주석[#] 처리
48 #service submission-login {
49 # inet_listener submission {
50 #port = 587
51 # }
52 #}
54 service lmtp {
55 unix_listener lmtp {
56 mode = 0666 [#주석 제거]
57 user = postfix [추가]
58 group = postfix [추가]
59 }
88 service auth {
102 unix_listener auth-userdb {
103 mode = 0666 [#주석 제거]
104 user = vmail [#주석 제거 후 추가]
106 }
109 unix_listener /var/spool/postfix/private/auth { [#주석 제거]
110 mode = 0666 [#주석 제거]
111 user = postfix [추가]
112 group = postfix [추가]
113 }
114 user = dovecot [추가]
117 }
119 service auth-worker {
123 user = vmail [#주석 제거 후 변경]
124 }
126 service dict {
129 unix_listener dict {
133 }
134 }

5-10 10-ssl.conf 파일 구성
※ SSL을 선택하여 사용할 수 있으나 현재는 인증서가 없기 때문에 제외[사용 안 함 처리]
[root@localhost ~]# vim /etc/dovecot/conf.d/10-ssl.conf
□[사용 안 함]
8 ssl = no [변경]
14 #ssl_cert = </etc/pki/dovecot/certs/dovecot.pem [#주석 처리]
15 #ssl_key = </etc/pki/dovecot/private/dovecot.pem [#주석 처리]
□[사용할 경우]
8 ssl = required
14 ssl_cert = </etc/pki/dovecot/certs/dovecot.pem [인증서 CRT 경로]
15 ssl_key = </etc/pki/dovecot/private/dovecot.pem [인증서 KEY 경로]

5-11 vmail 권한 설정
※ 메일을 처리할 vmail 계정은 사용자 메일 위치에 액세스를 해야 하므로 아래와 같이 필요한 권한을 부여
[root@localhost ~]# chown -R vmail:vmail /home/vmail
[root@localhost ~]# ls -al /home/vmail | grep foxydog
drwxr-xr-x 2 vmail vmail 4096 5월 27 04:00 foxydog.co.kr
[root@localhost ~]# chown -R vmail:dovecot /etc/dovecot
[root@localhost ~]# chmod -R o-rwx /etc/dovecot
[root@localhost ~]# ls -al /etc | grep dovecot
drwxr-x--- 3 vmail dovecot 4096 5월 27 04:18 dovecot
[root@localhost ~]# chown vmail:dovecot /var/log/dovecot.log
[root@localhost ~]# ls -al /var/log | grep dovecot
-rw------- 1 vmail dovecot 114 5월 27 09:08 dovecot.log
[root@localhost ~]# chown vmail:dovecot /var/run/dovecot/stats-writer
[root@localhost ~]# ls -al /var/run/dovecot/stats-writer
srw-rw---- 1 vmail dovecot 0 5월 27 09:08 /var/run/dovecot/stats-writer
댓글 없음:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.