

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

# Amazon SES SMTP 인터페이스를 사용하여 이메일 보내기
<a name="send-email-smtp"></a>

Amazon SES를 통해 프로덕션 이메일을 보내려면 SMTP(Simple Mail Transfer Protocol) 인터페이스 또는 Amazon SES API를 사용할 수 있습니다. Amazon SES API에 대한 자세한 내용은 [Amazon SES API를 사용하여 이메일 보내기](send-email-api.md) 섹션을 참조하세요. 이 섹션에서는 SMTP 인터페이스에 대해 설명합니다.

Amazon SES는 인터넷에서 가장 일반적인 이메일 프로토콜인 SMTP를 사용하여 이메일을 전송합니다. 다양한 SMTP 지원 프로그래밍 언어 및 소프트웨어에서 Amazon SES SMTP 인터페이스에 연결하여 Amazon SES를 통해 이메일을 보낼 수 있습니다. 이 섹션에서는 Amazon SES SMTP 자격 증명을 받는 방법, Amazon SES SMTP 인터페이스를 사용하여 이메일을 보내는 방법, 이메일 전송에 Amazon SES를 사용하도록 몇 가지 소프트웨어 및 메일 서버를 구성하는 방법을 설명합니다.

SMTP 인터페이스를 통해 Amazon SES를 사용할 때 발생할 수 있는 일반적인 문제에 대한 해결책은 [Amazon SES SMTP 문제](troubleshoot-smtp.md) 섹션을 참조하세요.

## SMTP를 통한 이메일 전송 요구 사항
<a name="send-email-smtp-requirements"></a>

Amazon SES SMTP 인터페이스를 사용하여 이메일을 보내려면 다음 항목이 필요합니다.
+ SMTP 엔드포인트 주소입니다. Amazon SES SMTP 엔드포인트 목록은 [Amazon SES SMTP 엔드포인트에 연결](smtp-connect.md) 단원을 참조하십시오.
+ SMTP 인터페이스 포트 번호. 포트 번호는 연결 방법에 따라 다릅니다. 자세한 내용은 [Amazon SES SMTP 엔드포인트에 연결](smtp-connect.md) 단원을 참조하세요.
+ SMTP 사용자 이름 및 암호. SMTP 자격 증명은 각 AWS 리전마다 고유합니다. SMTP 인터페이스를 사용하여 여러 AWS 리전에서 이메일을 전송하려면 리전별로 SMTP 보안 인증 정보가 필요합니다.
**중요**  
SMTP 자격 증명은 AWS 액세스 키 또는 Amazon SES 콘솔에 로그인하는 데 사용하는 자격 증명과 동일하지 않습니다. SMTP 보안 인증 정보를 생성하는 방법에 대한 자세한 내용은 [Amazon SES SMTP 자격 증명 획득](smtp-credentials.md) 섹션을 참조하세요.
+ TLS(전송 계층 보안)를 사용하여 통신할 수 있는 클라이언트 소프트웨어. 자세한 내용은 [Amazon SES SMTP 엔드포인트에 연결](smtp-connect.md) 단원을 참조하세요.
+ Amazon SES에서 확인한 이메일 주소. 자세한 내용은 [Amazon SES에서 확인된 자격 증명](verify-addresses-and-domains.md) 단원을 참조하세요.
+ 대량의 이메일을 보내려는 경우 높은 발신 할당량. 자세한 내용은 [Amazon SES 발신 한도 관리](manage-sending-quotas.md) 단원을 참조하십시오.

## SMTP를 통해 전자 메일을 보내는 방법
<a name="send-email-methods"></a>

다음 방법 중 하나를 통해 SMTP를 통해 이메일을 보낼 수 있습니다.
+ Amazon SES SMTP 인터페이스를 통해 이메일을 보내도록 이러한 SMTP 지원 소프트웨어를 구성하려면 [소프트웨어 패키지를 사용하여 Amazon SES를 통해 이메일 보내기](send-email-smtp-software-package.md) 섹션을 참조하세요.
+ Amazon SES를 통해 이메일을 보내도록 애플리케이션을 프로그래밍하는 방법은 [프로그래밍 방식으로 Amazon SES SMTP 인터페이스를 통해 이메일 전송](send-using-smtp-programmatically.md) 섹션을 참조하세요.
+ Amazon SES를 통해 발신 메일을 보내도록 기존 이메일 서버를 구성하는 방법은 [기존 이메일 서버와 Amazon SES 통합](send-email-smtp-existing-server.md) 섹션을 참조하세요.
+ 명령줄을 사용하여 Amazon SES SMTP 인터페이스와 상호 작용하는 방법(테스트에 유용할 수 있음)은 [명령줄을 사용하여 Amazon SES SMTP 인터페이스에 대한 연결 테스트](send-email-smtp-client-command-line.md) 섹션을 참조하세요.

