

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon SES와 Postfix 통합
<a name="postfix"></a>

Postfix는 광범위하게 사용되는 Sendmail Message Transfer Agent(MTA)의 대체 프로그램입니다. Postfix에 대한 자세한 내용은 [http://www.postfix.org](http://www.postfix.org)를 참조하세요. 이 주제의 절차는 Linux, macOS 또는 Unix에 적용됩니다.

**참고**  
Postfix는 타사 애플리케이션이며 Amazon Web Services에서 개발하거나 지원하지 않습니다. 이 섹션의 절차는 정보 제공이 목적이며 사전 통지 없이 변경될 수 있습니다.

## 사전 조건
<a name="send-email-postfix-prereqs"></a>

이 섹션의 절차를 완료하려면 다음 작업을 수행해야 합니다.
+ 시스템에 설치되어 있는 경우 Sendmail 애플리케이션을 제거합니다. 이 단계를 완료하는 절차는 사용하는 운영 체제에 따라 다릅니다.
**중요**  
*sendmail*에 대한 다음 참조는 Sendmail 애플리케이션과 혼동하지 않도록 Postfix 명령 `sendmail`을 참조합니다.
+ Postfix를 설치합니다. 이 단계를 완료하는 절차는 사용하는 운영 체제에 따라 다릅니다.
+ SASL 인증 패키지를 설치합니다. 이 단계를 완료하는 절차는 사용하는 운영 체제에 따라 다릅니다. 예를 들어 RedHat 기반 시스템을 사용할 경우 `cyrus-sasl-plain` 패키지를 설치해야 합니다. Debian 또는 Ubuntu 기반 시스템을 사용할 경우에는 `libsasl2-modules` 패키지를 설치해야 합니다.
+ 이메일 전송에 사용할 이메일 주소 또는 도메인을 확인합니다. 자세한 내용은 [이메일 주소 자격 증명 생성](creating-identities.md#verify-email-addresses-procedure) 단원을 참조하십시오.
+ 계정이 아직 샌드박스에 있으면 확인된 이메일 주소에만 이메일을 전송할 수 있습니다. 자세한 내용은 [프로덕션 액세스 요청(Amazon SES 샌드박스에서 이동)](request-production-access.md) 단원을 참조하세요.

## Postfix 구성
<a name="send-email-postfix"></a>

Postfix를 사용하여 Amazon SES를 통해 이메일을 전송하도록 메일 서버를 구성하는 다음 절차를 완료하세요.

**Postfix를 구성하려면**

1. 명령줄 프롬프트에 다음 명령을 입력합니다.

   ```
   sudo postconf -e "relayhost = [email-smtp.us-west-2.amazonaws.com]:587" \
   "smtp_sasl_auth_enable = yes" \
   "smtp_sasl_security_options = noanonymous" \
   "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" \
   "smtp_use_tls = yes" \
   "smtp_tls_security_level = secure" \
   "smtp_tls_note_starttls_offer = yes"
   ```
**참고**  
미국 서부(오레곤) 이외의 AWS 리전에서 Amazon SES를 사용하는 경우 이전 명령의 *email-smtp.us-west-2.amazonaws.com* 해당 리전의 SMTP 엔드포인트로 바꿉니다. 자세한 내용은 [리전 및 Amazon SES](regions.md) 단원을 참조하십시오.

1. 텍스트 편집기에서 `/etc/postfix/master.cf` 파일을 엽니다. 다음 항목 검색:

   ```
   -o smtp_fallback_relay=
   ```

   이 항목이 있는 경우 열의 시작 부분에 `#`(해시) 문자를 붙여 주석을 남깁니다. 파일을 저장하고 닫습니다.

   그렇지 않은 경우 이 항목이 없으면 다음 단계로 계속 진행하세요.

1. 텍스트 편집기에서 `/etc/postfix/sasl_passwd` 파일을 엽니다. 파일이 없으면 새로 만듭니다.

1. 다음 열을 `/etc/postfix/sasl_passwd`에 추가합니다.

   ```
   [email-smtp.us-west-2.amazonaws.com]:587 SMTPUSERNAME:SMTPPASSWORD
   ```
**참고**  
*SMTPUSERNAME* 및 *SMTPPASSWORD*를 해당 SMTP 로그인 보안 인증 정보로 바꿉니다. SMTP 로그인 보안 인증 정보는 AWS 액세스 키 ID 및 비밀 액세스 키와 동일하지 않습니다. 자격 증명에 대한 자세한 내용은 [Amazon SES SMTP 자격 증명 획득](smtp-credentials.md) 단원을 참조하세요.  
미국 서부(오레곤) 이외의 AWS 리전에서 Amazon SES를 사용하는 경우 이전 예제의 *email-smtp.us-west-2.amazonaws.com* 해당 리전의 SMTP 엔드포인트로 바꿉니다. 자세한 내용은 [리전 및 Amazon SES](regions.md) 단원을 참조하십시오.

   `sasl_passwd`를 저장하고 닫습니다.

1. 명령 프롬프트에서 다음 명령을 입력하여 SMTP 자격 증명이 포함된 해시 맵 데이터베이스 파일을 만듭니다.

   ```
   sudo postmap hash:/etc/postfix/sasl_passwd
   ```

1. (선택 사항) 이전 단계에서 만든 `/etc/postfix/sasl_passwd` 및 `/etc/postfix/sasl_passwd.db` 파일은 암호화되지 않습니다. 이 파일에는 SMTP 자격 증명이 포함되기 때문에 액세스를 제한하기 위해 파일의 소유권 및 권한을 수정하는 것이 좋습니다. 이 파일에 대한 액세스를 제한하려면:

   1. 명령 프롬프트에서 다음 명령을 입력하여 파일의 소유권을 변경합니다.

      ```
      sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
      ```

   1. 명령 프롬프트에서 다음 명령을 사용하여 루트 사용자만 읽거나 쓸 수 있도록 파일 권한을 변경합니다.

      ```
      sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
      ```

1. CA 인증서를 찾을 위치를 Postfix에 지정합니다(Amazon SES 서버 인증서 확인 필요). 이 단계에서 사용하는 명령은 운영 체제에 따라 다릅니다.
   + Amazon Linux, Red Hat Enterprise Linux 또는 관련 배포를 사용하는 경우 다음 명령을 입력합니다.

     ```
     sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
     ```
   + Ubuntu 또는 관련 배포를 사용하는 경우 다음 명령을 입력합니다.

     ```
     sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt'
     ```
   + macOS를 사용하는 경우 시스템 키 체인에서 인증서를 생성할 수 있습니다. 인증서를 생성하려면 명령줄에 다음 명령을 입력합니다.

     ```
     sudo security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain | sudo tee /etc/ssl/certs/ca-bundle.crt > /dev/null
     ```

     인증서를 생성한 후에 다음 명령을 입력합니다.

     ```
     sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt'
     ```

1. Postfix 서버를 시작하려면(또는 서버가 이미 실행 중인 경우 구성 설정을 다시 로드하려면) 다음 명령을 입력합니다.

   ```
   sudo postfix start; sudo postfix reload
   ```

1. 명령줄에 다음을 입력하고 각 줄 이후에 Enter를 눌러 테스트 이메일을 보냅니다. *sender@example.com*을 From 이메일 주소로 바꿉니다. From 주소는 Amazon SES에 사용할 수 있는지 확인해야 합니다. *recipient@example.com*을 대상 주소로 바꿉니다. 계정이 아직 샌드박스 환경에 있을 경우 수신자 주소도 확인해야 합니다. 마지막으로 메시지의 마지막 열에는 다른 콘텐츠가 없는 상태로 하나의 마침표(.)가 포함되어 있어야 합니다.

   ```
   sendmail -f sender@example.com recipient@example.com
   From: Sender Name <sender@example.com>
   Subject: Amazon SES Test                
   This message was sent using Amazon SES.                
   .
   ```

1. 수신자 주소와 연결된 메일박스를 확인합니다. 이메일이 도착하지 않으면 정크 메일 폴더를 확인합니다. 그래도 이메일을 찾을 수 없으면 자세한 내용은 이메일을 전송하기 위해 사용한 시스템의 메일 로그(일반적으로 `/var/log/maillog`에 있음)를 확인합니다.

## 고급 사용 예
<a name="send-email-postfix-advanced"></a>

이 예는 [구성 세트](using-configuration-sets.md)를 사용하는 이메일 및 일반 텍스트와 HTML 버전의 메시지를 첨부 파일과 함께 모두 보내기 위해 MIME 멀티파트 인코딩을 사용하는 이메일의 전송 방법을 보여 줍니다. 또한 클릭 이벤트를 분류하는 데 사용할 수 있는 [링크 태그](faqs-metrics.md#sending-metric-faqs-clicks-q5)도 포함되어 있습니다. 이메일의 콘텐츠는 외부 파일에 지정되므로, Postfix 세션에서 수동으로 명령을 입력할 필요가 없습니다.

**Postfix를 사용하여 멀티파트 MIME 이메일을 전송하려면**

1. 텍스트 편집기에서 `mime-email.txt`라는 새로운 파일을 만듭니다.

1. 텍스트 파일에서 빨간색으로 표시된 값을 계정의 해당 값으로 바꾸고 다음 콘텐츠를 붙여 넣습니다.

   ```
   X-SES-CONFIGURATION-SET: ConfigSet
   From:Sender Name <sender@example.com>
   Subject:Amazon SES Test
   MIME-Version: 1.0
   Content-Type: multipart/mixed; boundary="YWVhZDFlY2QzMGQ2N2U0YTZmODU"
   
   --YWVhZDFlY2QzMGQ2N2U0YTZmODU
   Content-Type: multipart/alternative; boundary="3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ"
   
   --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ
   Content-Type: text/plain; charset=UTF-8
   Content-Transfer-Encoding: quoted-printable
   
   Amazon SES Test
   
   This message was sent from Amazon SES using the SMTP interface.
   
   For more information, see:
   http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html
   
   --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ
   Content-Type: text/html; charset=UTF-8
   Content-Transfer-Encoding: quoted-printable
   
   <html>
     <head>
   </head>
     <body>
       <h1>Amazon SES Test</h1>
         <p>This message was sent from Amazon SES using the SMTP interface.</p>
         <p>For more information, see
         <a ses:tags="samplekey0:samplevalue0;samplekey1:samplevalue1;" 
         href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html">
         Using the Amazon SES SMTP Interface to Send Email</a> in the <em>Amazon SES
         Developer Guide</em>.</p>
     </body>
   </html>
   --3NjM0N2QwMTE4MWQ0ZTg2NTYxZQ--
   --YWVhZDFlY2QzMGQ2N2U0YTZmODU
   Content-Type: application/octet-stream
   MIME-Version: 1.0
   Content-Transfer-Encoding: base64
   Content-Disposition: attachment; filename="customers.txt"
   
   SUQsRmlyc3ROYW1lLExhc3ROYW1lLENvdW50cnkKMzQ4LEpvaG4sU3RpbGVzLENh
   bmFkYQo5MjM4OSxKaWUsTGl1LENoaW5hCjczNCxTaGlybGV5LFJvZHJpZ3VleixV
   bml0ZWQgU3RhdGVzCjI4OTMsQW5heWEsSXllbmdhcixJbmRpYQ==
   --YWVhZDFlY2QzMGQ2N2U0YTZmODU--
   ```

   파일을 저장하고 닫습니다.

1. 명령줄 프롬프트에 다음 명령을 입력합니다. *sender@example.com*을 사용자의 이메일 주소로 바꾸고 *recipient@example.com*을 수신자의 이메일 주소로 바꿉니다.

   ```
   sendmail -f sender@example.com recipient@example.com < mime-email.txt
   ```

   명령이 성공적으로 실행되면 출력을 제공하지 않고 종료됩니다.

1. 이메일의 받은 편지함을 확인합니다. 메시지가 전송되지 않은 경우 시스템의 메일 로그를 확인합니다.