Amazon Simple Email Service(Amazon SES) 특성을 사용하여 이메일을 보내고 싶습니다. 프라이빗 또는 퍼블릭 서브넷에서 호스팅되는 Amazon Relational Database Service(RDS) for SQL 인스턴스를 사용하고 싶습니다.
간략한 설명
Amazon RDS for SQL Server DB 인스턴스를 사용하여 Amazon SES로 이메일을 보내려면 먼저 Amazon SES를 사용하여 단순 메일 프로토콜 전송(SMTP) 보안 인증 정보를 생성합니다.
그런 다음 데이터베이스 메일에 사용할 파라미터 그룹을 만듭니다.
DB 인스턴스가 프라이빗 서브넷에서 호스팅되는 경우, 데이터베이스 메일 프로필에서 사용할 VPC 엔드포인트를 구성합니다.
해결 방법
Amazon SES 설정
Amazon SES 콘솔을 연 다음, SMTP 설정을 선택합니다.
서버 이름 및 포트에 나열된 값을 기록해 둡니다.
SMTP 보안 인증 정보 생성을 선택합니다.
그러면 AWS Identity and Access Management(AWS IAM) 콘솔이 열립니다.
IAM 사용자 이름에 사용자를 입력하거나 기본 사용자로 계속 진행 후 생성을 선택합니다.
보안 인증 정보 다운로드를 선택합니다.
이때만 SMTP 보안 인증 정보를 다운로드할 수 있으므로 안전한 곳에 저장해야 합니다.
Amazon SES 콘솔을 연 다음 이메일 주소를 선택합니다.
새 이메일 주소 확인을 선택한 다음 확인 이메일을 수신할 이메일 주소를 입력합니다.
이메일 주소를 확인한 후 확인 상태가 확인됨인지 확인합니다.
데이터베이스 메일 파라미터 그룹 설정
데이터베이스 메일 프로필에 사용할 사용자 지정 파라미터 그룹이 이미 있는 경우 이 단계를 건너뜁니다.
Amazon RDS 콘솔을 연 다음 탐색 창에서 파라미터 그룹을 선택합니다.
파라미터 그룹 생성을 선택합니다.
파라미터 그룹 패밀리에서 사용 중인 SQL Server 버전 및 에디션을 선택합니다.
예를 들어 SQL Server 2016 Enterprise Edition은 sqlserver-ee-13.0을 사용합니다.
그룹 이름 및 설명을 입력한 다음 생성을 선택합니다.
파라미터 그룹 페이지에서 생성한 그룹을 선택합니다.
파라미터 편집을 선택하고 데이터베이스 메일 xps 옆의 확인란을 선택합니다.
값에서 1을 선택합니다.
변경 내용을 저장합니다.
참고:
파라미터 그룹이 이미 RDS for SQL Server 인스턴스와 연결되어 있는 경우 이 단계를 건너뜁니다.
Amazon RDS 콘솔에서 데이터베이스를 선택한 다음 수정을 선택합니다.
데이터베이스 옵션에서 이전에 구성한 파라미터를 선택한 다음 계속을 선택합니다.
수정 사항 예약에서 즉시를 선택합니다.
DB 인스턴스 수정을 선택하여 변경 사항을 적용한 후 인스턴스를 재부팅합니다.
데이터베이스 메일 구성
RDS for SQL Server 인스턴스가 퍼블릭 서브넷에서 호스팅되는 경우 데이터베이스 메일 구성의 단계를 따릅니다.
그러나 인스턴스가 프라이빗 서브넷에 있는 경우 데이터베이스 메일을 구성할 때 다음 오류가 표시될 수 있습니다.
"The mail could not be sent to the recipients because of the mail server failure.(Sending Mail using Account 1 (2020-12-08T22:20:51). 예외 메시지:
메일 서버에 연결할 수 없습니다.
(A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 52.63.118.124:587)."
이 오류는 DB 인스턴스가 메일 서버에 연결할 수 없음을 나타냅니다.
이 문제를 해결하려면 Amazon SES용 VPC 엔드포인트를 생성합니다.
인스턴스의 프라이빗 IP를 식별합니다.
인스턴스와 연결된 보안 그룹에 대한 인바운드 규칙을 사용하여 새 보안 그룹을 생성합니다**.** 유형에서 사용자 지정 TCP를 선택합니다.
포트 범위에 이메일을 보내는 데 사용할 포트 번호를 입력합니다.
25, 465, 587, 2465 또는 2587을 사용할 수 있습니다.
소스 유형에서 사용자 지정을 선택합니다.
소스에 RDS for SQL Server 인스턴스의 프라이빗 IP를 입력합니다.
VPC 엔드포인트를 생성합니다.
VPC 엔드포인트가 사용 가능한 상태가 되면 엔드포인트를 선택한 다음 DNS 필드 아래에 있는 첫 번째 항목을 복사합니다.
데이터베이스 메일 계정을 다시 만듭니다.
use msdb
go
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을 VPC 엔드포인트 생성 시 가져온 DNS로 바꿉니다.
데이터베이스 메일을 올바르게 구성한 경우 이 SQL 명령을 실행하면 이메일이 성공적으로 전송됩니다.
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';
다음으로 저장된 절차를 실행하여 모든 이메일 항목을 나열하고 확인합니다.
sent_status 열에서 상태가 전송되었는지 확인합니다.
SELECT * FROM msdb.dbo.sysmail_allitems
관련 정보
Amazon RDS Custom for SQL Server DB 인스턴스 관리
Amazon RDS for SQL Server에서 데이터베이스 메일 사용