본문 바로가기
서버구축 (WEB,DB)

Postfix 이용한 SMTP 메일 서버 구성 및 MailHog 연동 테스트

by 날으는물고기 2025. 1. 16.

Postfix 이용한 SMTP 메일 서버 구성 및 MailHog 연동 테스트

Ubuntu에 SMTP 메일 서버를 구성하려면 Postfix라는 메일 서버 소프트웨어를 사용하여 간단하게 설정할 수 있습니다. Postfix는 Ubuntu에서 많이 사용하는 SMTP 서버로, 비교적 설치와 설정이 쉽고 널리 사용됩니다. Ubuntu에 Postfix를 설치하고 SMTP 서버를 구성하는 방법입니다.

1. Postfix 설치

Postfix를 설치합니다.

sudo apt update
sudo apt install postfix

설치 과정에서 몇 가지 설정을 선택해야 하는데, 기본적으로 다음과 같이 설정하면 됩니다.

  • Mail Server Configuration Type: "Internet Site" 선택
  • System Mail Name: 서버의 도메인 이름 입력 (예: example.com)

2. Postfix 기본 설정

설치가 완료되면 Postfix의 설정 파일을 수정하여 적절하게 구성해야 합니다. Postfix 설정 파일 /etc/postfix/main.cf을 편집합니다.

sudo nano /etc/postfix/main.cf

다음과 같은 설정을 확인하고 수정하세요.

  • myhostname: 서버의 호스트 이름 (예: mail.example.com)
    myhostname = mail.example.com
  • mydomain: 서버의 도메인 이름 (예: example.com)
    mydomain = example.com
  • myorigin: 메일의 출발지를 도메인으로 설정
    myorigin = /etc/mailname
  • mydestination: Postfix가 수신하는 도메인을 설정
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  • relayhost: 필요 시 리모트 SMTP 서버로 메일을 릴레이할 수 있는 호스트 설정
    기본적으로는 빈 값으로 둡니다. 외부 SMTP 서버로 릴레이를 원할 경우 여기서 설정합니다.
    relayhost =
  • inet_interfaces: 외부에서 메일을 수신하기 위해 all로 설정
    inet_interfaces = all
  • mynetworks: 서버가 메일을 릴레이할 네트워크 대역
    내부 네트워크나 신뢰할 수 있는 IP를 지정합니다.
    mynetworks = 127.0.0.0/8

3. SASL 인증 설정

Postfix에 SMTP 인증(SASL)을 추가하여 사용자 인증을 통해 메일을 송수신하도록 설정할 수 있습니다. 이는 특히 외부 사용자가 서버에 접속해서 메일을 보내야 할 때 유용합니다. 다음 명령어로 SASL 패키지를 설치합니다.

sudo apt install sasl2-bin

SASL 설정을 활성화하기 위해 /etc/postfix/main.cf 파일에 다음 내용을 추가합니다.

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

SASL의 사용자 계정을 설정하려면 /etc/sasldb2에 계정을 추가할 수 있습니다.

4. TLS/SSL 설정

보안 메일 전송을 위해 TLS 설정을 추가할 수 있습니다. 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

5. 서비스 재시작

설정을 완료한 후 Postfix를 재시작하여 변경 사항을 반영합니다.

sudo systemctl restart postfix

6. 방화벽 설정

Postfix가 외부에서 메일을 수신할 수 있도록 방화벽 규칙을 설정합니다. SMTP는 기본적으로 포트 25를 사용합니다.

sudo ufw allow Postfix
sudo ufw reload

7. 테스트

이제 메일 서버가 제대로 동작하는지 테스트할 수 있습니다. mail 명령을 사용하여 테스트 메일을 전송할 수 있습니다.

echo "Test email body" | mail -s "Test Subject" user@example.com

이후 /var/log/mail.log 파일에서 로그를 확인하여 메일이 성공적으로 전송되었는지 확인할 수 있습니다.

