Postfix를 이용한 Gmail SMTP 설정으로 메일 전송 설정

조승빈·2025년 3월 14일
post-thumbnail

목적

mysql에서 매일 자정 자동으로 백업을 진행하고 메일로 결과를 보내는게 목적이다.


환경

  • 운영 체제: Ubuntu 20.04 LTS
  • 메일 서버: Postfix
  • SMTP 서버: Gmail
  • 메일 전송 방식: SMTP(Secure Mail Transfer Protocol)
  • 배포한 도메인: devjsb.store

Postfix 설치

  1. Postfix 설치

    sudo apt update
    sudo apt install postfix mailutils

    설치 중 General type of mail configuration을 묻는 창에서 Internet Site를 선택한다.

  1. 설정 파일 확인
    기본적으로 /etc/postfix/main.cf 파일이 메일 서버 설정을 담당한다.

Postfix 설정 파일 수정

main.cf 파일 수정

main.cf 파일을 열어 설정을 수정.

sudo vi /etc/postfix/main.cf

기본적인 설정을 다음과 같이 수정:

# 기본적으로 사용되는 도메인 이름
myhostname = devjsb.store
mydomain = devjsb.store
myorigin = $mydomain

# 메일 큐 크기 및 로그 파일 설정
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix/sbin
data_directory = /var/lib/postfix
setgid_group = postdrop
mail_owner = postfix
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 메일 전송 방법 설정
inet_interfaces = all
inet_protocols = ipv4

# Gmail SMTP 서버를 통한 메일 전송 설정
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:your-email@gmail.com:your-app-password
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

# 메일 전송 로그 설정
maillog_file = /var/log/mail.log
debug_peer_level = 2
  • relayhost: Gmail SMTP 서버 설정.
  • smtp_sasl_password_maps: Gmail 이메일과 앱 비밀번호를 사용하여 인증.
  • smtp_tls_security_level: 이메일 보안을 위해 암호화를 설정.

변경사항 저장 후 Postfix 재시작

설정 파일을 저장한 후, Postfix를 재시작한다.

sudo systemctl restart postfix

Gmail 앱 비밀번호 생성

Gmail 계정 로그인

Google 계정 보안 설정 페이지로 이동한다.

2단계 인증 활성화

2단계 인증을 활성화합니다. 활성화 후, '앱 비밀번호' 옵션을 선택한다.

앱 비밀번호 생성

앱 비밀번호를 생성. 여기서 앱 이름은 Mail로 설정하고 비밀번호를 생성한다.

앱 비밀번호 사용

생성된 앱 비밀번호를 /etc/postfix/main.cf 파일의 smtp_sasl_password_maps 항목에 입력한다.

입력시 공백없이 16자리 입력하면 된다.


테스트 메일 발송

메일 발송 테스트

테스트 메일을 발송하려면, 아래 명령어를 사용한다.

echo "Test email body" | mail -s "Test email subject" your-email@gmail.com

2. 로그 확인

이메일이 정상적으로 발송되었는지 확인하려면, 메일 로그를 확인한다.

tail -f /var/log/mail.log

status=sent 메시지가 확인되면 메일 발송이 성공적으로 발송된 것을 확인한다.

profile
평범

0개의 댓글