이메일 서버를 운용하기 위해서는 도메인이 필요하다. 아래 예제에서 이메일 도메인은 mydomain.com 이라고 하고, 테스트 이메일 사용자는 user1 이라고 하겠다. 세팅후 테스트 하게될 이메일 주소는 user1@mydomain.com 이다.
Postfix 설치
Postfix 를 설치한다.
dnf -y install postfix
환경파일 수정 (관련 구문을 / 로 검색해서 적용)
vi /etc/postfix/main.cf
# 코맨트를 해제하고 mail.도메인 과 같이 수정한다.
myhostname = mail.mydomain.com
# 코맨트를 해제하고 도메인으로 수정한다.
mydomain = mydomain.com
# 코맨트를 해제한다.
myorigin = $mydomain
# 값을 all 로 바꾼다.
inet_interfaces = all
# ipv4만 사용한다면 아래와 같이 바꾼다.
inet_protocols = ipv4
# 뒤에 $mydomain 을 추가한다.
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 코맨트를 해제하고, 자신의 로컬 내트워크에 맞게 수정한다.
mynetworks = 192.168.0.0/24, 127.0.0.0/8
# 코맨트를 해제하고 Maildir/ 으로 한다.
home_mailbox = Maildir/
# 코맨트를 해제하고 다음과 같이 수정한다.
smtpd_banner = $myhostname ESMTP
# 이하 마지막 줄에 다음 내용들을 추가한다.
# SMTP VRFY 명령 비활성화
disable_vrfy_command = yes
# 전송 호스트들에게 HELO 명령을 필요로 함
smtpd_helo_required = yes
# 이메일 사이즈 제한 (예: 아래는 10M 제한)
message_size_limit = 10240000
# SMTP 인증 세팅
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
자동 시작 등록
systemctl enable --now postfix
방화벽 오픈
# firewall-cmd --add-service=smtp
success
# firewall-cmd --runtime-to-permanent
success
필요하다면 아래 설정들을 마지막 줄에 추가한다.
vi /etc/postfix/main.cf
# reject unknown clients that forward lookup and reverse lookup of their hostnames on DNS do not match
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client_hostname, permit
# rejects senders that domain name set in FROM are not registered in DNS or
# not registered with FQDN
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
# reject hosts that domain name set in FROM are not registered in DNS or
# not registered with FQDN when your SMTP server receives HELO command
smtpd_helo_restrictions = permit_mynetworks, reject_unknown_hostname, reject_non_fqdn_hostname, reject_invalid_hostname, permit
postfix 서비스를 시작한다.
systemctl restart postfix
혹시 문제가 발생한다면 아래 문서도 참조한다.
참조 : https://ixnfo.com/en/how-to-enable-port-587-in-postfix.html
Dovecot 설치
Dovecot 을 설치한다.
dnf -y install dovecot
환경설정을 한다 - dovecot.conf
vi /etc/dovecot/dovecot.conf
# 주석을 풀고 * 로 수정한다.
listen = *, ::
환경설정을 한다 - 10-auth.conf
vi /etc/dovecot/conf.d/10-auth.conf
# 주석을 해제하고 no로 변경한다. plain text 권한.
disable_plaintext_auth = no
# 추가한다.
auth_mechanisms = plain login
환경설정을 한다 - 10-auth.conf
vi /etc/dovecot/conf.d/10-mail.conf
# 주석을 해제하고 추가한다.
mail_location = maildir:~/Maildir
환경설정을 한다 - 10-master.conf
vi /etc/dovecot/conf.d/10-master.conf
# 주석을 해제하고 다음과 같이 없는 내용을 추가한다.
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
환경설정을 한다 - 10-ssl.conf
vi /etc/dovecot/conf.d/10-ssl.conf
# 내용을 바꾼다 (SSL 사용 여부)
ssl = yes
systemctl enable --now dovecot
systemctl restart dovecot
방화벽 예외 처리
방화벽을 예외 처리한다.
firewall-cmd --add-service={pop3,imap}
firewall-cmd --permanent --add-port=110/tcp --add-port=995/tcp
firewall-cmd --permanent --add-port=143/tcp --add-port=993/tcp
firewall-cmd --zone=public --add-service=smtp --add-service=smtps --add-service=imap --add-service=imaps --add-service=pop3 --add-service=pop3s --add-service=https --permanent
firewall-cmd --zone=public --add-port=587/tcp --add-port=8443/tcp --permanent
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
Selinux 예외 처리를 한다.
setsebool -P httpd_read_user_content 1
로컬 사용자를 이메일 사용자로 연계
메일 클라이언트 프로그램 설치
dnf -y install s-nail
MailDir 을 사용하기 위한 환경변수 셋팅
echo 'export MAIL=$HOME/Maildir' >> /etc/profile.d/mail.sh
메일 사용자 추가
useradd user1
passwd user1
위에 까지 모두 실행했다면 이제 방금 추가한 user1 사용자로 메일 발송 테스트를 해본다. (아래 참조3에서 발췌했습니다)
$ mail user1@localhost
# input subject
Subject: Test Mail#1
# input messages
This is the first mail.
# to finish messages, push Ctrl + D key
-------
(Preliminary) Envelope contains:
To: user1@localhost
Subject: Test Mail#1
Send this message [yes/no, empty: recompose]? yes
# see received emails
s-nail version v14.9.22. Type `?' for help
/home/user1/Maildir: 1 message 1 new
►N 1 user1@mydomain.com 2022-03-18 19:23 14/405 "Test Mail#1"
# 이메일 번호를 입력해서 조회한다.
& 1
[-- Message 1 -- 14 lines, 405 bytes --]:
Date: Fri, 18 Mar 2022 19:23:33 +0900
To: cent@localhost
Subject: Test Mail#1
Message-Id: <20220318022333.B1738EA09@mail.srv.world>
From: cent@srv.world
This is the first mail.
# to quit, input [q]
& q
여기까지 됐다면 이제 SMTP, IMAP 준비까지 모두 끝난것이다.
그럼 다음 편에서 마지막으로 RoundCube 를 설치해 보자.
RoundCube 설치는 다행히 훨씬 쉽다.
위 설치 관련
참조1 : https://www.server-world.info/en/note?os=CentOS_Stream_9&p=httpd2&f=4
참조2 : https://www.server-world.info/en/note?os=CentOS_Stream_9&p=mail&f=1
참조3 : https://www.server-world.info/en/note?os=CentOS_Stream_9&p=mail&f=2
참조4 : https://www.server-world.info/en/note?os=CentOS_Stream_9&p=mail&f=3
'Linux > CentOS Stream 9' 카테고리의 다른 글
| Roundcube 웹메일 스킨 변경 - rcSkins (0) | 2023.02.27 |
|---|---|
| Centos S9 - 이메일 서버 설치 roundcube + postfix + dovecot (3/3) (0) | 2023.02.26 |
| Centos S9 - 이메일 서버 설치 roundcube + postfix + dovecot (1/3) (0) | 2023.02.25 |
| Linux - Centos Stream 9 - fdisk로 추가 디스크 파티션 잡기 (0) | 2023.02.21 |
| Linux CentOS Stream 9 - Jenkins Install 설치 (0) | 2023.02.18 |