sudo tail -f /var/log/mail.log

위 과정을 따라 Postfix를 사용한 SMTP 메일 서버를 구성할 수 있습니다. 필요에 따라 더 정교한 설정이나 추가 기능을 고려할 수 있습니다.

MailHog는 로컬 개발 환경에서 사용하기 좋은 이메일 테스트 도구로, 메일을 수신하고 간단한 웹 UI를 통해 메일을 확인할 수 있는 도구입니다. SMTP 서버로 기능하면서도 실제 메일을 외부로 보내지 않고, 대신 웹 인터페이스에서 메일 내용을 확인할 수 있어 매우 유용합니다. MailHog를 Ubuntu에 설치하고 구성하는 방법입니다.

1. MailHog 설치

MailHog의 바이너리를 다운로드한 후 설치하는 방법입니다.

# MailHog 바이너리 다운로드
wget https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64

# 실행 가능하도록 권한 변경
chmod +x MailHog_linux_amd64

# 시스템 전역에서 사용 가능하도록 이동
sudo mv MailHog_linux_amd64 /usr/local/bin/mailhog

2. MailHog 실행

MailHog를 실행하여 메일을 수신받을 수 있도록 설정합니다. 기본적으로 SMTP 포트 1025번을 사용하고, 웹 인터페이스는 8025번 포트에서 접근 가능합니다.

mailhog

별도로 백그라운드에서 실행하거나, 시스템 서비스로 등록하고 싶으면 다음 단계를 따르세요.

3. MailHog를 서비스로 등록

MailHog를 시스템 서비스로 등록하여 서버 시작 시 자동으로 실행되도록 구성할 수 있습니다.

  1. 시스템 서비스 파일 생성
    sudo nano /etc/systemd/system/mailhog.service
  2. 아래와 같이 서비스를 설정
    [Unit]
    Description=MailHog Email Testing Tool
    After=network.target
    
    [Service]
    User=ubuntu
    ExecStart=/usr/local/bin/mailhog
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  3. 서비스를 활성화하고 시작
    sudo systemctl daemon-reload
    sudo systemctl enable mailhog
    sudo systemctl start mailhog

4. Postfix와 MailHog 연동

MailHog와 Postfix를 연동하여 Postfix가 보낸 메일을 MailHog에서 수신하고 웹 UI에서 확인할 수 있도록 설정합니다. /etc/postfix/main.cf 파일을 열어 Postfix의 relayhost 설정을 MailHog로 지정합니다.

sudo nano /etc/postfix/main.cf

다음 줄을 추가하거나 수정하세요.

relayhost = [127.0.0.1]:1025

Postfix를 다시 시작하여 변경 사항을 적용합니다.

sudo systemctl restart postfix

5. 웹 인터페이스에서 메일 확인

MailHog가 실행되면 웹 브라우저에서 다음 주소로 접속하여 수신된 메일을 확인할 수 있습니다.

http://localhost:8025

원격 서버에서 실행 중이라면 서버의 IP 주소와 포트를 사용하여 외부에서 접속할 수 있습니다.

http://서버_IP:8025

6. 테스트

Postfix가 MailHog로 메일을 전달하는지 확인하기 위해 메일을 보내는 테스트를 진행합니다.

echo "Test email body" | mail -s "Test Subject" user@example.com

이메일이 정상적으로 MailHog에 수신되면 웹 UI에서 확인할 수 있습니다.

7. 방화벽 설정

MailHog의 웹 UI에 외부에서 접근하려면 방화벽 규칙을 추가해 포트 8025를 허용해야 합니다.

sudo ufw allow 8025
sudo ufw reload

이제 MailHog를 통해 이메일을 수신하고 웹에서 확인할 수 있습니다. MailHog는 개발 환경에서 이메일 테스트 용도로 매우 유용하며, 실제 메일 전송 없이 테스트할 수 있다는 점이 큰 장점입니다.

728x90

댓글