OS/Linux

Postfix+dovecot+sasl

엔지니어1 2024. 4. 23. 11:03

 

centos7에서 Postfix, dovecot, sasl을 사용하여 메일일 수신하고 발신해 보겠습니다.

 

2024.04.16 - [OS/Linux] - sendmail로 메일송신 하기

 

sendmail로 메일송신 하기

MTA(메일 전손 에이전트)는 메일을 송신 또는 수신을 하지만 sendmail은 전통적으로 리눅스 시스템에 사용됩니다. sendmail의 주요 기능으로는 메일전송, 메일 라우팅, 메일 큐 관리 등이 있습니다. 설

engineer1.tistory.com

 

앞에서 sendmail을 사용하여 메일을 송수신해보았는데, postfix는 sendmail에 비해 설정 파일이 간단하고, 보안에 더 많은 안전을 제공합니다.

일반적으로 성능면에서도 효율적으로 동작하고, 확장성 또한 sendmail에 비교하여 좋기 때문에 대규모 환경에 적합합니다.

 

1. postfix

1-1) 설치

yum install -y postfix

 

1-2) 설정

postfix에는 main.cf와 master.cf를 설정해주어야 합니다.

main.cf는 메일 전송 및 수신과 관련된 대부분의 설정을 하고, 메일 서버에 접근하여 발송하는 권한 등을 관리합니다.

master.cf는 master프로세스가 사용하는 구성 파일이고, smtp서버, smtp 클라이언트, 메일수신, 메일전송 등을 위한 다양한 서비스를 정의합니다.

 

main.cf

운영 목적에 따라 설정 환경을 구성하기 편하도록 주제에 때라 정렬이 잘 되어있습니다. 저는 대부분 기본설정을 사용하지만, 필요 환경에 따라 수정하시면 됩니다.

vi /etc/postfix/main.cf
75 myhostname = mail.domain.com

83 mydomain = domain.com

99 myorigin = $mydomain

113 inet_interfaces = all

164 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

264 mynetworks = 127.0.0.0/8 [::1]/128 [outlook, thunderbird등 사용할 pc의 네트워크]

419 home_mailbox = Maildir/

이외 다양한 기능들이 많아서 하나씩 살펴보면 좋습니다.

 

다음 제일 아랫줄에 ssl, dovecot와 sasl관련 설정들을 추가해 줍니다.

# tls 인증서
smtpd_tls_cert_file=/etc/letsencrypt/live/domain.com/cert.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.com/privkey.pem
# tls 사용 설정
smtpd_use_tls=yes
smtpd_tls_received_header = yes
# tls 세션 캐시 설정
#smtpd_tls_session_cache_timeout = 3600s
#smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
# tls연결을 사용하면 익명의 사용자의 인증을 거부하는 설정
smtpd_sasl_tls_security_options=noanonymous
# 강제 tls인증
smtpd_tls_auth_only=yes
# sasl 인증을 dovecot으로 사용
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
# sasl 클라이언트의 오류 허용
broken_sasl_auth_clients=yes
# smtpd와 smtp의 보안 수준 설정, tls로 시도하고 실패하면 일반 텍스트로 통신
smtpd_tls_security_level = may
smtp_tls_security_level = may
# 메일 수신 규칙 지정
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

이 설정 또한 다양한 기능들이 있어 필요에 따라 추가하시면 됩니다.

 

master.cf

vi /etc/postfix/master.cf

 

아래에 있는 설정들의 주석을 풀어줍니다.

 17 submission inet n       -       n       -       -       smtpd
 18   -o syslog_name=postfix/submission
 19   -o smtpd_tls_security_level=encrypt
 20   -o smtpd_sasl_auth_enable=yes
 25   -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
 26   -o milter_macro_daemon_name=ORIGINATING
 27 smtps     inet  n       -       n       -       -       smtpd
 28   -o syslog_name=postfix/smtps
 29   -o smtpd_tls_wrappermode=yes
 30   -o smtpd_sasl_auth_enable=yes
 35   -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
 36   -o milter_macro_daemon_name=ORIGINATING

각 설정들은 submission을 사용하여 587 포트를 열고 master 프로세스의 설정을 합니다.

 

2. dovecot, sasl

2-1) 설치

yum install -y dovecot cyrus*

dovecot의 설정은

2024.04.18 - [OS/Linux] - Dovecot 설치 및 Thunderbird연동

 

Dovecot 설치 및 Thunderbird연동

Dovecot은 주로 POP3 및 IMAP 서버로 사용되며 메일 클라이언트가 메일을 송수신할 때 Dovecot는 메일을 수신하는 역할을 합니다. SMTP (sendmail, postfix)에서 메일박스에 암호(base64)로 저장된 메일들을 클

engineer1.tistory.com

에서 확인 가능합니다.

 

추가적으로 

vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir # 전 글은 INBOX사용

vi /etc/dovecot/conf.d/10-master.conf

  # Postfix smtp-auth 
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

두 가지만 바꾸어주시면 됩니다.

 

3. 테스트 결과

수신 테스트

썬더버드 수신함

 

발신 테스트

썬더버드 발신함

 

이상입니다!