Mailgun으로 이메일 보내기


Google Cloud는 Mailgun과 협력하여 프로그래매틱 API, 로그 보관, 이메일 맞춤설정, 분석, 이메일 검증이 포함된 이메일 서비스를 제공합니다.

다음 안내에서는 Mailgun을 Postfix가 있는 이메일 릴레이로 구성하는 방법을 보여줍니다.

시작하기 전에

  1. Google Cloud Marketplace에서 가입하고 새 Mailgun 계정을 만듭니다.

  2. 사용자 인증 정보를 가져옵니다. 이 안내를 따르려면 Mailgun SMTP 사용자 이름, 비밀번호, 호스트 이름을 알고 있어야 합니다. Mailgun 제어판의 Domains(도메인) 섹션에서 사용자 이름 및 비밀번호를 확인합니다.

    Mailgun에서 도메인이 구성된 방식에 따라 SMTP 호스트 이름은 smtp.mailgun.org 또는 smtp.eu.mailgun.org입니다.

  3. TCP 포트 2525에서 나가는 트래픽을 허용하도록 방화벽 규칙을 구성합니다.

Mailgun을 Postfix 관련 메일 릴레이로 구성

Mailgun을 메일 릴레이로 구성하면 Postfix 메일 전송 에이전트에서 원격 전달용으로 지정된 이메일을 전달할 수 있습니다.

  1. SSH를 사용하여 인스턴스에 연결합니다.

    gcloud compute ssh [INSTANCE_NAME]
    

    여기서 [INSTANCE_NAME]은 이메일을 보내는 VM 인스턴스의 이름입니다.

  2. 수퍼유저가 된 후 안전한 umask를 설정합니다.

    user@test-instance:~$ sudo su -
    
    root@test-instance:~# umask 077
    
  3. Postfix Mail Transport Agent를 설치합니다.

    Debian

    root@test-instance:~# apt update && apt -y install postfix libsasl2-modules
    

    CentOS

    root@test-instance:~# yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  4. 메시지가 표시되면 Local Only 구성을 선택하고 도메인 이름의 기본 선택 항목을 수락합니다.

  5. Postfix 구성 옵션을 수정합니다. Postfix 구성 옵션은 main.cf 파일에 설정되어 있습니다. 원하는 텍스트 편집기로 파일을 엽니다.

    root@test-instance:~# vi /etc/postfix/main.cf
    
  6. 다음과 같은 줄이 있는 경우 주석 처리합니다.

    # default_transport = error
    # relay_transport = error
    
  7. 파일 끝에 다음 줄을 추가하여 Mailgun SMTP 서비스를 추가합니다.

    relayhost = [smtp.mailgun.org]:2525
    
  8. SSL/TLS 지원을 적용하고 이러한 요청에 SMTP 인증을 구성하려면 파일 끝에 다음 줄을 추가합니다. SASL(단순 액세스 및 보안 레이어) 모듈은 Postfix 구성에서 인증을 처리합니다.

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    
  9. 변경사항을 저장하고 파일을 닫습니다.

  10. SASL 비밀번호 맵을 생성합니다.

    1. 표준 입력용으로 준비된 새 비밀번호 파일을 만듭니다.

      root@test-instance:~# cat > /etc/postfix/sasl_passwd << EOF
      
    2. 프롬프트에서 YOUR_SMTP_LOGINYOUR_SMTP_PASSWORD를 사용자 인증 정보로 바꾸어 서비스 세부정보를 입력합니다. 도메인별 사용자 인증 정보를 보거나 변경하는 방법은 Mailgun 도움말을 참조하세요.

      > [smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
      
    3. 구분 기호 EOF를 입력하여 파일을 저장한 후 닫습니다.

      > EOF
      
  11. postmap 유틸리티를 사용하여 .db 파일을 생성합니다.

    root@test-instance:~# postmap /etc/postfix/sasl_passwd
    
    root@test-instance:~# ls -l /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    68 Jun  1 10:50 /etc/postfix/sasl_passwd
    -rw------- 1 root root 12288 Jun  1 10:51 /etc/postfix/sasl_passwd.db
    
  12. 다음으로, 사용자 인증 정보가 들어 있는 파일은 더 이상 필요 없으므로 삭제합니다.

    root@test-instance:~# rm /etc/postfix/sasl_passwd
    
  13. .db 파일에 대한 권한을 설정합니다.

    root@test-instance:~# chmod 600 /etc/postfix/sasl_passwd.db
    
    root@test-instance:~# ls -la /etc/postfix/sasl_passwd.db
    
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  14. 마지막으로 구성을 새로고침하여 수정된 매개변수를 로드합니다.

    Debian

    root@test-wheezy:~# /etc/init.d/postfix restart
    

    CentOS

    [root@test-centos ~]# postfix reload
    

  15. 구성을 테스트합니다. mailx 또는 mailutils 패키지를 설치하고 구성을 테스트합니다.

    Debian

    root@test-wheezy:~# apt -y install mailutils
    

    CentOS

    [root@test-centos ~]# yum install mailx -y
    

    테스트 메시지를 보냅니다.

    root@test-instance:~# echo 'Test passed.' | mail -s 'Test-Email' EMAIL@EXAMPLE.COM
    

    시스템 로그에서 status가 포함된 상태 행과 성공한 서버 응답 코드 (250)을 찾습니다.

    Debian

    root@test-wheezy:~# tail -n 5 /var/log/syslog
    

    CentOS

    [root@test-centos ~]# tail -n 5 /var/log/maillog
    

메시지 추적 및 라우팅을 비롯한 다른 주제에 대한 자세한 예시와 정보는 Mailgun 문서를 참조하세요.

Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항을 살펴보세요. Cloud 아키텍처 센터를 살펴보세요.