Amazon SES의 프로덕션 액세스(샌드박스)를 요청해 봤습니다.
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번 블로그에서는 Amazon SES의 프로덕션 액세스(샌드박스)를 요청해 봤습니다.
EC2에서 Amazon SES를 활용하여 메일을 송싱하는 방법은 아래 블로그를 참고해 주세요.
프로덕션 액세스(샌드박스) 요청
먼저 Amazon SES 콘솔에서 설정 시작 페이지 보기를 클릭합니다.

프로덕션 액세스(샌드박스)를 요청하려면 먼저 도메인 인증을 완료해야 합니다.
도메인 인증 방법은 아래 블로그를 참고해 주세요.
도메인 인증이 완료되면 아래와 같이 프로덕션 액세스 요청 버튼을 클릭합니다.
※ 도메인 인증이 완료되지 않은 상태에서는 프로덕션 액세스 요청을 진행할 수 없습니다.

프로덕션 액세스 요청 버튼을 클릭하면 아래와 같은 신청 폼이 표시됩니다.

각 입력 항목은 아래 표를 참고해 주세요.
| 항목 | 내용 | 비고 |
|---|---|---|
| 메일 타입 (Mail Type) |
Marketing(마케팅) 또는 Transactional(트랜잭션) 중 선택 - Marketing: 서비스의 일반 이용자 등을 대상으로 마케팅·프로모션 콘텐츠를 발송하는 경우 - Transactional: 서비스의 개발·운영 담당자 등을 대상으로, 비밀번호 재설정 요청과 같은 사용자 액션을 트리거로 발송하는 경우 |
대량 홍보성 메일이 아니라 알림/인증 목적이라면 대부분 Transactional 선택 |
| 웹사이트 URL (Website URL) |
메일 발송과 관련하여 참고할 수 있는 웹사이트 URL을 입력 | 블로그 작성 당시 테스트 용도로 만든 웹 페이지의 URL 입력했습니다. |
| 유스케이스 설명 (Use Case Description) |
제한 해제된 SES를 어떤 용도로 사용할 것인지 구체적으로 설명 | 발송 대상, 발송 목적, 반송(Bounce)/불만(Complaint) 처리 방식 등을 함께 기술하면 승인율이 높아짐 |
| 기타 연락처 (Additional Contact Addresses) |
신청 관련 안내를 받을 이메일 주소 | 쉼표(,)로 구분하여 최대 4개까지 등록 가능 |
| 연락 시 사용 언어 (Preferred Language) |
・English ・Japanese |
한국어는 지원되지 않음 |
※ 계정에 따라 유스케이스 설명 항목이 표시되지 않을 수 있습니다. 해당 항목이 없다면 입력하지 않고 다음 단계로 진행하면 됩니다.
각 항목을 모두 입력했다면 다음 사항에 동의합니다.를 체크한 후 요청 제출을 클릭합니다.

요청 제출을 완료하면 요청 상태가 검토 중으로 변경됩니다.
검토 결과와 진행 상황은 신청 시 입력한 이메일 주소를 통해 안내받을 수 있습니다.

검토가 끝났다면, 프로덕션 액세스(샌드박스) 권한이 부여된 것을 확인할 수 있습니다.
권한 부여 거부가 떴다면 AWS 안내 메일에 따라 대응하도록 합니다.

