Rocky Linux - 메일서버 구축(Postfix, Dovecot, MariaDB And Roundcube)
페이지 정보
작성자 아름다운 작성일 24-03-10 15:59 조회 748 댓글 0본문
Rocky Linux - 메일서버 구축(Postfix, Dovecot, MariaDB And Roundcube)
참조: https://foxydog.tistory.com/104
1단계: 준비과정
전체 업데이트
dnf update
firewall 방화벽 사용 "필요 없음"
systemctl stop firewalld [firewalld 중지]
systemctl mask firewalld [firewalld 자동시작 중지]
dnf install -y iptables-services [iptables 서비스 관련 패키지 설치]
systemctl enable iptables [iptables 자동 시작]
systemctl start iptables [iptables 시작]
iptables -nL [적용 확인]
/etc/sysconfig/iptables [설정 기본경로]
다시 시작하려
systemctl unmask firewalld
SELinux 비활성화
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config | grep disabled [변경 확인]
disabled - No SELinux policy is loaded.
SELINUX=disabled
호스트 등록
도메인을 호스트로 등록합니다. 아래는 제가 실제 구입한 도메인입니다. 추 후 외부에서 메일을 수신받기 위한 서버 이름이라고 생각하시면 됩니다.
hostnamectl set-hostname mail.foxydog.co.kr
hostname
mail.foxydog.co.kr [적용 확인]
패키지 업데이트 및 SELinux 적용을 위해 서버 재시작
reboot
Postfix 설치하기
Apache 설치되었다는 전제에서 설명 생략
dnf install postfix postfix-mysql policycoreutils-python-utils epel-release
PHP는 8.0.X 설치되었다는 전제에서 설명 생략
※ RoundCube에서 php-intl 추가로 설치되어야 진행이 가능합니다.
MariaDB 10.6 버전 설치되었다는 전제에서 설명 생략
로그인 계정 및 RoundCube를 사용하기 위한 구성
※ Postfix가 IMAP을 이용하여 계정을 인증할 때 크게 3가지 방법이 있습니다.
1. /etc/passwd 리눅스 계정 리스트의 PAM을 이용한 인증
2. 직접 사용자 계정 login.list [임의] 파일을 만들어 관리 및 인증
3. MariaDB 같은 데이터베이스에 저장하여 인증 [해당 방법을 이용]
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');
□ 나중에 설치할 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 생성한 파일 권한 설정
[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 – 홈 디렉토리
-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
5-12 Dovecot 서비스 실행 테스트
[root@localhost ~]# systemctl restart postfix dovecot [서비스 재시작]
systemctl enable postfix dovecot
[root@localhost ~]# systemctl status dovecot | grep Active [Active 정상 구동]
Active: active (running) since Fri 2022-05-27 09:08:05 EDT; 3s ago
[root@mail ~]# ps -ef | grep dovecot [프로세스 구동 확인]
root 7890 1 0 09:08 ? 00:00:00 /usr/sbin/dovecot -F
dovecot 7891 7890 0 09:08 ? 00:00:00 dovecot/anvil
root 7892 7890 0 09:08 ? 00:00:00 dovecot/log
root 7893 7890 0 09:08 ? 00:00:00 dovecot/config
STEP06 - RoundCube 설치 및 구성
공식 사이트 : https://roundcube.net/
※ 공식 홈페이지에서 최신 파일 다운, [2022-05-26] 기준으로 [1.5.2] 버전 설치
6-1 RoundCube 다운 및 경로 설정[버전이 올라가면 숫자만 변경]
[root@localhost ~]# wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz [한 줄 명령어/다운]
2022-05-27 09:23:30 (22.4 MB/s) - ‘roundcubemail-1.5.2-complete.tar.gz’ saved [7852981/7852981]
[root@localhost ~]# tar xvzf roundcubemail-1.5.2-complete.tar.gz [압축 해제]
[root@localhost ~]# mv roundcubemail-1.5.2 roundcube [이름 변경]
[root@localhost ~]# mv roundcube /var/www/html/ [경로 이동]
[root@localhost ~]# chown -R apache:apache /var/www/html/ [권한 설정]
[root@localhost ~]# ls -al /var/www/html/ | grep roundcube [변경 확인]
drwxr-xr-x 13 apache apache 4096 12월 29 17:31 roundcube
[root@localhost ~]# systemctl restart httpd [웹 서버스 재시작]
[root@localhost ~]# ps -ef |grep httpd [프로세스 구동 확인]
root 7947 1 1 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7954 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7955 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7956 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7962 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
6-2 진행하기 전 웹 브라우저 접속 연결을 위한 방화벽[Firewall] 포트 허용
[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp --add-port=25/tcp --add-port=587/tcp --add-port=110/tcp --add-port=143/tcp [전체 한 줄]
success
[root@localhost ~]# firewall-cmd --reload [실시간 적용]
success
[root@localhost ~]# firewall-cmd --list-all | grep ports [적용 확인]
ports: 80/tcp 25/tcp 587/tcp 110/tcp 143/tcp
6-3 웹 브라우저(크롬/엣지)를 통해 URL 접속
※ http://서버IP/roundcube/installer/ [접속]
6-7 콘솔 접근 후[config.inc.php] 구성 파일 확인 및 설정
[root@localhost ~]# ls -al /var/www/html/roundcube/config/ | grep config.inc.php
-rw-r--r-- 1 apache apache 2596 5월 27 10:10 config.inc.php
※ SMTP 호스트, 포트 및 로그인 방법을 포함하기 위해 다음과 같이 추가 구성 설정하기
[root@localhost ~]# vim /var/www/html/roundcube/config/config.inc.php
65 $config['default_host'] = 'localhost'; [기본 설정]
71 $config['support_url'] = ''; [기본 설정]
□ 맨 하단에 첫줄[수정]을 제외한 전부 추가
52 $config['plugins'] = array('virtuser_query');
53 $config['virtuser_query'] = "SELECT Email FROM postfix_accounts.accounts_table WHERE Email = '%u'";
54 $config['defautl_port'] = 143;
55 $config['smtp_server'] = 'localhost';
56 $config['smtp_port'] = 587;
57 $config['smtp_user'] = '%u';
58 $config['smtp_pass'] = '%p';
59 $config['smtp_auth_type'] = 'LOGIN';
60 $config['debug_level'] = 1;
61 $config['smtp_debug'] = true;
6-8 /installer 파일 삭제
[root@localhost ~]# rm -rf /var/www/html/roundcube/installer/
6-9 ◆네임서버 설정 [중요] ◆
※ 서버 네임을 IP로 세팅하여도 발송은 가능합니다. 하지만 수신의 경우는 같은 내부 도메인끼리는 주고받을 수 있지만 완전 외부에서 메일을 수신받기 위해서는 도메인 네임서버에 MX값 수신을 받을 수 있는 레코드를 등록을 필수로 해야 합니다. 아래는 등록 예시 입니다.
STEP07 - 최종 메일 테스트
※ http://서버IP/roundcube/ 접속
□ RoundCube 로그인 로그[dovecot.log]
[root@localhost ~]# tail -f /var/log/dovecot.log
May 27 19:19:20 imap-login: Info: Login: user=<foxydog@foxydog.co.kr>, method=PLAIN [로그인 성공]
May 27 19:21:09 imap-login: Info: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs): user=<foxydog@foxydog.co.kr>, method=PLAIN [로그인 실패]
■ 수신[별칭 계정] 테스트
※ foxydogsub@foxydog.co.kr 계정은 별칭 계정으로 메일 박스가 있는 계정이 아닙니다. 하지만 해당 계정으로 수신 받을 시 메일 박스가 있는 foxydog@foxydog.co.kr 라는 계정으로 전달을 합니다.
[root@localhost ~]# tail -f /var/log/maillog
발송 로그
May 28 05:26:32 foxydog-server postfix/qmgr[6678]: CE707809C8: from=<foxydog@foxydog.co.kr>, size=670, nrcpt=1 (queue active)
May 28 05:26:33 foxydog-server postfix/smtp[10651]: CE707809C8: to=<네이버ID@naver.com>, relay=mx3.naver.com[125.209.222.14]:25, delay=0.56, delays=0.08/0.07/0.06/0.35, dsn=2.0.0, status=sent (250 2.0.0 OK 00S0-lrhQHOWV9+oov47Ig - nsmtp) 상태=발송 : 250 2.0.0 OK 발송이 성공되었다는 메시지
수신 로그
May 28 05:32:00 foxydog-server postfix/qmgr[6678]: 36CA780D97: from=<네이버ID@naver.com>, size=3486, nrcpt=1 (queue active)
May 28 05:32:00 foxydog-server postfix/pipe[10699]: 36CA780D97: to=<foxydog@foxydog.co.kr>, relay=dovecot, delay=0.15, delays=0.06/0.02/0/0.07, dsn=2.0.0, status=sent (delivered via dovecot service) 상태=발송(Dovecot) : 250 2.0.0 OK 수신이 성공되었다는 메시지
수신(별칭 계정) 로그
May 28 05:36:00 foxydog-server postfix/qmgr[6678]: 9B01D80D97: from=<네이버ID@naver.com>, size=2474, nrcpt=1 (queue active)
May 28 05:36:00 foxydog-server postfix/pipe[10720]: 9B01D80D97: to=<foxydog@foxydog.co.kr>, orig_to=<foxydogsub@foxydog.co.kr>, relay=dovecot, delay=0.14, delays=0.05/0.02/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service) 상태=발송(Dovecot) : 250 2.0.0 OK 수신이 성공되었다는 메시지(별칭 계정은 orig_to 메시지로 찍히네요)
[추가내용 : 2022-05-31] - 메일 클라이언트 세팅 확인
프로그램은 개인적으로 구독하고 있는 오피스 365 [마이크로소프트 아웃룩]을 이용 하도록 하겠습니다.
◇ POP3[110] / SMTP[587] 연결
[root@mail ~]# tail -f /var/log/dovecot.log
May 30 21:33:25 pop3-login: Info: Login: user=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, mpid=19356, session=<세션ID> [POP3 로그인 성공]
May 30 21:36:22 pop3-login: Info: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs): user=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, session=<세션ID> [POP3 로그인 실패]
[root@mail ~]# tail -f /var/log/dovecot.log
May 30 22:10:33 imap-login: Info: Login: user=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, mpid=19455, session=<세션ID> [IMAP 로그인 성공]
May 30 22:26:07 imap-login: Info: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs):ser=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, session=<세션ID> [IMAP 로그인 실패]
※ 추가로 외부로 메일 발송하기 위해서는 아웃룩에서 꼭 [보내는 메일 서버(SMTP) 인증 필요] 체크가 되어 있어야 합니다. 필수!
참조: https://foxydog.tistory.com/104
1단계: 준비과정
전체 업데이트
dnf update
firewall 방화벽 사용 "필요 없음"
systemctl stop firewalld [firewalld 중지]
systemctl mask firewalld [firewalld 자동시작 중지]
dnf install -y iptables-services [iptables 서비스 관련 패키지 설치]
systemctl enable iptables [iptables 자동 시작]
systemctl start iptables [iptables 시작]
iptables -nL [적용 확인]
/etc/sysconfig/iptables [설정 기본경로]
다시 시작하려
systemctl unmask firewalld
SELinux 비활성화
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config | grep disabled [변경 확인]
disabled - No SELinux policy is loaded.
SELINUX=disabled
호스트 등록
도메인을 호스트로 등록합니다. 아래는 제가 실제 구입한 도메인입니다. 추 후 외부에서 메일을 수신받기 위한 서버 이름이라고 생각하시면 됩니다.
hostnamectl set-hostname mail.foxydog.co.kr
hostname
mail.foxydog.co.kr [적용 확인]
패키지 업데이트 및 SELinux 적용을 위해 서버 재시작
reboot
Postfix 설치하기
Apache 설치되었다는 전제에서 설명 생략
dnf install postfix postfix-mysql policycoreutils-python-utils epel-release
PHP는 8.0.X 설치되었다는 전제에서 설명 생략
※ RoundCube에서 php-intl 추가로 설치되어야 진행이 가능합니다.
MariaDB 10.6 버전 설치되었다는 전제에서 설명 생략
로그인 계정 및 RoundCube를 사용하기 위한 구성
※ Postfix가 IMAP을 이용하여 계정을 인증할 때 크게 3가지 방법이 있습니다.
1. /etc/passwd 리눅스 계정 리스트의 PAM을 이용한 인증
2. 직접 사용자 계정 login.list [임의] 파일을 만들어 관리 및 인증
3. MariaDB 같은 데이터베이스에 저장하여 인증 [해당 방법을 이용]
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');
□ 나중에 설치할 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 생성한 파일 권한 설정
[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 – 홈 디렉토리
-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
5-12 Dovecot 서비스 실행 테스트
[root@localhost ~]# systemctl restart postfix dovecot [서비스 재시작]
systemctl enable postfix dovecot
[root@localhost ~]# systemctl status dovecot | grep Active [Active 정상 구동]
Active: active (running) since Fri 2022-05-27 09:08:05 EDT; 3s ago
[root@mail ~]# ps -ef | grep dovecot [프로세스 구동 확인]
root 7890 1 0 09:08 ? 00:00:00 /usr/sbin/dovecot -F
dovecot 7891 7890 0 09:08 ? 00:00:00 dovecot/anvil
root 7892 7890 0 09:08 ? 00:00:00 dovecot/log
root 7893 7890 0 09:08 ? 00:00:00 dovecot/config
STEP06 - RoundCube 설치 및 구성
공식 사이트 : https://roundcube.net/
※ 공식 홈페이지에서 최신 파일 다운, [2022-05-26] 기준으로 [1.5.2] 버전 설치
6-1 RoundCube 다운 및 경로 설정[버전이 올라가면 숫자만 변경]
[root@localhost ~]# wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz [한 줄 명령어/다운]
2022-05-27 09:23:30 (22.4 MB/s) - ‘roundcubemail-1.5.2-complete.tar.gz’ saved [7852981/7852981]
[root@localhost ~]# tar xvzf roundcubemail-1.5.2-complete.tar.gz [압축 해제]
[root@localhost ~]# mv roundcubemail-1.5.2 roundcube [이름 변경]
[root@localhost ~]# mv roundcube /var/www/html/ [경로 이동]
[root@localhost ~]# chown -R apache:apache /var/www/html/ [권한 설정]
[root@localhost ~]# ls -al /var/www/html/ | grep roundcube [변경 확인]
drwxr-xr-x 13 apache apache 4096 12월 29 17:31 roundcube
[root@localhost ~]# systemctl restart httpd [웹 서버스 재시작]
[root@localhost ~]# ps -ef |grep httpd [프로세스 구동 확인]
root 7947 1 1 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7954 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7955 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7956 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 7962 7947 0 09:25 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
6-2 진행하기 전 웹 브라우저 접속 연결을 위한 방화벽[Firewall] 포트 허용
[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp --add-port=25/tcp --add-port=587/tcp --add-port=110/tcp --add-port=143/tcp [전체 한 줄]
success
[root@localhost ~]# firewall-cmd --reload [실시간 적용]
success
[root@localhost ~]# firewall-cmd --list-all | grep ports [적용 확인]
ports: 80/tcp 25/tcp 587/tcp 110/tcp 143/tcp
6-3 웹 브라우저(크롬/엣지)를 통해 URL 접속
※ http://서버IP/roundcube/installer/ [접속]
6-7 콘솔 접근 후[config.inc.php] 구성 파일 확인 및 설정
[root@localhost ~]# ls -al /var/www/html/roundcube/config/ | grep config.inc.php
-rw-r--r-- 1 apache apache 2596 5월 27 10:10 config.inc.php
※ SMTP 호스트, 포트 및 로그인 방법을 포함하기 위해 다음과 같이 추가 구성 설정하기
[root@localhost ~]# vim /var/www/html/roundcube/config/config.inc.php
65 $config['default_host'] = 'localhost'; [기본 설정]
71 $config['support_url'] = ''; [기본 설정]
□ 맨 하단에 첫줄[수정]을 제외한 전부 추가
52 $config['plugins'] = array('virtuser_query');
53 $config['virtuser_query'] = "SELECT Email FROM postfix_accounts.accounts_table WHERE Email = '%u'";
54 $config['defautl_port'] = 143;
55 $config['smtp_server'] = 'localhost';
56 $config['smtp_port'] = 587;
57 $config['smtp_user'] = '%u';
58 $config['smtp_pass'] = '%p';
59 $config['smtp_auth_type'] = 'LOGIN';
60 $config['debug_level'] = 1;
61 $config['smtp_debug'] = true;
6-8 /installer 파일 삭제
[root@localhost ~]# rm -rf /var/www/html/roundcube/installer/
6-9 ◆네임서버 설정 [중요] ◆
※ 서버 네임을 IP로 세팅하여도 발송은 가능합니다. 하지만 수신의 경우는 같은 내부 도메인끼리는 주고받을 수 있지만 완전 외부에서 메일을 수신받기 위해서는 도메인 네임서버에 MX값 수신을 받을 수 있는 레코드를 등록을 필수로 해야 합니다. 아래는 등록 예시 입니다.
STEP07 - 최종 메일 테스트
※ http://서버IP/roundcube/ 접속
□ RoundCube 로그인 로그[dovecot.log]
[root@localhost ~]# tail -f /var/log/dovecot.log
May 27 19:19:20 imap-login: Info: Login: user=<foxydog@foxydog.co.kr>, method=PLAIN [로그인 성공]
May 27 19:21:09 imap-login: Info: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs): user=<foxydog@foxydog.co.kr>, method=PLAIN [로그인 실패]
■ 수신[별칭 계정] 테스트
※ foxydogsub@foxydog.co.kr 계정은 별칭 계정으로 메일 박스가 있는 계정이 아닙니다. 하지만 해당 계정으로 수신 받을 시 메일 박스가 있는 foxydog@foxydog.co.kr 라는 계정으로 전달을 합니다.
[root@localhost ~]# tail -f /var/log/maillog
발송 로그
May 28 05:26:32 foxydog-server postfix/qmgr[6678]: CE707809C8: from=<foxydog@foxydog.co.kr>, size=670, nrcpt=1 (queue active)
May 28 05:26:33 foxydog-server postfix/smtp[10651]: CE707809C8: to=<네이버ID@naver.com>, relay=mx3.naver.com[125.209.222.14]:25, delay=0.56, delays=0.08/0.07/0.06/0.35, dsn=2.0.0, status=sent (250 2.0.0 OK 00S0-lrhQHOWV9+oov47Ig - nsmtp) 상태=발송 : 250 2.0.0 OK 발송이 성공되었다는 메시지
수신 로그
May 28 05:32:00 foxydog-server postfix/qmgr[6678]: 36CA780D97: from=<네이버ID@naver.com>, size=3486, nrcpt=1 (queue active)
May 28 05:32:00 foxydog-server postfix/pipe[10699]: 36CA780D97: to=<foxydog@foxydog.co.kr>, relay=dovecot, delay=0.15, delays=0.06/0.02/0/0.07, dsn=2.0.0, status=sent (delivered via dovecot service) 상태=발송(Dovecot) : 250 2.0.0 OK 수신이 성공되었다는 메시지
수신(별칭 계정) 로그
May 28 05:36:00 foxydog-server postfix/qmgr[6678]: 9B01D80D97: from=<네이버ID@naver.com>, size=2474, nrcpt=1 (queue active)
May 28 05:36:00 foxydog-server postfix/pipe[10720]: 9B01D80D97: to=<foxydog@foxydog.co.kr>, orig_to=<foxydogsub@foxydog.co.kr>, relay=dovecot, delay=0.14, delays=0.05/0.02/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service) 상태=발송(Dovecot) : 250 2.0.0 OK 수신이 성공되었다는 메시지(별칭 계정은 orig_to 메시지로 찍히네요)
[추가내용 : 2022-05-31] - 메일 클라이언트 세팅 확인
프로그램은 개인적으로 구독하고 있는 오피스 365 [마이크로소프트 아웃룩]을 이용 하도록 하겠습니다.
◇ POP3[110] / SMTP[587] 연결
[root@mail ~]# tail -f /var/log/dovecot.log
May 30 21:33:25 pop3-login: Info: Login: user=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, mpid=19356, session=<세션ID> [POP3 로그인 성공]
May 30 21:36:22 pop3-login: Info: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs): user=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, session=<세션ID> [POP3 로그인 실패]
[root@mail ~]# tail -f /var/log/dovecot.log
May 30 22:10:33 imap-login: Info: Login: user=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, mpid=19455, session=<세션ID> [IMAP 로그인 성공]
May 30 22:26:07 imap-login: Info: Disconnected: Connection closed (auth failed, 1 attempts in 2 secs):ser=<foxydog@foxydog.co.kr>, method=PLAIN, rip=접속IP, lip=서버IP, session=<세션ID> [IMAP 로그인 실패]
※ 추가로 외부로 메일 발송하기 위해서는 아웃룩에서 꼭 [보내는 메일 서버(SMTP) 인증 필요] 체크가 되어 있어야 합니다. 필수!
댓글목록 0
등록된 댓글이 없습니다.