SMTP 응답 코드의 목록은 [Amazon SES에서 반환하는 SMTP 응답 코드](troubleshoot-smtp.md#troubleshoot-smtp-response-codes)을(를) 참조하세요.

## 제공할 이메일 정보
<a name="smtp-parameters"></a>

SMTP 인터페이스를 통해 Amazon SES에 액세스하는 경우 SMTP 클라이언트 애플리케이션이 메시지를 수집합니다. 따라서 제공해야 할 정보는 어떤 애플리케이션을 사용하는가에 따라 달라집니다. 클라이언트와 서버 간의 SMTP 교환에는 최소한 다음이 필요합니다.
+ 소스 주소
+ 대상 주소
+ 메시지 데이터

SMTP 인터페이스를 사용 중이고 피드백 전달이 활성화된 상태라면 반송 메일, 수신 거부 및 전송 알림이 "MAIL FROM" 주소로 전송됩니다. 사용자가 지정한 "Reply-To" 주소는 사용되지 않습니다.



# Amazon SES SMTP 자격 증명 획득
<a name="smtp-credentials"></a>

SES SMTP 인터페이스에 액세스하려면 Amazon SES SMTP 보안 인증 정보가 필요합니다.

SES SMTP 인터페이스를 통해 이메일을 보내는 데 사용하는 자격 증명은 각 AWS 리전에 고유합니다. SES SMTP 인터페이스를 사용하여 둘 이상의 리전에서 이메일을 전송하는 경우, 사용할 계획 중인 각 리전에 대해 SMTP 자격 증명 세트를 생성해야 합니다.

SMTP 암호는 AWS 보안 액세스 키와 다릅니다. 자격 증명에 대한 자세한 내용은 [Amazon SES 자격 증명 유형](send-email-concepts-credentials.md) 단원을 참조하세요.

**참고**  
현재 사용 가능한 SMTP 엔드포인트 목록은 *AWS 일반 참조*의 [SMTP 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/ses.html#ses_smtp_endpoints)를 참조하세요.

## SES 콘솔을 사용하여 SES SMTP 보안 인증 정보 받기
<a name="smtp-credentials-console"></a>

**요구 사항**  
IAM 사용자는 SES SMTP 보안 인증 정보를 생성할 수 있지만 IAM을 사용하여 SES SMTP 보안 인증 정보를 생성하기 때문에 사용자의 정책이 사용자에게 IAM 자체를 사용할 권한을 부여해야 합니다. IAM 정책은 사용자가 `iam:ListUsers`, `iam:CreateUser`, `iam:CreateAccessKey` 및 `iam:PutUserPolicy`(이)라는 IAM 작업을 수행하도록 허용해야 합니다. 콘솔을 사용하여 SES SMTP 자격 증명을 생성하려는 경우 IAM 사용자에게 이러한 권한이 없으면 사용자 계정은 *‘iam:ListUsers를 수행할 권한이 없다’*는 오류가 표시됩니다.

**중요**  
위에서 참조한 IAM 작업에는 서비스에서 리소스 권한을 부여하거나 수정할 수 있는 권한을 부여하기 때문에 IAM 수준이 가장 높은 [권한 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_understand-policy-summary-access-level-summaries.html#access_policies_access-level) 액세스 수준이 있습니다. 따라서 AWS 계정의 보안을 개선하려면 권한 관리 액세스 수준 분류를 포함하는 이러한 정책을 제한하거나 정기적으로 모니터링하는 것이 좋습니다.

**SMTP 자격 증명을 만들려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/) Amazon SES 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **SMTP settings**(SMTP 설정)를 선택합니다. 그러면 **Simple Mail Transfer Protocol (SMTP) settings**(SMTP(Simple Mail Transfer Protocol) 설정) 페이지가 열립니다.

1. 오른쪽 상단에서 **Create SMTP Credentials**(SMTP 보안 인증 생성)를 선택합니다. IAM 콘솔이 열립니다.

1. (선택 사항) 이미 생성한 SMTP 사용자를 보거나 편집하거나 삭제해야 하는 경우 오른쪽 하단에서 **Manage my existing SMTP credentials**(기존 SMTP 보안 인증 관리)를 선택합니다. IAM 콘솔이 열립니다. SMTP 보안 인증 관리에 대한 세부 정보는 다음 절차에 따라 제공됩니다.

1. **SMTP 사용자 생성**의 **사용자 이름** 필드에 SMTP 사용자의 이름을 입력합니다. 또는 이 필드에 입력된 기본값을 사용할 수 있습니다. 마쳤으면 오른쪽 하단에서 **사용자 생성**을 선택합니다.

1. *SMTP 암호* 아래의 **표시**를 선택하면 SMTP 보안 인증 정보가 화면에 표시됩니다.

1. 이 대화 상자를 닫은 후에는 보안 인증 정보를 보거나 저장할 수 없으므로 **.csv 파일 다운로드**를 선택하여 이러한 보안 인증 정보를 다운로드하거나 복사하여 안전한 장소에 저장하세요.

1. **SES 콘솔로 돌아가기**를 선택합니다.

IAM 콘솔의 **액세스 관리(Access management)**에서 이 절차를 사용하여 생성한 SMTP 보안 인증 정보 목록을 보고 **사용자(Users)**를 선택한 다음 검색 창을 사용하여 SMTP 보안 인증 정보를 할당한 모든 사용자를 찾을 수 있습니다.

IAM 콘솔을 사용하여 기존 SMTP 사용자를 삭제할 수도 있습니다. 사용자 삭제에 대한 자세한 내용은 *IAM 시작 안내서*의 [IAM 사용자 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html)를 참조하세요.

SMTP 암호를 변경하려면 IAM 콘솔에서 기존 SMTP 사용자를 삭제합니다. 그런 다음 이전 절차를 완료하여 새 SMTP 자격 증명 집합을 만듭니다.

## 기존 자격 증명을 변환하여 SES SMTP AWS 자격 증명 획득
<a name="smtp-credentials-convert"></a>

IAM 인터페이스를 사용하여 설정한 사용자가 있는 경우 자격 증명에서 사용자의 SES SMTP AWS 자격 증명을 도출할 수 있습니다.

**중요**  
임시 AWS 자격 증명을 사용하여 SMTP 자격 증명을 추출하지 마십시오. SES SMTP 인터페이스는 임시 보안 인증 정보에서 생성된 SMTP 보안 인증 정보를 지원하지 않습니다.

**IAM 사용자가 SES SMTP 인터페이스를 사용하여 이메일을 보내도록 하는 방법**

1. 다음 절차에 따라이 섹션에 제공된 알고리즘을 사용하여 자격 증명에서 사용자의 SMTP AWS 자격 증명을 도출합니다.

   자격 AWS 증명부터 시작하므로 SMTP 사용자 이름은 AWS 액세스 키 ID와 동일하므로 SMTP 암호만 생성하면 됩니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. **액세스 관리**에서 **정책**을 선택한 다음 **정책 만들기**를 선택합니다.

1. **정책 편집기**에서 **JSON**을 선택하고 편집기에서 예제 코드를 제거합니다.

1. 다음 권한 정책을 편집기에 붙여넣습니다.

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
   "Effect": "Allow",
               "Action": "ses:SendRawEmail",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. **다음**을 선택하고 **정책 이름** 필드에 `AmazonSesSendingAccess`를 입력한 다음 **정책 만들기**를 입력합니다.

1. **액세스 관리**에서 **사용자 그룹**을 선택한 다음 **그룹 만들기**를 선택합니다.

1. **사용자 그룹 이름** 필드에 `AWSSESSendingGroupDoNotRename`을 입력합니다.

1. **그룹에 사용자 추가** 테이블에서 SMTP 사용자를 선택하여 그룹에 이를 추가합니다.

1. **권한 정책 연결** 테이블에서 정책을 선택한 다음 **사용자 그룹 만들기**를 선택하여 이전에 만든 `AmazonSesSendingAccess` 정책을 연결합니다.

IAM에서 SES를 사용하는 방법에 대한 자세한 내용은 [Amazon SES의 Identity and Access Management](control-user-access.md) 섹션을 참조하세요.

**참고**  
IAM 사용자의 SES SMTP 보안 인증 정보를 생성할 수 있지만 SMTP 보안 인증 정보를 생성할 때 별도의 IAM 사용자를 생성하는 것이 좋습니다. 특정 용도로 사용자를 생성하는 것이 좋은 이유에 대한 자세한 내용은 [IAM 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html)를 참조하세요.

다음 의사 코드는 AWS 보안 액세스 키를 SES SMTP 암호로 변환하는 알고리즘을 보여줍니다.

```
 1. // Modify this variable to include your AWS secret access key
 2. key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY";
 3.             
 4. // Modify this variable to refer to the AWS Region that you want to use to send email.
 5. region = "us-west-2";
 6.             
 7. // The values of the following variables should always stay the same.
 8. date = "11111111";
 9. service = "ses";
10. terminal = "aws4_request";
11. message = "SendRawEmail";
12. version = 0x04;
13. 
14. kDate = HmacSha256(date, "AWS4" + key);
15. kRegion = HmacSha256(region, kDate);
16. kService = HmacSha256(service, kRegion);
17. kTerminal = HmacSha256(terminal, kService);
18. kMessage = HmacSha256(message, kTerminal);
19. signatureAndVersion = Concatenate(version, kMessage);
20. smtpPassword = Base64(signatureAndVersion);
```

일부 프로그래밍 언어에는 IAM 보안 액세스 키를 SMTP 암호로 변환하는 데 사용할 수 있는 라이브러리가 포함되어 있습니다. 이 섹션에는 Python을 사용하여 AWS 보안 액세스 키를 SES SMTP 암호로 변환하는 데 사용할 수 있는 코드 예제가 포함되어 있습니다.

**참고**  
다음 예에는 Python 3.6에 도입된 **f-strings**가 사용됩니다. 이전 버전을 사용하면 작동하지 않습니다.
다음 예에서 SMTP\$1REGIONS 목록은 단순한 예입니다. 각 AWS 리전에 대해 SMTP 자격 증명이 필요하므로 이메일을 보내려는 리전에 따라 실제 리전 목록이 더 짧거나 길어질 수 있습니다.

------
#### [ Python ]

```
#!/usr/bin/env python3

import hmac
import hashlib
import base64
import argparse

SMTP_REGIONS = [
    "us-east-2",  # US East (Ohio)
    "us-east-1",  # US East (N. Virginia)
    "us-west-2",  # US West (Oregon)
    "ap-south-1",  # Asia Pacific (Mumbai)
    "ap-northeast-2",  # Asia Pacific (Seoul)
    "ap-southeast-1",  # Asia Pacific (Singapore)
    "ap-southeast-2",  # Asia Pacific (Sydney)
    "ap-northeast-1",  # Asia Pacific (Tokyo)
    "ca-central-1",  # Canada (Central)
    "eu-central-1",  # Europe (Frankfurt)
    "eu-west-1",  # Europe (Ireland)
    "eu-west-2",  # Europe (London)
    "eu-south-1",  # Europe (Milan)
    "eu-north-1",  # Europe (Stockholm)
    "sa-east-1",  # South America (Sao Paulo)
    "us-gov-west-1",  # AWS GovCloud (US)
    "us-gov-east-1",  # AWS GovCloud (US)
]

# These values are required to calculate the signature. Do not change them.
DATE = "11111111"
SERVICE = "ses"
MESSAGE = "SendRawEmail"
TERMINAL = "aws4_request"
VERSION = 0x04


def sign(key, msg):
    return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()


def calculate_key(secret_access_key, region):
    if region not in SMTP_REGIONS:
        raise ValueError(f"The {region} Region doesn't have an SMTP endpoint.")

    signature = sign(("AWS4" + secret_access_key).encode("utf-8"), DATE)
    signature = sign(signature, region)
    signature = sign(signature, SERVICE)
    signature = sign(signature, TERMINAL)
    signature = sign(signature, MESSAGE)
    signature_and_version = bytes([VERSION]) + signature
    smtp_password = base64.b64encode(signature_and_version)
    return smtp_password.decode("utf-8")


def main():
    parser = argparse.ArgumentParser(
        description="Convert a Secret Access Key to an SMTP password."
    )
    parser.add_argument("secret", help="The Secret Access Key to convert.")
    parser.add_argument(
        "region",
        help="The AWS Region where the SMTP password will be used.",
        choices=SMTP_REGIONS,
    )
    args = parser.parse_args()
    print(calculate_key(args.secret, args.region))


if __name__ == "__main__":
    main()
```

이 스크립트를 사용하여 SMTP 암호를 얻으려면 이전 코드를 `smtp_credentials_generate.py`(으)로 저장합니다. 그런 다음 명령줄에서 다음 명령을 실행합니다.

```
python path/to/smtp_credentials_generate.py wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY us-east-1
```

위의 명령에서 다음을 수행합니다.
+ *path/to/*를 `smtp_credentials_generate.py`을(를) 저장한 위치의 경로로 바꿉니다.
+ *wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY*를 SMTP 암호로 전환하려는 시크릿 액세스 키로 대체합니다.
+ *us-east-1*을 SMTP 자격 증명을 사용하려는 AWS 리전으로 바꿉니다.

이 스크립트가 성공적으로 실행되면 SMTP 암호만 출력됩니다.

------

## 기존 인라인 정책에서 그룹 정책으로 SMTP 사용자 마이그레이션(보안 권장 사항)
<a name="migrate-inline-policy-to-group"></a>

**중요**  
2024년 9월 6일 이전에 SES SMTP 자격 증명을 만든 경우 인라인 정책과 태그가 SMTP 사용자에게 연결되어 있습니다. SES는 인라인 정책에서 벗어나 보안 권장 사항과 동일하게 수행할 것을 권장합니다.

기존 인라인 정책의 SMTP 사용자를 그룹 정책으로 마이그레이션하기 전에 먼저 SES 권한 정책으로 IAM 사용자 그룹을 만들어 인라인 정책을 대신해야 합니다. 이 IAM 사용자 그룹을 이미 만들었거나 2024년 9월 6일 이후부터 만들어진 SMTP 자격 증명이 자동으로 만들어진 경우 다음 절차의 *10단계*로 바로 건너뛸 수 있습니다.

**기존 인라인 정책에서 관리형 그룹으로 마이그레이션하는 방법**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. **액세스 관리**에서 **정책**을 선택한 다음 **정책 만들기**를 선택합니다.

1. **정책 편집기**에서 **JSON**을 선택하고 편집기에서 예제 코드를 제거합니다.

1. 다음 권한 정책을 편집기에 붙여넣습니다.

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
   "Effect": "Allow",
               "Action": "ses:SendRawEmail",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. **다음**을 선택하고 **정책 이름** 필드에 `AmazonSesSendingAccess`를 입력한 다음 **정책 만들기**를 입력합니다.

1. **액세스 관리**에서 **사용자 그룹**을 선택한 다음 **그룹 만들기**를 선택합니다.

1. **사용자 그룹 이름** 필드에 `AWSSESSendingGroupDoNotRename`을 입력합니다.

1. **그룹에 사용자 추가** 테이블에서 SMTP 사용자를 선택하여 그룹에 이를 추가합니다.

1. **권한 정책 연결** 테이블에서 정책을 선택한 다음 **사용자 그룹 만들기**를 선택하여 이전에 만든 `AmazonSesSendingAccess` 정책을 연결합니다.

   이제 SES 권한 정책을 사용하여 IAM 사용자 그룹을 만들었으므로 나머지 단계에 설명된 대로 현재 인라인 정책에서 이 그룹 정책으로 SMTP 사용자를 마이그레이션할 수 있습니다.

1. **액세스 관리**에서 **사용자**를 선택한 다음, 마이그레이션하려는 SMTP 사용자를 선택합니다.

1. **그룹** 탭을 선택하고 **그룹에 사용자 추가**를 선택합니다.

1. `AWSSESSendingGroupDoNotRename` 그룹을 선택한 다음 **그룹에 사용자 추가**를 선택합니다.

1. **권한** 탭을 선택하고 **정책 이름** 열에 `AmazonSesSendingAccess`와 함께 나열된 행 두 개가 있는지 확인합니다. 하나는 *인라인* 행이고 다른 하나는 **연결 방식:** 열에 나열된 *`AWSSESSendingGroupDoNotRename` 그룹*입니다.

1. **정책 이름** 열에 `AmazonSesSendingAccess`가 포함된 행과 **연결 방식:** 열의 *인라인* 행만 선택한 다음, **제거**를 선택하고 **정책 제거**를 확인합니다.

   **연결 방식:** 열에 *`AWSSESSendingGroupDoNotRename` 그룹*이 있는 행이 남아 있는지 확인합니다.

1. **태그** 탭을 선택한 다음 **태그 관리**를 선택합니다.

1. **키** 열의 *InvokedBy*와 **값** 열의 *SESConsole*이 포함된 행 옆에 있는 **제거**를 선택한 다음 **변경 사항 저장**을 선택합니다.

**중요**  
`AmazonSesSendingAccess` 정책(인라인 또는 그룹 정책 또는 둘 다)은 SMTP 사용자에게 연결되어 있어야 전송에 영향을 주지 않습니다. 그룹 정책이 사용자에게 연결된 후에만 인라인 정책을 제거합니다.

# Amazon SES SMTP 엔드포인트에 연결
<a name="smtp-connect"></a>

Amazon SES SMTP 인터페이스를 사용해 이메일을 전송하려면 SMTP 엔드포인트에 연결합니다. Amazon SES SMTP 엔드포인트의 전체 목록은 *AWS 일반 참조*의 [Amazon Simple Email Service 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/ses.html)을 참조하세요.

Amazon SES SMTP 엔드포인트에서는 TLS(전송 계층 보안)를 사용하여 모든 연결을 암호화해야 합니다. (TLS는 종종 이전 프로토콜 이름인 SSL로 불립니다.) Amazon SES는 TLS로 암호화된 연결 설정을 위한 두 가지 메커니즘인 STARTTLS 및 TLS 래퍼를 지원합니다. 사용 중인 소프트웨어의 설명서를 참조하여 소프트웨어가 STARTTLS, TLS 래퍼 또는 둘 다 지원하는지 여부를 확인하세요.

Amazon Elastic Compute Cloud(Amazon EC2)는 기본적으로 포트 25를 통한 이메일 트래픽을 제한합니다. EC2에서 SMTP 엔드포인트를 통해 이메일을 전송할 때 시간 초과를 방지하려면 [이메일 전송 제한 제거 요청](https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request)을 제출하여 제한을 제거합니다. 또는 다른 포트를 사용하여 이메일을 보내거나 [Amazon VPC 엔드포인트](send-email-set-up-vpc-endpoints.md)를 사용할 수 있습니다.

SMTP 연결 문제에 대해서는 [SMTP 문제](troubleshoot-smtp.md) 섹션을 참조하세요.

## STARTTLS
<a name="smtp-connect-starttls"></a>

STARTTLS는 암호화되지 않은 연결을 암호화된 연결로 업그레이드하는 방법입니다. 다양한 프로토콜을 위한 여러 버전의 STARTTLS이 있으며, SMTP 버전은 [RFC 3207](https://www.ietf.org/rfc/rfc3207.txt)에서 정의됩니다.

STARTTLS 연결을 설정하기 위해 SMTP 클라이언트는 포트 25, 587 또는 2587에서 Amazon SES SMTP 엔드포인트에 연결하고, EHLO 명령을 실행한 다음, 서버가 STARTTLS SMTP 확장을 지원한다고 공지할 때까지 대기합니다. 그런 다음 클라이언트는 STARTTLS 명령을 실행하여 TLS 협상을 시작합니다. 협상이 완료되면 클라이언트는 새로운 암호화된 연결을 통해 EHLO 명령을 실행하고 SMTP 세션이 정상적으로 진행됩니다.

## TLS 래퍼
<a name="smtp-connect-tlswrapper"></a>

TLS 래퍼(SMTPS 또는 핸드셰이크 프로토콜이라고도 함)는 암호화되지 않은 연결을 먼저 설정하지 않고 암호화된 연결을 시작하는 방법입니다. TLS 래퍼에서는 Amazon SES SMTP 엔드포인트가 TLS 협상을 수행하지 않습니다. TLS를 사용하여 엔드포인트와 연결한 후 전체 대화에 걸쳐 TLS를 계속 사용하는 것이 클라이언트의 책임입니다. TLS 래퍼는 더 오래된 프로토콜이지만 많은 클라이언트가 여전히 이 프로토콜을 지원합니다.

TLS 래퍼 연결을 설정하기 위해 SMTP 클라이언트는 포트 465 또는 2465에서 Amazon SES SMTP 엔드포인트에 연결합니다. 서버가 인증서를 제공하고, 클라이언트가 EHLO 명령을 실행한 후, SMTP 세션이 정상적으로 진행됩니다.

# 소프트웨어 패키지를 사용하여 Amazon SES를 통해 이메일 보내기
<a name="send-email-smtp-software-package"></a>

SMTP를 통한 이메일 전송을 지원하는 수많은 상업용 및 오픈 소스 소프트웨어 패키지가 있습니다. 여기 몇 가지 예가 있습니다:
+ 블로그 플랫폼
+ RSS 집계기
+ 목록 관리 소프트웨어
+ 워크플로우 시스템

Amazon SES SMTP 인터페이스를 통해 이메일을 보내도록 이러한 SMTP 지원 소프트웨어를 구성할 수 있습니다. 특정 소프트웨어 패키지에서 SMTP를 구성하는 방법에 대한 지침은 해당 소프트웨어의 설명서를 참조하세요.

다음 절차에서는 인기 있는 문제 추적 솔루션인 JIRA에서 Amazon SES 전송을 설정하는 방법을 보여 줍니다. 이 구성을 사용하면 JIRA는 소프트웨어 문제의 상태가 변경될 때마다 이메일을 통해 사용자에게 알릴 수 있습니다.

**Amazon SES를 사용하여 이메일을 보내도록 JIRA를 구성하려면**

1. 웹 브라우저를 사용하여 관리자 자격 증명으로 JIRA에 로그인합니다.

1. 브라우저 창에서 [**Administration**]을 선택합니다.

1. [**System**] 메뉴에서 [**Mail**]을 선택합니다.

1. [**Mail administration**] 페이지에서 [**Mail Servers**]를 선택합니다.

1. [**Configure new SMTP mail server**]를 선택합니다.

1. [**Add SMTP Mail Server**] 양식에서 다음 필드에 값을 입력합니다.

   1. **이름** - 이 서버에 대한 설명이 포함된 이름입니다.

   1. **발신 주소** - 이메일이 전송될 주소입니다. 이 주소에서 전송하려면 먼저 Amazon SES에서 이 이메일 주소를 확인해야 합니다. 확인에 대한 자세한 내용은 [Amazon SES에서 확인된 자격 증명](verify-addresses-and-domains.md)을(를) 참조하세요.

   1. **이메일 접두사** - JIRA에서 전송 전에 각 제목 줄 앞에 추가하는 문자열입니다.

   1. **프로토콜** - **SMTP**를 선택합니다.
**참고**  
이 설정을 사용하여 Amazon SES에 연결할 수 없는 경우 **SECURE\$1SMTP**를 선택해 보세요.

   1. **호스트 이름** - Amazon SES SMTP 엔드포인트 목록은 [Amazon SES SMTP 엔드포인트에 연결](smtp-connect.md) 섹션을 참조하세요. 예를 들어 미국 서부(오레곤) 리전에서 Amazon SES 엔드포인트를 사용하려는 경우 호스트 이름은 *email-smtp.us-west-2.amazonaws.com*이 됩니다.

   1. **SMTP 포트** - 25, 587 또는 2587(STARTTLS를 사용하여 연결하는 경우) 혹은 465 또는 2465(TLS 래퍼를 사용하여 연결하는 경우)입니다.

   1. **TLS** - 이 확인란을 선택합니다.

   1. **사용자 이름** - SMTP 사용자 이름입니다.

   1. **암호** - SMTP 암호입니다.

   다음 이미지에서 TLS 래퍼에 대한 설정을 볼 수 있습니다.  
![\[JIRA에 대한 SMTP 이메일 구성\]](http://docs.aws.amazon.com/ko_kr/ses/latest/dg/images/SMTP_jira.png)

1. [**Test Connection**]을 선택합니다. JIRA에서 Amazon SES를 통해 보내는 테스트 이메일이 성공적으로 도착하면 구성이 완료됩니다.

# 프로그래밍 방식으로 Amazon SES SMTP 인터페이스를 통해 이메일 전송
<a name="send-using-smtp-programmatically"></a>

Amazon SES SMTP 인터페이스를 사용하여 이메일을 전송하기 위해 SMTP 지원 프로그래밍 언어, 이메일 서버 또는 애플리케이션을 사용할 수 있습니다. 시작하기 전에 [Amazon Simple Email Service 설정](setting-up.md)의 작업을 완료해야 합니다. 또한 다음과 같은 정보가 필요합니다.
+ Amazon SES SMTP 엔드포인트와 연결하기 위한 Amazon SES SMTP 보안 인증 정보. Amazon SES SMTP 보안 인증 정보를 받으려면 [Amazon SES SMTP 자격 증명 획득](smtp-credentials.md) 섹션을 참조하세요.
**중요**  
SMTP 자격 증명은 자격 AWS 증명과 다릅니다. 자격 증명에 대한 자세한 내용은 [Amazon SES 자격 증명 유형](send-email-concepts-credentials.md) 단원을 참조하세요.
+ SMTP 엔드포인트 주소입니다. Amazon SES SMTP 엔드포인트 목록은 [Amazon SES SMTP 엔드포인트에 연결](smtp-connect.md) 섹션을 참조하세요.
+ 연결 방법에 따른 Amazon SES SMTP 인터페이스 포트 번호. 자세한 내용은 [Amazon SES SMTP 엔드포인트에 연결](smtp-connect.md) 단원을 참조하십시오.

## 코드 예제
<a name="send-email-smtp-code-examples"></a>

SMTP 지원 프로그래밍 언어를 사용하여 Amazon SES SMTP 인터페이스에 액세스할 수 있습니다. Amazon SES SMTP 호스트 이름 및 포트 번호와 사용자의 SMTP 자격 증명을 입력한 후 프로그래밍 언어의 일반 SMTP 함수를 사용하여 이메일을 전송합니다.

Amazon Elastic Compute Cloud(Amazon EC2)는 기본적으로 포트 25를 통한 이메일 트래픽을 제한합니다. Amazon EC2의 SMTP 엔드포인트를 통해 이메일을 전송할 때 시간 초과를 방지하려면 이러한 제한을 제거하도록 요청할 수 있습니다. 자세한 내용은 [ Amazon EC2 인스턴스 또는 AWS Lambda 함수에서 포트 25에 대한 제한을 제거하려면 어떻게 해야 합니까?를 참조하세요.](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/) AWS 지식 센터의 .

Java 및 PHP에 대해 이 섹션의 코드 예제에서는 포트 587을 사용하여 이 문제를 방지합니다.

**참고**  
이러한 자습서에서는 수신 여부를 확인할 수 있도록 자신에게 이메일을 발송합니다. 추가적인 실험 또는 로드 테스트는 Amazon SES 메일박스 시뮬레이터를 사용하십시오. 메일박스 시뮬레이터로 전송되는 이메일은 전송 할당량이나 반송 메일 및 수신 거부 발생률에 포함되지 않습니다. 자세한 내용은 [수동으로 메일박스 시뮬레이터 사용](send-an-email-from-console.md#send-email-simulator) 단원을 참조하십시오.

**프로그래밍 언어를 선택하여 해당 언어에 대한 예제를 봅니다.**

**주의**  
Amazon SES는 정적 자격 증명 사용을 권장하지 않습니다. 소스 코드에서 하드 코딩된 자격 증명을 제거하여 보안 태세를 개선하는 방법을 알아보려면 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 섹션을 참조하세요. 이 자습서는 프로덕션이 아닌 환경에서 Amazon SES SMTP 인터페이스를 테스트하기 위한 목적으로만 제공됩니다.

------
#### [ Java ]

이 예제에서는 SMTP 인터페이스를 사용하여 Amazon SES 를 통해 이메일을 보내기 위해 [Eclipse IDE](http://www.eclipse.org/) 및 [JavaMail API](https://github.com/javaee/javamail/releases)를 사용합니다.

다음 절차를 수행하기 전에 [Amazon Simple Email Service 설정](setting-up.md)의 작업을 완료합니다.

**Java를 사용하여 Amazon SES SMTP 인터페이스를 통해 이메일을 전송하려면**

1. 웹 브라우저에서 [JavaMail GitHub 페이지](https://github.com/javaee/javamail/releases)로 이동합니다. **자산**에서 **javax.mail.jar**를 선택하여 최신 버전의 JavaMail을 다운로드합니다.
**중요**  
이 자습서에서는 JavaMail 버전 1.5 이상이 필요합니다. 이 절차는 JavaMail 버전 1.6.1을 사용하여 테스트되었습니다.

1. 웹 브라우저에서 [Jakarta Activation GitHub 페이지](https://github.com/eclipse-ee4j/jaf/releases)로 이동하고 [JavaBeans Activation Framework 1.2.1 Final Release](https://github.com/eclipse-ee4j/jaf/releases/tag/1.2.1)에서 **jakarta.activation.jar**를 다운로드합니다.

1. 다음 단계를 수행하여 Eclipse에서 프로젝트를 만듭니다.

   1. Eclipse를 시작합니다.

   1. Eclipse에서, [**File**], [**New**], [**Java Project**]를 차례로 선택합니다.

   1. [**Create a Java Project**] 대화 상자에서, 프로젝트 이름을 입력하고 [**Next**]를 선택합니다.

   1. [**Java Settings**] 대화 상자에서, [**Libraries**] 탭을 선택합니다.

   1. **Classpath**를 선택하고 **외부 JAR 추가** 버튼을 사용하여 두 개의 외부 jar 파일 **javax.mail.jar** 및 **jakarta.activation.jar**를 추가합니다.

   1. [**Add External JARs**]를 선택합니다.

   1. JavaMail을 다운로드한 폴더로 이동합니다. `javax.mail.jar` 파일과 [**Open**]을 차례대로 선택합니다.

   1. [**Java Settings**] 대화 상자에서, [**Finish**]를 선택합니다.

1. Eclipse에서, [**Package Explorer**] 창에서 프로젝트를 확장합니다.

1. 프로젝트에서 [**src**] 디렉터리를 마우스 오른쪽 버튼으로 클릭한 후 [**New**], [**Class**]를 차례로 선택합니다.

1. [**New Java Class**] 대화 상자에서, [**Name**] 필드에 `AmazonSESSample`을 입력한 후 [**Finish**]를 선택합니다.

1. **AmazonSESSample.java**의 전체 내용을 다음 코드로 바꿉니다.

   ```
     1. import java.util.Properties;
     2. 
     3. import javax.mail.Message;
     4. import javax.mail.Session;
     5. import javax.mail.Transport;
     6. import javax.mail.internet.InternetAddress;
     7. import javax.mail.internet.MimeMessage;
     8. 
     9. public class AmazonSESSample {
    10. 
    11.     // Replace sender@example.com with your "From" address.
    12.     // This address must be verified.
    13.     static final String FROM = "sender@example.com";
    14.     static final String FROMNAME = "Sender Name";
    15.     
    16.     // Replace recipient@example.com with a "To" address. If your account 
    17.     // is still in the sandbox, this address must be verified.
    18.     static final String TO = "recipient@example.com";
    19.     
    20.     // Replace smtp_username with your Amazon SES SMTP user name.
    21.     static final String SMTP_USERNAME = "smtp_username";
    22.       
    23.     // The name of the Configuration Set to use for this message.
    24.     // If you comment out or remove this variable, you will also need to
    25.     // comment out or remove the header below.
    26.     static final String CONFIGSET = "ConfigSet";
    27.     
    28.     // Amazon SES SMTP host name. This example uses the US West (Oregon) region.
    29.     // See https://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html#region-endpoints
    30.     // for more information.
    31.     static final String HOST = "email-smtp.us-west-2.amazonaws.com";
    32.     
    33.     // The port you will connect to on the Amazon SES SMTP endpoint. 
    34.     static final int PORT = 587;
    35.     
    36.     static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)";
    37.     
    38.     static final String BODY = String.join(
    39.             System.getProperty("line.separator"),
    40.             "<h1>Amazon SES SMTP Email Test</h1>",
    41.             "<p>This email was sent with Amazon SES using the ", 
    42.             "<a href='https://github.com/javaee/javamail'>Javamail Package</a>",
    43.             " for <a href='https://www.java.com'>Java</a>."
    44.         );
    45. 
    46.     public static void main(String[] args) throws Exception {
    47. 
    48.         // Create a Properties object to contain connection configuration information.
    49.         Properties props = System.getProperties();
    50.         props.put("mail.transport.protocol", "smtp");
    51.         props.put("mail.smtp.port", PORT); 
    52.         props.put("mail.smtp.starttls.enable", "true");
    53.         props.put("mail.smtp.auth", "true");
    54. 
    55.         // Create a Session object to represent a mail session with the specified properties. 
    56.         Session session = Session.getDefaultInstance(props);
    57. 
    58.         // Create a message with the specified information. 
    59.         MimeMessage msg = new MimeMessage(session);
    60.         msg.setFrom(new InternetAddress(FROM,FROMNAME));
    61.         msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
    62.         msg.setSubject(SUBJECT);
    63.         msg.setContent(BODY,"text/html");
    64.         
    65.         // Add a configuration set header. Comment or delete the 
    66.         // next line if you are not using a configuration set
    67.         msg.setHeader("X-SES-CONFIGURATION-SET", CONFIGSET);
    68.             
    69.         // Create a transport.
    70.         Transport transport = session.getTransport();
    71. 
    72.         // Get the password 
    73.         String SMTP_PASSWORD = fetchSMTPPasswordFromSecureStorage();
    74.                     
    75.         // Send the message.
    76.         try
    77.         {
    78.             System.out.println("Sending...");
    79.             
    80.             // Connect to Amazon SES using the SMTP username and password you specified above.
    81.             transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
    82.             
    83.             // Send the email.
    84.             transport.sendMessage(msg, msg.getAllRecipients());
    85.             System.out.println("Email sent!");
    86.         }
    87.         catch (Exception ex) {
    88.             System.out.println("The email was not sent.");
    89.             System.out.println("Error message: " + ex.getMessage());
    90.         }
    91.         finally
    92.         {
    93.             // Close and terminate the connection.
    94.             transport.close();
    95.         }
    96.     }
    97. 
    98.     static String fetchSMTPPasswordFromSecureStorage() {
    99.         /* IMPLEMENT THIS METHOD */
   100.         // For example, you might fetch it from a secure location or AWS Secrets Manager: https://aws.amazon.com/secrets-manager/
   101.     }
   102. }
   ```

1. **AmazonSESSample.java**에서 다음 이메일 주소를 자체 값으로 대체합니다.
**중요**  
이메일 주소는 대/소문자를 구분합니다. 주소는 사용자가 확인한 것과 정확하게 동일해야 합니다.
   + *sender@example.com* - 'From' 이메일 주소로 대체합니다. 이 프로그램을 실행하기 전에 이 주소를 확인해야 합니다. 자세한 내용은 [Amazon SES에서 확인된 자격 증명](verify-addresses-and-domains.md) 단원을 참조하십시오.
   + *recipient@example.com* - 'To' 이메일 주소로 대체합니다. 계정이 아직 샌드박스에 있는 경우, 이 주소를 확인해야 계정을 사용할 수 있습니다. 자세한 내용은 [프로덕션 액세스 요청(Amazon SES 샌드박스에서 이동)](request-production-access.md) 단원을 참조하십시오.

1. **AmazonSESSample.java**에서 다음을 자체 값으로 대체합니다.
   + *smtp\$1username* – SMTP 사용자 이름 자격 증명으로 대체합니다. SMTP 사용자 이름 자격 증명은 식별 가능한 이름이 아니라 문자/숫자를 포함하는 20자 길이 문자열입니다.
   + *smtp\$1password* – ``fetchSMTPPasswordFromSecureStorage``를 구현하여 암호를 가져옵니다.

1. (선택 사항) *email-smtp.us-west-2.amazonaws.com* 이외의 AWS 리전 에서 Amazon SES SMTP 엔드포인트를 사용하려면 `HOST` 변수 값을 사용하려는 엔드포인트로 바꿉니다. Amazon SES를 사용할 수 있는 리전 목록은 *AWS 일반 참조*의 [Amazon Simple Email Service(Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region)를 참조하세요.

1. (선택 사항) 이 이메일을 전송할 때 구성 세트를 사용하려면 *ConfigSet* 변수 값을 구성 세트의 이름으로 바꿉니다. 구성 세트에 대한 자세한 내용은 [Amazon SES에서 구성 세트 사용](using-configuration-sets.md) 단원을 참조하세요.

1. **AmazonSESSample.java**를 저장합니다.

1. 프로젝트를 빌드하려면 [**Project**]를 선택한 후 [**Build Project**]를 선택합니다. (이 옵션이 비활성화되어 있는 경우 자동 빌딩이 활성화된 것일 수 있습니다.)

1. 프로그램을 시작하고 이메일을 전송하려면 [**Run**]을 선택하고 다시 [**Run**]을 선택합니다.

1. 출력 결과를 검토합니다. 이메일이 성공적으로 전송되었으면 콘솔에 *'이메일이 발송되었습니다\$1'*가 표시됩니다. 완료되지 않은 경우 오류 메시지가 표시됩니다.

1. 수신자 주소의 이메일 클라이언트에 로그인합니다. 보낸 메시지가 도착해 있을 것입니다.

------
#### [ PHP  ]

이 예제에서는 SMTP 인터페이스를 사용하여 Amazon SES를 통해 이메일을 전송하기 위해 PHPMailer 클래스를 사용합니다.

다음 절차를 수행하기 전에 [Amazon Simple Email Service 설정](setting-up.md)의 작업을 완료해야 합니다. Amazon SES 를 설정하는 것 외에도 PHP로 이메일을 보내려면 다음과 같은 사전 요구 사항을 완료해야 합니다.

**사전 조건:**
+ **PHP 설치** – PHP는 [http://php.net/downloads.php](https://php.net/downloads.php)에서 다운로드할 수 있습니다. PHP를 설치한 후, 원하는 모든 명령 프롬프트에서 PHP를 실행할 수 있도록 PHP에 대한 경로를 환경 변수에 추가합니다.
+ **Composer 종속성 관리자 설치** – Composer 종속성 관리자를 설치한 후 PHPMailer 클래스와 클래스의 종속성을 다운로드하여 설치할 수 있습니다. Composer를 설치하려면 [https://getcomposer.org/download](https://getcomposer.org/download)의 설치 지침을 따르세요.
+ **PHPMailer 클래스 설치** – Composer를 설치한 후 다음 명령을 실행하여 다음과 같이 PHPMailer를 설치합니다.

  ```
  path/to/composer require phpmailer/phpmailer
  ```

  위의 명령에서 *path/to/*를 Composer를 설치한 경로로 바꿉니다.

**PHP를 사용하여 Amazon SES SMTP 인터페이스를 통해 이메일을 전송하려면**

1. **amazon-ses-smtp-sample.php**라는 파일을 만듭니다. 텍스트 편집기로 파일을 열고 다음 코드를 붙여 넣습니다.

   ```
    1. <?php
    2. 
    3. // Import PHPMailer classes into the global namespace
    4. // These must be at the top of your script, not inside a function
    5. use PHPMailer\PHPMailer\PHPMailer;
    6. use PHPMailer\PHPMailer\Exception;
    7. 
    8. // If necessary, modify the path in the require statement below to refer to the
    9. // location of your Composer autoload.php file.
   10. require 'vendor/autoload.php';
   11. 
   12. // Replace sender@example.com with your "From" address.
   13. // This address must be verified with Amazon SES.
   14. $sender = 'sender@example.com';
   15. $senderName = 'Sender Name';
   16. 
   17. // Replace recipient@example.com with a "To" address. If your account
   18. // is still in the sandbox, this address must be verified.
   19. $recipient = 'recipient@example.com';
   20. 
   21. // Replace smtp_username with your Amazon SES SMTP user name.
   22. $usernameSmtp = 'smtp_username';
   23. 
   24. // Specify a configuration set. If you do not want to use a configuration
   25. // set, comment or remove the next line.
   26. $configurationSet = 'ConfigSet';
   27. 
   28. // If you're using Amazon SES in a region other than US West (Oregon),
   29. // replace email-smtp.us-west-2.amazonaws.com with the Amazon SES SMTP
   30. // endpoint in the appropriate region.
   31. $host = 'email-smtp.us-west-2.amazonaws.com';
   32. $port = 587;
   33. 
   34. // The subject line of the email
   35. $subject = 'Amazon SES test (SMTP interface accessed using PHP)';
   36. 
   37. // The plain-text body of the email
   38. $bodyText =  "Email Test\r\nThis email was sent through the
   39.     Amazon SES SMTP interface using the PHPMailer class.";
   40. 
   41. // The HTML-formatted body of the email
   42. $bodyHtml = '<h1>Email Test</h1>
   43.     <p>This email was sent through the
   44.     <a href="https://aws.amazon.com/ses">Amazon SES</a> SMTP
   45.     interface using the <a href="https://github.com/PHPMailer/PHPMailer">
   46.     PHPMailer</a> class.</p>';
   47. 
   48. $mail = new PHPMailer(true);
   49. 
   50. try {
   51.     // Specify the SMTP settings.
   52.     $mail->isSMTP();
   53.     $mail->setFrom($sender, $senderName);
   54.     $mail->Username   = $usernameSmtp;
   55.     $mail->Password   = fetchSMTPPasswordFromSecureStorage();
   56.     $mail->Host       = $host;
   57.     $mail->Port       = $port;
   58.     $mail->SMTPAuth   = true;
   59.     $mail->SMTPSecure = 'tls';
   60.     $mail->addCustomHeader('X-SES-CONFIGURATION-SET', $configurationSet);
   61. 
   62.     // Specify the message recipients.
   63.     $mail->addAddress($recipient);
   64.     // You can also add CC, BCC, and additional To recipients here.
   65. 
   66.     // Specify the content of the message.
   67.     $mail->isHTML(true);
   68.     $mail->Subject    = $subject;
   69.     $mail->Body       = $bodyHtml;
   70.     $mail->AltBody    = $bodyText;
   71.     $mail->Send();
   72.     echo "Email sent!" , PHP_EOL;
   73. } catch (phpmailerException $e) {
   74.     echo "An error occurred. {$e->errorMessage()}", PHP_EOL; //Catch errors from PHPMailer.
   75. } catch (Exception $e) {
   76.     echo "Email not sent. {$mail->ErrorInfo}", PHP_EOL; //Catch errors from Amazon SES.
   77. }
   78. function fetchSMTPPasswordFromSecureStorage() {
   79. /* IMPLEMENT THIS METHOD */
   80. // For example, you might fetch it from a secure location or AWS Secrets Manager: https://aws.amazon.com/secrets-manager/
   81. }
   82. 
   83. ?>
   ```

1. **amazon-ses-smtp-sample.php**에서 다음을 자체 값으로 대체합니다.
   + *sender@example.com* – Amazon SES에서 확인한 이메일 주소로 바꿉니다. 자세한 내용은 [확인된 자격 증명](verify-addresses-and-domains.md) 단원을 참조하십시오. Amazon SES에서 이메일 주소는 대/소문자를 구분합니다. 입력하는 주소는 사용자가 확인한 것과 정확하게 동일해야 합니다.
   + *recipient@example.com* – 수신자의 주소로 바꿉니다. 계정이 아직 샌드박스에 있는 경우, 이 주소를 확인해야 계정을 사용할 수 있습니다. 자세한 내용은 [프로덕션 액세스 요청(Amazon SES 샌드박스에서 이동)](request-production-access.md) 단원을 참조하세요. 입력하는 주소는 사용자가 확인한 것과 정확하게 동일해야 합니다.
   + *smtp\$1username* – SMTP 사용자 이름 자격 증명으로 대체합니다. 이 자격 증명은 Amazon SES 콘솔의 [SMTP 설정](https://console.aws.amazon.com/ses/home?#smtp-settings:) 페이지에서 확인할 수 있습니다. 이 이름은 AWS 액세스 키 ID와 동일하지 **않습니다**. SMTP 사용자 이름 자격 증명은 식별 가능한 이름이 아니라 문자/숫자를 포함하는 20자 길이 문자열입니다.
   + *smtp\$1password* – ``fetchSMTPPasswordFromSecureStorage``를 구현하여 암호를 가져옵니다.
   + (선택 사항) *ConfigSet* – 이 이메일을 전송할 때 구성 세트를 사용하려면 이 값을 구성 세트의 이름으로 바꿉니다. 구성 세트에 대한 자세한 내용은 [Amazon SES에서 구성 세트 사용](using-configuration-sets.md) 단원을 참조하세요.
   + (선택 사항) *email-smtp.us-west-2.amazonaws.com* – 미국 서부(오리건) 이외의 리전에서 Amazon SES SMTP 엔드포인트를 사용하려면 사용하려는 리전의 Amazon SES SMTP 엔드포인트로 대체합니다. Amazon SES를 사용할 수 AWS 리전 있는의 SMTP 엔드포인트 URLs 목록은의 [Amazon Simple Email Service(Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region)를 참조하세요*AWS 일반 참조*.

1. **amazon-ses-smtp-sample.php**를 저장합니다.

1. 프로그램을 실행하려면 **amazon-ses-smtp-sample.php**와 동일한 디렉터리에서 명령 프롬프트를 열고 **php amazon-ses-smtp-sample.php**를 입력합니다.

1. 출력 결과를 검토합니다. 이메일이 성공적으로 전송되었으면 콘솔에 *'이메일이 발송되었습니다\$1'*가 표시됩니다. 완료되지 않은 경우 오류 메시지가 표시됩니다.

1. 수신자 주소의 이메일 클라이언트에 로그인합니다. 보낸 메시지가 도착해 있을 것입니다.

------

# 기존 이메일 서버와 Amazon SES 통합
<a name="send-email-smtp-existing-server"></a>

현재 자신의 이메일 서버를 관리하고 있는 경우 Amazon SES SMTP 엔드포인트를 사용하여 모든 발신 이메일을 Amazon SES로 보낼 수 있습니다. 기존 이메일 클라이언트와 애플리케이션을 수정할 필요는 없으며 모든 프로그램에 투명하게 Amazon SES로 전환됩니다.

여러 메일 전송 에이전트(MTA)가 SMTP 릴레이를 통한 이메일 전송을 지원합니다. 이 섹션에서는 Amazon SES SMTP 인터페이스를 사용하여 이메일을 보내도록 몇 가지 인기 있는 MTA를 구성하는 방법에 대해 일반적인 지침을 제공합니다.

Amazon SES SMTP 엔드포인트에서는 TLS(전송 계층 보안)를 사용하여 모든 연결을 암호화해야 합니다.

**Topics**
+ [Amazon SES와 Postfix 통합](postfix.md)
+ [Amazon SES와 Sendmail 통합](send-email-sendmail.md)
+ [Microsoft Windows Server IIS SMTP와 Amazon SES 통합](send-email-windows-server.md)

# 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. 이메일의 받은 편지함을 확인합니다. 메시지가 전송되지 않은 경우 시스템의 메일 로그를 확인합니다.

# Amazon SES와 Sendmail 통합
<a name="send-email-sendmail"></a>

Sendmail은 1980년대 초반에 릴리스되었으며 이후 지속적으로 개선되었습니다. 대규모 사용자 커뮤니티를 보유한 유연하고 구성 가능한 메시지 전송 에이전트(MTA)입니다. Sendmail은 2013년에 Proofpoint에서 인수했지만, Proofpoint는 Sendmail의 오픈 소스 버전을 계속 제공하고 있습니다. Proofpoint 웹사이트에서, 또는 대다수 Linx 배포판에 포함된 패키지 관리자를 통해 [Sendmail의 오픈 소스 버전](https://www.proofpoint.com/us/open-source-email-solution)을 다운로드하세요.

이 섹션의 절차는 Amazon SES를 통해 이메일을 전송하도록 Sendmail을 구성하는 방법을 보여줍니다. 이 절차는 Ubuntu 18.04.2 LTS를 실행하는 서버 상에서 테스트를 거쳤습니다.

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

## 사전 조건
<a name="send-email-sendmail-prerequisites"></a>

이 섹션의 절차를 완료하려면 먼저 다음 작업을 수행해야 합니다.
+ 서버에 Sendmail 패키지를 설치합니다.
**참고**  
사용하는 운영 체제 배포판에 따라 `sendmail-cf`, `m4`, `cyrus-sasl-plain` 중 해당되는 패키지를 설치해야 할 수도 있습니다.
+ 발신 주소로 사용할 ID를 확인합니다. 자세한 내용은 [이메일 주소 자격 증명 생성](creating-identities.md#verify-email-addresses-procedure) 단원을 참조하십시오.

  계정이 Amazon SES 샌드박스에 있는 경우 이메일을 전송하려는 주소들도 확인해야 합니다. 자세한 내용은 [프로덕션 액세스 요청(Amazon SES 샌드박스에서 이동)](request-production-access.md) 단원을 참조하십시오.

Amazon SES를 사용하여 Amazon EC2 인스턴스로부터 이메일을 전송 중인 경우에는 다음 단계도 완료해야 합니다.
+ 이메일을 수신하는 공급자가 이메일을 수락하도록 하려면 Amazon EC2 인스턴스에 탄력적 IP 주소를 할당해야 합니다. 자세한 내용은 *Amazon EC2 사용 설명서*에서 [Amazon EC2 탄력적 IP 주소](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)를 참조하세요.
+ Amazon Elastic Compute Cloud(Amazon EC2)는 기본적으로 포트 25를 통한 이메일 트래픽을 제한합니다. Amazon EC2의 SMTP 엔드포인트를 통해 이메일을 전송할 때 시간 초과를 방지하려면 이러한 제한을 제거하도록 요청할 수 있습니다. 자세한 내용은 [ Amazon EC2 인스턴스 또는 AWS Lambda 함수에서 포트 25에 대한 제한을 제거하려면 어떻게 해야 합니까?를 참조하세요.](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/) AWS 지식 센터의 .

  또는 이 섹션의 절차를 수정하여 포트 25가 아닌 포트 587을 사용할 수 있습니다.

## Sendmail 구성
<a name="send-email-sendmail-procedure"></a>

Amazon SES를 사용해 이메일을 전송하도록 Sendmail을 구성하려면 이 섹션에 나온 단계를 완료하세요.

**중요**  
이 섹션의 절차에서는 미국 서부(오레곤)에서 Amazon SES를 사용한다고 가정합니다 AWS 리전. 다른 리전을 사용하려는 경우 이 절차에 있는 *email-smtp.us-west-2.amazonaws.com*의 모든 인스턴스를 원하는 리전의 SMTP 엔드포인트로 바꾸세요. Amazon SES를 사용할 수 있는 AWS 리전 의 SMTP 엔드포인트 URL 목록은 *AWS 일반 참조*의 [Amazon Simple Email Service(Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region)를 참조하세요.

**Sendmail을 설정하려면**

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

   다음 줄을 */etc/mail/authinfo*에 추가합니다.

   ```
   AuthInfo:email-smtp.us-west-2.amazonaws.com "U:root" "I:smtpUsername" "P:smtpPassword" "M:PLAIN"
   ```

   이전 예제에서 다음과 같이 변경합니다.
   + *email-smtp.us-west-2.amazonaws.com*을 사용하려는 Amazon SES SMTP 엔드포인트로 바꿉니다.
   + *smtpUsername*을 Amazon SES SMTP 사용자 이름으로 바꿉니다.
   + *smtpPassword*를 Amazon SES SMTP 암호로 바꿉니다.
**참고**  
SMTP 로그인 자격 증명은 AWS 액세스 키 ID 및 보안 액세스 키와 다릅니다. SMTP 로그인 보안 인증 정보를 받는 방법에 대한 자세한 내용은 [Amazon SES SMTP 자격 증명 획득](smtp-credentials.md) 섹션을 참조하세요.

   완료되면 `authinfo`를 저장합니다.

1. 명령줄에 다음 명령을 입력하여 `/etc/mail/authinfo.db` 파일을 만듭니다.

   ```
   sudo sh -c 'makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo'
   ```

1. 명령줄에 다음 명령을 입력하여 Amazon SES SMTP 엔드포인트에 릴레이에 대한 지원을 추가합니다.

   ```
   sudo sh -c 'echo "Connect:email-smtp.us-west-2.amazonaws.com RELAY" >> /etc/mail/access'
   ```

   위의 명령에서 *email-smtp.us-west-2.amazonaws.com*을 사용하려는 Amazon SES SMTP 엔드포인트의 주소로 바꿉니다.

1. 명령 줄에 다음 명령을 입력하여 */etc/mail/access.db*를 다시 생성합니다.

   ```
   sudo sh -c 'makemap hash /etc/mail/access.db < /etc/mail/access'
   ```

1. 명령줄에 다음 명령을 입력하여 다음과 같이 `sendmail.cf` 및 `sendmail.mc` 파일의 백업을 생성합니다.

   ```
   sudo sh -c 'cp /etc/mail/sendmail.cf /etc/mail/sendmail_cf.backup && cp /etc/mail/sendmail.mc /etc/mail/sendmail_mc.backup'
   ```

1. 다음 줄을 */etc/mail/sendmail.mc* 파일의 `MAILER()` 정의 앞에 추가합니다.

   ```
   define(`SMART_HOST', `email-smtp.us-west-2.amazonaws.com')dnl
   define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl
   define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
   FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl
   MASQUERADE_AS(`example.com')dnl
   FEATURE(masquerade_envelope)dnl
   FEATURE(masquerade_entire_domain)dnl
   ```

   위의 텍스트에서 다음을 수행합니다.
   + *email-smtp.us-west-2.amazonaws.com*을 사용하려는 Amazon SES SMTP 엔드포인트로 바꿉니다.
   + *example.com*을 이메일 전송에 사용할 도메인으로 바꿉니다.

   작업을 마치고 파일을 저장합니다.
**참고**  
Amazon EC2는 기본적으로 포트 25를 통한 통신을 제한합니다. Amazon EC2 인스턴스에서 Sendmail을 사용 중인 경우 [이메일 전송 제한 제거 요청](https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request)을 작성해야 합니다.

1. 명령줄에 다음 명령을 입력하여 *sendmail.cf*를 쓰기 가능한 상태로 만듭니다.

   ```
   sudo chmod 666 /etc/mail/sendmail.cf
   ```

1. 명령줄에 다음 명령을 입력하여 *sendmail.cf*를 다시 생성합니다.

   ```
   sudo sh -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'
   ```
**참고**  
‘명령을 찾을 수 없음’ 및 ‘해당 파일 또는 디렉터리가 없음’ 오류가 발생하면 `m4` 및 `sendmail-cf` 패키지가 시스템에 설치되어 있는지 확인합니다.

1. 명령줄에 다음 명령을 입력하여 *sendmail.cf* 권한을 읽기 전용으로 재설정합니다.

   ```
   sudo chmod 644 /etc/mail/sendmail.cf
   ```

1. 명령줄에 다음 명령을 입력하여 Sendmail을 다시 시작합니다.

   ```
   sudo /etc/init.d/sendmail restart
   ```

   *Linux 또는 Sendmail 버전에 따라 위의 내용이 작동하지 않으면 다음을 시도하세요.*

   ```
   sudo su service sendmail restart
   ```

1. 테스트 이메일을 전송하려면 다음 작업을 완료합니다.

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

      ```
      /usr/sbin/sendmail -vf sender@example.com recipient@example.com
      ```

      *sender@example.com*을 From 이메일 주소로 바꿉니다. *recipient@example.com*을 수신 주소로 바꿉니다. 완료되면 Enter를 누릅니다.

   1. 다음과 같은 메시지 콘텐츠를 입력합니다. 줄이 끝날 때마다 Enter를 누릅니다.

      ```
      From: sender@example.com
      To: recipient@example.com
      Subject: Amazon SES test email
      
      This is a test message sent from Amazon SES using Sendmail.
      ```

      이메일 콘텐츠의 입력이 완료되면 Ctrl\$1D를 눌러서 전송합니다.

1. 해당 이메일의 수신자 이메일 클라이언트를 확인합니다. 이메일을 찾을 수 없으면 스팸 메일 폴더를 확인합니다. 그래도 이메일을 찾을 수 없는 경우, 메일 서버의 Sendmail 로그를 살펴봅니다. 로그는 대개 */var/log/mail.log* 또는 */var/log/maillog*에 있습니다.

# Microsoft Windows Server IIS SMTP와 Amazon SES 통합
<a name="send-email-windows-server"></a>

Amazon SES를 통해 이메일을 보내도록 Microsoft Windows Server의 IIS SMTP 서버를 구성할 수 있습니다. 이 지침은 Amazon EC2 인스턴스에서 Microsoft Windows Server 2022를 사용하여 작성되었습니다. Microsoft Windows Server 2016에서 동일한 구성을 사용할 수 있습니다.

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

**Microsoft Windows Server IIS SMTP 서버를 Amazon SES와 통합하려면**

1. 먼저 다음 지침에 따라 Microsoft Windows Server 2022를 설정합니다.

   1. [Amazon EC2 관리 콘솔](https://console.aws.amazon.com/ec2/home)에서 새 Microsoft Windows Server 2022 Base Amazon EC2 인스턴스를 시작합니다.

   1. 인스턴스에 연결하고 [Amazon EC2 Windows 인스턴스 시작하기](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2Win_GetStarted.html)의 지침에 따라 원격 데스크톱을 사용하여 인스턴스에 로그인합니다.

   1. 서버 관리자 대시보드를 시작합니다.

   1. [**웹 서버**] 역할을 설치합니다. **IIS 10 관리 호환성 도구**(**웹 서버** 확인란 아래의 옵션)를 포함해야 합니다.

   1. [**SMTP 서버**] 기능을 설치합니다.

1. 이제 다음 지침에 따라 IIS SMTP 서비스를 구성합니다.

   1. 서버 관리자 대시보드로 돌아갑니다.

   1. **도구** 메뉴에서 **인터넷 정보 서비스(IIS) 10.0 관리자**를 선택합니다.

   1. [**SMTP 가상 서버 \$11**]을 마우스 오른쪽 버튼으로 클릭하고 [**속성**]을 선택합니다.

   1. [**액세스**] 탭에서 [**릴레이 제한**] 아래 있는 [**릴레이**]를 선택합니다.

   1. [**릴레이 제한**] 대화 상자에서 [**추가**]를 선택합니다.

   1. [**단일 컴퓨터**] 아래에서 IP 주소에 **127.0.0.1**을 입력합니다. 이제 이 서버에 IIS SMTP 서비스를 통해 Amazon SES로 이메일을 릴레이하기 위한 액세스를 부여했습니다.

      이 절차에서는 이메일이 이 서버에서 생성된다고 가정합니다. 이메일을 생성하는 애플리케이션이 별도의 서버에서 실행되는 경우 IIS SMTP에서 해당 서버에 릴레이 액세스를 부여해야 합니다.
**참고**  
SMTP 릴레이를 프라이빗 서브넷으로 확장하려면 [**릴레이 제한**]에 대해 [**단일 컴퓨터**] 127.0.0.1 및 [**컴퓨터 그룹**] 172.1.1.0 - 255.255.255.0(넷마스크 섹션에서)을 사용합니다. [**연결**]에 대해 [**단일 컴퓨터**] 127.0.0.1 및 [**컴퓨터 그룹**] 172.1.1.0 - 255.255.255.0(넷마스크 섹션에서)을 사용합니다.

1. 마지막으로, 다음 지침에 따라 Amazon SES를 통해 이메일을 보내도록 서버를 구성합니다.

   1. [**SMTP 가상 서버 \$11 속성**] 대화 상자로 돌아간 다음 [**배달**] 탭을 선택합니다.

   1. [**배달**] 탭에서 [**아웃바운드 보안**]을 선택합니다.

   1. **Basic Authentication**(기본 인증)을 선택한 후 Amazon SES SMTP 보안 인증 정보를 입력합니다. [Amazon SES SMTP 자격 증명 획득](smtp-credentials.md)의 절차에 따라 Amazon SES 콘솔에서 이 자격 증명을 받을 수 있습니다.
**중요**  
SMTP 자격 증명은 AWS 액세스 키 ID 및 보안 액세스 키와 동일하지 않습니다. 자격 AWS 증명을 사용하여 SMTP 엔드포인트에 대해 자신을 인증하려고 하지 마십시오. 자격 증명에 대한 자세한 내용은 [Amazon SES 자격 증명 유형](send-email-concepts-credentials.md) 단원을 참조하세요.

   1. [**TLS 암호화**]가 선택되어 있는지 확인합니다.

   1. [**배달**] 탭으로 돌아갑니다.

   1. [**아웃바운드 연결**]을 선택합니다.

   1. [**아웃바운드 연결**] 대화 상자에서 포트가 25 또는 587인지 확인합니다.

   1. **고급**을 선택합니다.

   1. **스마트 호스트** 이름에 사용할 Amazon SES 엔드포인트(예:*email-smtp.us-west-2.amazonaws.com*)를 입력합니다. Amazon SES를 사용할 수 AWS 리전 있는의 엔드포인트 URLs 목록은의 [Amazon Simple Email Service(Amazon SES)](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region)를 참조하세요*AWS 일반 참조*.

   1. 서버 관리자 대시보드로 돌아갑니다.

   1. 서버 관리자 대시보드에서 [**SMTP 가상 서버 \$11**]을 마우스 오른쪽 버튼으로 클릭한 다음 서버를 다시 시작하여 새 구성을 적용합니다.

   1. 이 서버를 통해 이메일을 보냅니다. 메시지 헤더를 조사하여 Amazon SES를 통해 배달되었는지 확인할 수 있습니다.

# 명령줄을 사용하여 Amazon SES SMTP 인터페이스에 대한 연결 테스트
<a name="send-email-smtp-client-command-line"></a>

이 섹션에서 설명하는 방법을 사용하여 명령줄에서 Amazon SES SMTP 엔드포인트에 대한 연결을 테스트하고, SMTP 자격 증명을 확인하고, 연결 문제를 해결할 수 있습니다. 이러한 절차에서는 가장 일반적인 운영 체제에 포함된 도구 및 라이브러리를 사용합니다.

SMTP 연결 문제 해결에 대한 자세한 내용은 [Amazon SES SMTP 문제](troubleshoot-smtp.md) 섹션을 참조하세요.

## 사전 조건
<a name="send-email-smtp-client-command-line-prereqs"></a>

Amazon SES SMTP 인터페이스에 연결할 때 일련의 SMTP 자격 증명을 제공해야 합니다. 이러한 SMTP 자격 증명은 표준 AWS 자격 증명과 다릅니다. 두 유형의 자격 증명을 서로 바꿔 사용할 수 없습니다. SMTP 자격 증명을 받는 방법에 대한 자세한 내용은 [Amazon SES SMTP 자격 증명 획득](smtp-credentials.md) 섹션을 참조하세요.

## Amazon SES SMTP 인터페이스와의 연결 테스트
<a name="send-email-smtp-client-command-line-testing"></a>

명령줄을 사용하여 메시지를 인증하거나 보내지 않고 Amazon SES SMTP 인터페이스와의 연결을 테스트할 수 있습니다. 기본적인 연결 문제를 해결하는 데 이 절차가 유용합니다. 테스트 연결에 실패하는 경우 [SMTP 문제](troubleshoot-smtp.md) 섹션을 참조하세요.

이 섹션에는 OpenSSL(대부분의 Linux, macOS 및 Unix 배포에 포함되고 Windows에서도 사용 가능함)과 PowerShell의 `Test-NetConnection` cmdlet(대부분의 최신 Windows 버전에 포함됨)을 둘 다 사용하여 연결을 테스트하는 절차가 나와 있습니다.

------
#### [ Linux, macOS, or Unix ]

Amazon SES SMTP 인터페이스를 OpenSSL과 연결하는 두 가지 방법이 있습니다. 포트 587을 통해 명시적 SSL을 사용하거나 포트 465를 통해 암시적 SSL을 사용하는 것입니다.

**명시적 SSL을 사용하여 SMTP 인터페이스에 연결하려면**
+ 명령줄에 다음 명령을 입력하여 Amazon SES SMTP 서버에 연결합니다.

  ```
  openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587
  ```

  앞의 명령에서 *email-smtp.us-west-2.amazonaws.com* AWS 리전의 Amazon SES SMTP 엔드포인트 URL로 바꿉니다. 자세한 내용은 [리전 및 Amazon SES](regions.md) 단원을 참조하십시오.

  연결이 성공하면 다음과 비슷한 출력이 보입니다.

  ```
  depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
  verify return:1
  depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
  verify return:1
  depth=0 CN = email-smtp.us-west-2.amazonaws.com
  verify return:1
  250 Ok
  ```

  비활성 시간이 약 10초 이상 지속되면 연결이 자동으로 닫힙니다.

또는 암시적 SSL을 사용하여 포트 465를 통해 SMTP 인터페이스에 연결할 수 있습니다.

**암시적 SSL을 사용하여 SMTP 인터페이스에 연결하려면**
+ 명령줄에 다음 명령을 입력하여 Amazon SES SMTP 서버에 연결합니다.

  ```
  openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465
  ```

  앞의 명령에서 *email-smtp.us-west-2.amazonaws.com* AWS 리전의 Amazon SES SMTP 엔드포인트 URL로 바꿉니다. 자세한 내용은 [리전 및 Amazon SES](regions.md) 단원을 참조하십시오.

  연결이 성공하면 다음과 비슷한 출력이 보입니다.

  ```
  depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
  verify return:1
  depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
  verify return:1
  depth=0 CN = email-smtp.us-west-2.amazonaws.com
  verify return:1
  220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-VCSHDP1YZ A1b2C3d4E5f6G7h8I9j0
  ```

  비활성 시간이 약 10초 이상 지속되면 연결이 자동으로 닫힙니다.

------
#### [ PowerShell ]

PowerShell에서 [Test-NetConnection](https://docs.microsoft.com/en-us/powershell/module/nettcpip/test-netconnection) cmdlet을 사용하여 Amazon SES SMTP 서버에 연결할 수 있습니다.

**참고**  
`Test-NetConnection` cmdlet를 통해 컴퓨터가 Amazon SES SMTP 엔드포인트에 연결할 수 있는지 여부를 확인할 수 있습니다. 하지만 컴퓨터가 SMTP 엔드포인트에 대한 암시적 또는 명시적 SSL 연결을 만들 수 있는지 여부는 테스트하지 않습니다. SSL 연결을 테스트하려면 Windows용 OpenSSL을 설치하거나 테스트 이메일을 보낼 수 있습니다.

**`Test-NetConnection` cmdlet를 사용하여 SMTP 인터페이스에 연결하려면**
+ PowerShell에 다음 명령을 입력하여 Amazon SES SMTP 서버에 연결합니다.

  ```
  Test-NetConnection -Port 587 -ComputerName email-smtp.us-west-2.amazonaws.com
  ```

  앞의 명령에서 *email-smtp.us-west-2.amazonaws.com* 리전의 Amazon SES SMTP 엔드포인트 URL로 바꾸고 AWS *587*을 포트 번호로 바꿉니다. Amazon SES의 리전 엔드포인트에 대한 자세한 내용은 [리전 및 Amazon SES](regions.md) 섹션을 참조하세요.

  연결이 성공하면 다음 예제와 유사한 출력이 표시됩니다.

  ```
  ComputerName     : email-smtp.us-west-2.amazonaws.com
  RemoteAddress    : 198.51.100.126
  RemotePort       : 587
  InterfaceAlias   : Ethernet
  SourceAddress    : 203.0.113.46
  TcpTestSucceeded : True
  ```

------

## 명령줄을 사용하여 Amazon SES SMTP 인터페이스를 통해 이메일 전송
<a name="send-email-using-openssl"></a>

명령줄을 사용하여 Amazon SES SMTP 인터페이스를 통해 메시지를 보낼 수도 있습니다. SMTP 자격 증명을 테스트할 때나, Amazon SES를 사용하여 보내는 메시지를 특정 수신자가 받을 수 있는지 테스트할 때 이 절차가 유용합니다.

------
#### [ Linux, macOS, or Unix ]

이메일 발신자가 SMTP 서버에 연결하면 클라이언트가 표준 요청 세트를 발행하고 서버가 각 요청에 표준 응답으로 회신합니다. 이러한 일련의 요청 및 응답을 *SMTP 대화*라고 합니다. OpenSSL을 사용하여 Amazon SES SMTP 서버에 연결하면 서버가 SMTP 대화가 발생할 것을 예상합니다.

OpenSSL을 사용하여 SMTP 인터페이스에 연결하려면 base64 인코딩을 사용하여 SMTP 자격 증명을 인코딩해야 합니다. 이 섹션에는 base64를 사용하여 자격 증명을 인코딩하는 절차가 나와 있습니다.

**SMTP 인터페이스를 통해 명령줄에서 이메일을 보내려면**

1. 다음을 명령줄에 입력하고 *email-smtp.us-west-2.amazonaws.com*을 AWS 리전의 Amazon SES SMTP 엔드포인트의 URL로 대체합니다. 자세한 내용은 단원을 참조하십시오[리전 및 Amazon SES](regions.md).

   ```
    1. #!/bin/bash
    2. 
    3. # Prompt user to provide following information
    4. read -p "Configuration set: " CONFIGSET
    5. read -p "Enter SMTP username: " SMTPUsername
    6. read -p "Enter SMTP password: " SMTPPassword
    7. read -p "Sender email address: " MAILFROM
    8. read -p "Receiver email address: " RCPT
    9. read -p "Email subject: " SUBJECT
   10. read -p "Message to send: " DATA
   11. 
   12. echo
   13. 
   14. # Encode SMTP username and password using base64
   15. EncodedSMTPUsername=$(echo -n "$SMTPUsername" | openssl enc -base64)
   16. EncodedSMTPPassword=$(echo -n "$SMTPPassword" | openssl enc -base64)
   17. 
   18. # Construct the email
   19. Email="EHLO example.com
   20. AUTH LOGIN
   21. $EncodedSMTPUsername
   22. $EncodedSMTPPassword
   23. MAIL FROM: $MAILFROM
   24. RCPT TO: $RCPT
   25. DATA
   26. X-SES-CONFIGURATION-SET: $CONFIGSET
   27. From: $MAILFROM
   28. To: $RCPT
   29. Subject: $SUBJECT
   30. 
   31. $DATA
   32. .
   33. QUIT"
   34. 
   35. echo "$Email" | openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587
   ```

1. 각 변수에 대한 프롬프트에 값을 입력합니다.

1. 
   + 포트 465를 통해 암시적 SSL을 사용하여 전송하려면 다음을 사용합니다.

     ```
     openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465
     ```

   Amazon SES에서 메시지를 수락하면 다음 예제와 유사한 출력이 표시됩니다.

   ```
   250 Ok 01010160d7de98d8-21e57d9a-JZho-416c-bbe1-8ebaAexample-000000
   ```

   `250 Ok` 뒤에 나오는 숫자 및 텍스트 문자열이 이메일의 메시지 ID입니다.
**참고**  
비활성 시간이 약 10초 이상 지속되면 연결이 자동으로 닫힙니다.

------
#### [ PowerShell ]

[Net.Mail.SmtpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8) 클래스를 이용하면 포트 587을 통해 명시적 SSL을 사용하여 이메일을 보낼 수 있습니다.

**참고**  
이 `Net.Mail.SmtpClient` 클래스는 공식적으로 사용되지 않으므로 타사 라이브러리를 사용하는 것이 좋습니다. 이 코드는 테스트 목적으로만 사용되며 프로덕션 워크로드에 사용해서는 안 됩니다.

**명시적 SSL을 사용하여 PowerShell을 통해 이메일을 보내려면**

1. 텍스트 편집기에서 새로운 파일을 생성합니다. 다음 코드를 파일에 붙여넣습니다.

   ```
   function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) {
       $Credentials = [Net.NetworkCredential](Get-Credential)
   
       $SMTPClient = New-Object Net.Mail.SmtpClient($Server, $Port)
       $SMTPClient.EnableSsl = $true
       $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Credentials.Username, $Credentials.Password);
   
       try {
           Write-Output "Sending message..."
           $SMTPClient.Send($Sender, $Recipient, $Subject, $Body)
           Write-Output "Message successfully sent to $($Recipient)"
       } catch [System.Exception] {
           Write-Output "An error occurred:"
           Write-Error $_
       }
   }
   
   function SendTestEmail(){
       $Server = "email-smtp.us-west-2.amazonaws.com"
       $Port = 587
   
       $Subject = "Test email sent from Amazon SES"
       $Body = "This message was sent from Amazon SES using PowerShell (explicit SSL, port 587)."
   
       $Sender = "sender@example.com"
       $Recipient = "recipient@example.com"
   
       SendEmail $Server $Port $Sender $Recipient $Subject $Body
   }
   
   SendTestEmail
   ```

   작업을 마치면 파일 이름을 `SendEmail.ps1`(으)로 저장합니다.

1. 이전 단계에서 생성한 파일을 다음과 같이 변경합니다.
   + *sender@example.com*을 메시지 발신자 이메일 주소로 바꿉니다.
   + *recipient@example.com*을 메시지 수신자 이메일 주소로 바꿉니다.
   + *email-smtp.us-west-2.amazonaws.com*을 AWS 리전의 Amazon SES SMTP 엔드포인트 URL로 바꿉니다. 자세한 내용은 [리전 및 Amazon SES](regions.md) 단원을 참조하십시오.

1. PowerShell에 다음 명령을 입력합니다.

   ```
   .\path\to\SendEmail.ps1
   ```

   위의 명령에서 *path\$1to\$1SendEmail.ps1*을 1단계에서 생성한 파일의 경로로 바꿉니다.

1. 메시지가 표시되면 SMTP 사용자 이름과 암호를 입력합니다.

또는 [System.Web.Mail.SmtpMail](https://docs.microsoft.com/en-us/dotnet/api/system.web.mail.smtpmail?view=netframework-4.8) 클래스를 이용하면 포트 465를 통해 암시적 SSL을 사용하여 이메일을 보낼 수 있습니다.

**참고**  
이 `System.Web.Mail.SmtpMail` 클래스는 공식적으로 사용되지 않으므로 타사 라이브러리를 사용하는 것이 좋습니다. 이 코드는 테스트 목적으로만 사용되며 프로덕션 워크로드에 사용해서는 안 됩니다.

**암시적 SSL을 사용하여 PowerShell을 통해 이메일을 보내려면**

1. 텍스트 편집기에서 새로운 파일을 생성합니다. 다음 코드를 파일에 붙여넣습니다.

   ```
   [System.Reflection.Assembly]::LoadWithPartialName("System.Web") > $null
   
   function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) {
       $Credentials = [Net.NetworkCredential](Get-Credential)
   
       $mail = New-Object System.Web.Mail.MailMessage
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", $Server)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", $Port)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", $true)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", $Credentials.UserName)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", $Credentials.Password)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout", $timeout / 1000)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
   
       $mail.From = $Sender
       $mail.To = $Recipient
       $mail.Subject = $Subject
       $mail.Body = $Body
   
       try {
           Write-Output "Sending message..."
           [System.Web.Mail.SmtpMail]::Send($mail)
           Write-Output "Message successfully sent to $($Recipient)"
       } catch [System.Exception] {
           Write-Output "An error occurred:"
           Write-Error $_
       }
   }
   
   function SendTestEmail(){
       $Server = "email-smtp.us-west-2.amazonaws.com"
       $Port = 465
       
       $Subject = "Test email sent from Amazon SES"
       $Body = "This message was sent from Amazon SES using PowerShell (implicit SSL, port 465)."
   
       $Sender = "sender@example.com"
       $Recipient = "recipient@example.com"
   
       SendEmail $Server $Port $Sender $Recipient $Subject $Body
   }
   
   SendTestEmail
   ```

   작업을 마치면 파일 이름을 `SendEmail.ps1`(으)로 저장합니다.

1. 이전 단계에서 생성한 파일을 다음과 같이 변경합니다.
   + *sender@example.com*을 메시지 발신자 이메일 주소로 바꿉니다.
   + *recipient@example.com*을 메시지 수신자 이메일 주소로 바꿉니다.
   + *email-smtp.us-west-2.amazonaws.com*을 AWS 리전의 Amazon SES SMTP 엔드포인트 URL로 바꿉니다. 자세한 내용은 [리전 및 Amazon SES](regions.md) 단원을 참조하십시오.

1. PowerShell에 다음 명령을 입력합니다.

   ```
   .\path\to\SendEmail.ps1
   ```

   위의 명령에서 *path\$1to\$1SendEmail.ps1*을 1단계에서 생성한 파일의 경로로 바꿉니다.

1. 메시지가 표시되면 SMTP 사용자 이름과 암호를 입력합니다.

------