Amazon SES 테스트
이제 프로덕션 액세스 권한을 부여받았으니 메일 발송을 테스트해 보겠습니다.
프로덕션 액세스를 승인받기 전에는 수신자(본인 메일 주소)로 인증(Verified)된 이메일 주소만 지정할 수 있었습니다.
하지만 프로덕션 액세스 승인 이후에는 인증되지 않은 이메일 주소로도 메일을 발송할 수 있습니다. 아래 예제에서는 PHPMailer를 사용하여 Amazon SES를 통해 메일을 발송합니다.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '/var/www/html/vendor/autoload.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'email-smtp.ap-northeast-1.amazonaws.com';
$mail->SMTPAuth = true;
$mail->Username = 'SES SMTP 유저명';
$mail->Password = 'SES SMTP 패스워드';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom('no-reply@도메인 주소', '회사명 안내드림');
$mail->addAddress('본인 메일 주소');
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = '[회사명] 시스템 메일 발송 테스트 안내';
$mail->Body = '
<div style="font-family: Malgun Gothic, sans-serif; padding: 20px; color: #333;">
<h2 style="color: #2c3e50;">시스템 메일 발송 테스트 안내</h2>
<p>안녕하세요.</p>
<p>본 메일은 <b>메일 발송 시스템(Amazon SES) 정상 동작 여부</b>를 확인하기 위한 테스트 메일입니다.</p>
<p>별도의 조치가 필요하지 않으며, 실제 서비스 안내와는 무관한 내용입니다.</p>
<hr style="border: none; border-top: 1px solid #eee;">
<p style="font-size: 12px; color: #999;">
본 메일은 발신 전용이며, 회신하실 수 없습니다.<br>
문의사항이 있으신 경우 담당자에게 별도로 연락 부탁드립니다.
</p>
</div>
';
$mail->AltBody = '[회사명] 시스템 메일 발송 테스트 안내 - 메일 발송 시스템 정상 동작 확인용 테스트 메일입니다.';
$mail->send();
echo '메일 발송 성공';
} catch (Exception $e) {
echo "메일 발송 실패: {$mail->ErrorInfo}";
}
이제 아래 URL로 접속하여 메일 발송을 테스트합니다.
도메인/test_mail.php
정상적으로 메일이 발송되면 메일 발송 성공이라는 메시지가 표시됩니다.

지정한 이메일 주소를 확인해 보면 메일이 정상적으로 수신된 것을 확인할 수 있습니다.
프로덕션 액세스를 승인받기 전에는 메일이 전송되더라도 스팸 메일함으로 분류되는 경우가 있었지만, 이번에는 정상적으로 받은편지함으로 수신되는 것을 확인할 수 있었습니다.

마무리
이번 글에서는 Amazon SES의 샌드박스 환경에서 시작해 프로덕션 액세스(Production Access)를 요청하고 승인받은 뒤, 실제로 메일 발송 테스트까지 진행하는 과정을 정리해 보았습니다.
초기에는 SES가 기본적으로 샌드박스 모드로 제공되기 때문에, 발신 및 수신 모두 제한이 걸려 있어 실제 서비스 환경에서 바로 사용하기 어렵습니다. 특히 인증되지 않은 이메일 주소로는 메일을 보낼 수 없고, 발송 대상도 제한되기 때문에 테스트 환경으로는 적합하지만 운영 환경에서는 제약이 많습니다.
이러한 제한을 해제하기 위해서는 먼저 도메인 인증을 완료해야 하며, 이후 AWS 콘솔에서 프로덕션 액세스를 요청하는 과정을 거쳐야 합니다. 신청 시에는 메일 발송 목적(Transactional / Marketing), 사용 용도, 웹사이트 정보 등을 명확하게 작성하는 것이 중요하며, 이 과정이 승인 여부에 영향을 줄 수 있습니다.
프로덕션 액세스가 승인되면 더 이상 샌드박스 제약 없이 외부 이메일 주소로 자유롭게 메일을 발송할 수 있습니다. 실제 테스트 결과에서도 확인했듯이, 단순히 발송 성공 여부뿐만 아니라 스팸 필터링 여부에도 차이가 발생하며, 정상적인 받은편지함으로 전달되는 것을 확인할 수 있었습니다.
결과적으로 Amazon SES를 안정적으로 운영하기 위해서는 단순히 SMTP 설정만이 아니라, 도메인 인증과 프로덕션 액세스 승인까지의 전체 흐름을 이해하는 것이 중요합니다. 이 과정을 한 번만 잘 설정해 두면 이후에는 안정적인 메일 발송 인프라를 구축할 수 있어, 서비스 운영 측면에서도 큰 이점을 얻을 수 있습니다.
이 글이 Amazon SES를 처음 설정하거나 샌드박스 해제를 준비하는 분들에게 도움이 되었기를 바랍니다.











