Amazon Simple Email Service(Amazon SES)를 사용하여 프라이빗 또는 퍼블릭 서브넷에서 호스팅되는 Amazon Relational Database Service(Amazon RDS) for Microsoft SQL Server 인스턴스에서 이메일을 보내고 싶습니다.
해결 방법
Amazon SES 설정
Amazon SES 콘솔을 사용하여 SMTP(Simple Mail Transfer Protocol) 자격 증명을 가져올 수 있습니다.
확인 이메일을 받으려면 다음 단계를 완료하십시오.
- Amazon SES 콘솔을 연 다음 이메일 주소를 선택합니다.
- 새 이메일 주소 확인을 선택한 다음 확인 이메일을 수신할 이메일 주소를 입력합니다.
- 검증 상태가 확인됨인지 확인합니다.
데이터베이스 메일 파라미터 그룹 설정
참고: 데이터베이스 메일에 사용할 사용자 지정 파라미터 그룹이 이미 있는 경우 데이터베이스 메일 구성 섹션을 진행하십시오. 파라미터 그룹이 RDS for SQL Server 인스턴스와 이미 연결되어 있는 경우 이 섹션의 다음 단계를 진행하십시오.
사용자 지정 파라미터 그룹을 생성하려면 다음 단계를 완료하십시오.
- Aurora 및 RDS 콘솔을 엽니다.
- 파라미터 그룹을 선택한 다음 파라미터 그룹 생성을 선택합니다.
- 파라미터 그룹 패밀리에서 사용 중인 SQL Server 버전 및 에디션을 선택합니다. 예를 들어 SQL Server 2016 Enterprise Edition은 sqlserver-ee-13.0을 사용합니다.
- 그룹 이름 및 설명을 입력한 다음 생성을 선택합니다.
- 파라미터 그룹 페이지에서 그룹을 선택합니다.
- 파라미터 편집을 선택한 다음 database mail xps를 선택합니다.
- 값에서 1을 선택합니다.
- 저장을 선택합니다.
파라미터 그룹을 RDS for SQL Server 인스턴스와 연결하려면 다음 단계를 완료하십시오.
- Aurora 및 RDS 콘솔을 엽니다.
- 데이터베이스를 선택한 다음 수정을 선택합니다.
- 데이터베이스 옵션에서 파라미터 그룹을 선택한 다음, 계속을 선택합니다.
- 수정 사항 예약에서 즉시를 선택합니다.
- DB 인스턴스 수정을 선택하여 변경 사항을 적용한 후 인스턴스를 재부팅합니다.
데이터베이스 메일 구성
RDS for SQL Server 인스턴스가 퍼블릭 서브넷에서 호스팅되는 경우 데이터베이스 메일을 구성할 수 있습니다.
인스턴스가 프라이빗 서브넷에 있는 경우 데이터베이스 메일을 구성할 때 다음과 같은 오류 메시지가 표시될 수 있습니다.
"The mail could not be sent to the recipients because of the mail server failure. Exception Message: Could not connect to mail server."
위의 오류 메시지가 표시된다면 DB 인스턴스가 메일 서버에 연결할 수 없는 것입니다. 이 문제를 해결하려면 Amazon SES용 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트를 생성하십시오.
다음 단계를 완료하십시오.
-
인스턴스의 프라이빗 IP 주소를 식별합니다.
-
인스턴스와 연결된 보안 그룹에 대한 인바운드 규칙을 사용하여 새 보안 그룹을 생성합니다.
유형에서 사용자 지정 TCP를 선택합니다.
포트 범위에 이메일을 보내는 데 사용할 포트 번호를 입력합니다. 25, 465, 587, 2465 또는 2587을 사용할 수 있습니다.
소스 유형에서 사용자 지정을 선택합니다.
소스에 RDS for SQL Server 인스턴스의 프라이빗 IP 주소를 입력합니다.
-
VPC 엔드포인트를 생성합니다.
-
엔드포인트를 선택한 다음 DNS 필드 아래에 있는 첫 번째 이름을 기록해 둡니다.
-
데이터베이스 메일 계정을 재생성합니다.
use msdbgo
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Acc1',
@description = 'Mail account for sending outgoing
notifications.',
@email_address = 'example@example.com',
@display_name = 'Automated Mailer',
@mailserver_name =
'vpce-0a9cxxxxxxxxxxxxx-xxxxxxxx.email-smtp.ap-southeast-2.vpce.amazonaws.com',
<---- VPC endpoint created in previous step
@port = 587,
@enable_ssl = 1,
@username = 'SMTP-username', <---- For user name and
password, please use the SES credentials
@password = 'SMTP-password' ;
참고: @mailserver_name을 DNS 필드에서 보고 기록해 둔 DNS 이름으로 바꾸십시오.
-
다음 명령을 실행하여 데이터베이스 메일이 올바르게 구성되었는지 확인합니다.
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Notifications', @recipients = 'success@simulator.amazonses.com',@body = 'The database mail configuration was completed successfully.',
@subject = 'Automated Success Message';
참고: 데이터베이스 메일이 올바르게 구성된 경우 이메일이 전송됩니다.
-
다음 저장 프로시저를 실행하여 모든 이메일 항목을 확인합니다.
SELECT * FROM msdb.dbo.sysmail_allitems
-
sent_status 열에서 상태가 전송됨인지 확인합니다.
관련 정보
Amazon RDS Custom for SQL Server DB 인스턴스 관리
Amazon RDS for SQL Server에서 데이터베이스 메일 사용