개발일지

메일서버 구축 (postfix, dovecot) - 설치하기

KIMSANGHUN 2024. 11. 20. 13:32

메일서버 구축

postfix와 dovecot의 상세한 설명은 나중에 정리하도록 하겠습니다

메일서버를 직접 구축해야할 일이 생겨 구축하며 정리를 해보려고 합니다

sendmail도 고려해봤지만 아래와 같은 이유로 postfix를 선택하게 되었습니다.

특성 sendmail postfix
개발 철학 초기의 단일 구조 모듈화된 구조
설정 복잡도 복잡하고 어려움 간단하고 직관적
보안 취약점 다수 발생 보안성이 뛰어남
성능 상대적으로 낮음 빠르고 효율적
사용성 관리 및 설정이 어려움 관리가 쉬움

 

Setting

  • OS: CentOS 9 Stream
  • MTA(이메일을 전달하는 서버): Postfix
  • MDA(이메일을 최종 저장): Dovecot
  • MUA(이메일 작성 및 읽기 도구): Outlook
  • MAA(이메일 서버에 접근): Dovecot

 

postfix, dovecot 설치

portfix 설치

# Postfix 설치 (기본적으로 설치되어 있을 수 있음)
sudo yum install postfix

 

dovecot 설치

# Dovecot 설치
sudo yum install dovecot

 

postfix 기본 설정

# main.cf 파일 편집
sudo vi /etc/postfix/main.cf

 

필요에 맞게 yourdomain을 수정했습니다

# 도메인 설정
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain

# 네트워크 설정
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# TLS 설정
smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt
smtpd_tls_key_file = /etc/pki/tls/private/localhost.key
smtpd_use_tls = yes

 

 

Dovecot 기본 설정

# dovecot.conf 파일 편집
sudo vim /etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *

 

서비스 재시작

# 서비스 재시작
sudo systemctl restart postfix
sudo systemctl restart dovecot

# 서비스 상태 확인
sudo systemctl status postfix
sudo systemctl status dovecot

 

이상이 없다면 아래와 같이 active가 running인 것을 확인할 수 있습니다

 

SELinux 설정

# SELinux 설정 확인
sudo sestatus

# 메일 관련 SELinux 설정 활성화
sudo setsebool -P httpd_can_network_connect=1
sudo setsebool -P postfix_local_write_mail_spool=1

 

방화벽 설정하기

# 필요한 포트 개방
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --permanent --add-service=pop3
sudo firewall-cmd --permanent --add-service=imap
sudo firewall-cmd --permanent --add-port=465/tcp  # SMTPS
sudo firewall-cmd --permanent --add-port=587/tcp  # Submission
sudo firewall-cmd --permanent --add-port=993/tcp  # IMAPS
sudo firewall-cmd --permanent --add-port=995/tcp  # POP3S

# 방화벽 설정 다시 로드
sudo firewall-cmd --reload

 

참고사항

메일서버의 역방향 DNS(PTR 레코드)가 제대로 설정되어 있어야합니다

 

다음에 계속 작성하겠습니다