Postfix+dovecot+sasl
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. 테스트 결과
수신 테스트
발신 테스트
이상입니다!