본문 바로가기
Tech Notes/Mail Server

postfix 설치 (ubuntu 서버)

by gbmin 2023. 4. 24.
반응형

웹 서비스를 운영하다 보면 PHP나 Java를 이용해 메일을 발송해야 할 때가 있다. 외부 메일 서버를 사용할 수도 있지만, Postfix를 설치하면 자체 메일 발송 기능을 쉽게 구현할 수 있다. 이 글에서는 Ubuntu 서버에 Postfix를 설치하고 설정하는 과정을 간단히 정리하였다.


[목차]

1. Postfix 설치

2. Postfix 기본 설정

3. Postfix 재시작 및 서비스 체크

4. mailutils 설치

5. 메일 발송 테스트


1. Postfix 설치

sudo apt update
sudo apt install postfix

 

 

2. Postfix 기본 설정

설치가 완료되면 Postfix의 주요 설정 파일인 /etc/postfix/main.cf를 편집하여 서버 환경에 맞게 설정한다.

nano /etc/postfix/main.cf

이 파일에서 다음과 같은 주요 설정을 수정하거나 추가한다.

 

1) 호스트네임 및 도메인 설정

myhostname = mail.gbminnote.com
myorigin = /etc/mailname
  • myhostname: 서버의 호스트 이름이다. 서버 설정에 맞춰 등록한다.
  • myorigin: 발신 메일의 도메인을 설정한다. /etc/mailname에 설정된 도메인을 사용할 수 있다.

 

2) 메일 수신 및 발신 범위 설정

mydestination = $myhostname, example.com, localhost.com, , localhost
  • mydestination: Postfix가 처리할 메일 도메인을 설정한다. example.com을 실제 사용하는 도메인으로 변경해서 사용한다.
relayhost =
  • relayhost: 메일을 전송할 중계 서버가 있는 경우 설정한다. 일반적으로 빈값으로 둔다.
  • relay 서버를 운영하려면 설정 값에 호스트나 아이피, 아이피대역을 설정하면 된다.

 

3) 네트워크 인터페이스 설정

Postfix가 수신할 IP 주소 범위를 지정한다.

inet_interfaces = all
  • inet_interfaces: Postfix가 메일을 수신할 네트워크 인터페이스다. 모든 인터페이스에서 메일을 받을 수 있도록 all로 설정한다.

 

4) 허용 네트워크 설정

mynetworks = 127.0.0.0/8, [::1]/128
  • mynetworks: 허용된 네트워크 범위를 설정합니다. 기본적으로 로컬 네트워크만 허용되며, 필요에 따라 다른 IP를 추가할 수 있다. 모든 아이피 허용은 스팸 발송지로 악용될 수 있으니 주의해야 한다.

 

5) 메일 박스 설정

Postfix가 메일을 저장할 형식을 설정한다.

home_mailbox = Maildir/
  • home_mailbox: 메일을 Maildir 형식으로 저장하도록 설정한다. Maildir/로 설정하면 사용자의 홈 디렉터리 내에 Maildir 폴더가 생성되고, 각 메일이 개별 파일로 저장된다.

 

6) SASL 인증 설정 (선택)

Postfix에서 인증된 사용자를 통해서만 메일 발송을 허용하려면 SASL 인증을 설정해야 한다.

apt install libsasl2-modules

설치 후, /etc/postfix/main.cf 에 다음 줄을 추가한다.

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

 

7) TLS (SSL) 설정

보안을 강화하기 위해 TLS를 설정할 수 있다. 포탈로 메일을 발송하는 경우라면 설정을 권장한다.

  • 먼저 SSL 인증서를 생성하거나, Let’s Encrypt 같은 인증 기관에서 SSL 인증서를 발급받는다.
  • Postfix 설정 파일에 SSL 인증서를 추가한다.
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes

이 값을 자신이 발급받은 인증서와 키 파일 경로로 변경한다.

 

 

3. Postfix 재시작 및 서비스 체크

root@gbminnote:/var/log# systemctl restart postfix


root@gbminnote:/var/log# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sun 2023-04-23 20:53:38 KST; 30min ago
       Docs: man:postfix(1)
   Main PID: 2629 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Apr 23 20:53:38 gbminnote.com systemd[1]: Starting Postfix Mail Transport Agent...
Apr 23 20:53:38 gbminnote.com systemd[1]: Finished Postfix Mail Transport Agent.



root@gbminnote:~# ps -aux | grep master
root        2626  0.0  0.0  41328  5028 ?        Ss   20:53   0:00 /usr/lib/postfix/sbin/master -w
root        2698  0.0  0.0   6476  2088 pts/0    S+   20:54   0:00 grep --color=auto master



root@gbminnote:/var/log# netstat -nlp | grep 2626
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2626/master
tcp6       0      0 :::25                   :::*                    LISTEN      2626/master

 

 

4. mailutils 설치

Mailutils는 다양한 메일 처리 도구 및 라이브러리를 제공하는 소프트웨어 패키지로, 특히 Linux 시스템에서 메일 관련 작업을 처리하는 데 사용된다. 주로 메일 송수신 테스트나, 메일박스 관리, 메일 필터링 등의 기능을 제공하며, Postfix와 같은 메일 서버와 함께 사용하면 유용하게 사용할 수 있다.

root@gbminnote:~# apt install mailutils

 

 

5. 메일 발송 테스트

root@gbminnote:~# echo "postfix mail sending test" | mail  -s "postfix mail sending test"  gbminnote@gmail.com

 

 

메일 발송 후 메일 로그의 발송 상태를 체크해 본다.

root@gbminnote:~# tail -n 6 /var/log/mail.log
Apr 23 21:37:36 gbminnote postfix/pickup[2627]: D5C3B181D7F: uid=0 from=<root@gbminnote.com>
Apr 23 21:37:36 gbminnote postfix/cleanup[3411]: D5C3B181D7F: message-id=<20230423123736.D5C3B181D7F@gbminnote.com>
Apr 23 21:37:36 gbminnote postfix/qmgr[2628]: D5C3B181D7F: from=<root@gbminnote.com>, size=368, nrcpt=1 (queue active)
Apr 23 21:37:37 gbminnote postfix/smtp[3412]: connect to gmail-smtp-in.l.google.com[2404:6800:4008:c01::1a]:25: Network is unreachable
Apr 23 21:37:38 gbminnote postfix/smtp[3412]: D5C3B181D7F: to=<gbminnote@gmail.com>, relay=gmail-smtp-in.l.google.com[108.177.125.27]:25, delay=2, delays=0.01/0.01/1.3/0.66, dsn=2.0.0, status=sent (250 2.0.0 OK  1682253458 p11-20020a170902e74b00b001a1956e542dsi9489535plf.340 - gsmtp)
Apr 23 21:37:38 gbminnote postfix/qmgr[2628]: D5C3B181D7F: removed

 

 

 

 

opendkim 설치 및 설정 (DKIM, DMARC)

OpenDKIM (DomainKeys Identified Mail)은 전자 메일의 인증 및 보안을 강화하기 위한 오픈 소스 소프트웨어로 도메인 인증 기술의 일종으로, 전자 메일이 도착한 송신자가 실제로 그들이 주장하는 도메인

gbminnote.com