Amazon RDS for SQL Server에서 데이터베이스 메일 사용하기

Amazon RDS for SQL Server에서 데이터베이스 메일 사용하기

데이터베이스 메일(Database Mail)을 이용하면 RDS for SQL Server DB 인스턴스에서 사용자에게 이메일을 보낼 수 있어요. 메시지에 파일이나 쿼리 결과를 담을 수도 있고요. 이 페이지에서 데이터베이스 메일의 구성 요소와 제약 사항, 그리고 실무에서 자주 쓰는 절차를 함께 살펴볼게요.

출처: 문서

본문

Amazon RDS for SQL Server DB 인스턴스에서 데이터베이스 메일(Database Mail)을 사용해 사용자에게 이메일 메시지를 보낼 수 있어요. 메시지에는 파일과 쿼리 결과를 포함할 수 있습니다. 데이터베이스 메일은 다음 구성 요소로 이루어져 있어요.

구성 및 보안 개체 – 프로필과 계정을 만드는 개체로, msdb 데이터베이스에 저장됩니다.

메시징 개체 – 메시지를 보내는 데 사용하는 sp_send_dbmail 저장 프로시저와 메시지에 대한 정보를 담는 데이터 구조가 포함되며, msdb 데이터베이스에 저장됩니다.

로깅 및 감사 개체 – 데이터베이스 메일은 로깅 정보를 msdb 데이터베이스와 Microsoft Windows 애플리케이션 이벤트 로그에 기록합니다.

데이터베이스 메일 실행 파일 – DatabaseMail.exe는 msdb 데이터베이스의 큐를 읽어 이메일 메시지를 전송합니다.

RDS는 Web, Standard, Enterprise 에디션의 모든 SQL Server 버전에서 데이터베이스 메일을 지원합니다.

제한 사항

SQL Server DB 인스턴스에서 데이터베이스 메일을 사용할 때는 다음 제한 사항이 적용됩니다.

  • 데이터베이스 메일은 SQL Server Express 에디션에서는 지원되지 않아요.
  • 데이터베이스 메일 구성 매개변수 수정은 지원되지 않습니다. 기본(프리셋) 값을 확인하려면 sysmail_help_configure_sp 저장 프로시저를 사용하세요.
  • 파일 첨부는 완전히 지원되지 않습니다. 자세한 내용은 "파일 첨부 사용" 섹션을 참고하세요.
  • 최대 파일 첨부 크기는 1MB입니다.
  • Multi-AZ DB 인스턴스에서는 데이터베이스 메일을 위한 추가 구성이 필요해요. 자세한 내용은 "Multi-AZ 배포 고려 사항"을 참고하세요.
  • SQL Server 에이전트를 구성해 사전 정의된 운영자에게 이메일을 보내는 방식은 지원되지 않습니다.

데이터베이스 메일용 Amazon RDS 저장 프로시저 및 함수

Microsoft는 계정과 프로필을 생성·조회·수정·삭제하는 등 데이터베이스 메일을 사용하기 위한 저장 프로시저를 제공합니다. 여기에 더해 RDS는 다음 표에 보이는 데이터베이스 메일용 저장 프로시저와 함수를 제공합니다.

프로시저/함수 설명
rds_fn_sysmail_allitems 다른 사용자가 제출한 메시지를 포함해 보낸 메시지를 보여줍니다.
rds_fn_sysmail_event_log 다른 사용자가 제출한 메시지의 이벤트를 포함해 이벤트를 보여줍니다.
rds_fn_sysmail_mailattachments 다른 사용자가 제출한 메시지의 첨부 파일을 포함해 첨부 파일을 보여줍니다.
rds_sysmail_control 메일 큐(DatabaseMail.exe 프로세스)를 시작하고 중지합니다.
rds_sysmail_delete_mailitems_sp 모든 사용자가 보낸 이메일 메시지를 데이터베이스 메일 내부 테이블에서 삭제합니다.

파일 첨부 사용하기

RDS for SQL Server의 데이터베이스 메일 메시지에서는 다음 파일 첨부 확장자가 지원되지 않습니다: .ade, .adp, .apk, .appx, .appxbundle, .bat, .bak, .cab, .chm, .cmd, .com, .cpl, .dll, .dmg, .exe, .hta, .inf1, .ins, .isp, .iso, .jar, .job, .js, .jse, .ldf, .lib, .lnk, .mde, .mdf, .msc, .msi, .msix, .msixbundle, .msp, .mst, .nsh, .pif, .ps, .ps1, .psc1, .reg, .rgs, .scr, .sct, .shb, .shs, .svg, .sys, .u3p, .vb, .vbe, .vbs, .vbscript, .vxd, .ws, .wsc, .wsf, .wsh.

데이터베이스 메일은 파일 접근 제어에 현재 사용자의 Microsoft Windows 보안 컨텍스트를 사용해요. SQL Server 인증으로 로그인한 사용자는 sp_send_dbmail 저장 프로시저의 @file_attachments 매개변수로 파일을 첨부할 수 없습니다. Windows는 SQL Server가 원격 컴퓨터에서 다른 원격 컴퓨터로 자격 증명을 제공하는 것을 허용하지 않기 때문이에요. 따라서 SQL Server가 실행되는 컴퓨터가 아닌 다른 컴퓨터에서 명령을 실행하면 데이터베이스 메일은 네트워크 공유에서 파일을 첨부할 수 없습니다.

다만 SQL Server 에이전트 작업을 이용하면 파일을 첨부할 수 있어요. SQL Server 에이전트에 대한 자세한 내용은 "Amazon RDS용 SQL Server 에이전트 사용"과 Microsoft 문서의 SQL Server 에이전트를 참고하세요.

Multi-AZ 배포 고려 사항

Multi-AZ DB 인스턴스에서 데이터베이스 메일을 구성하면 이 구성이 보조 인스턴스에 자동으로 전파되지 않아요. Multi-AZ 인스턴스를 Single-AZ 인스턴스로 변환한 뒤 데이터베이스 메일을 구성하고, 다시 Multi-AZ로 변환하길 권장합니다. 그러면 기본 노드와 보조 노드 모두 데이터베이스 메일 구성을 갖게 됩니다.

데이터베이스 메일이 구성된 Multi-AZ 인스턴스에서 읽기 복제본을 만들면, 복제본은 SMTP 서버 비밀번호 없이 구성을 상속받아요. 데이터베이스 메일 계정을 비밀번호로 업데이트해 주세요.

SMTP(포트 25) 제한 제거

기본적으로 AWS는 RDS for SQL Server DB 인스턴스의 SMTP(포트 25) 아웃바운드 트래픽을 차단합니다. 탄력적 네트워크 인터페이스 소유자의 정책에 따라 스팸을 방지하기 위한 것이에요. 필요하다면 이 제한을 제거할 수 있습니다. 자세한 내용은 "Amazon EC2 인스턴스 또는 Lambda 함수에서 포트 25 제한을 어떻게 제거하나요?"를 참고하세요.

더 알아보기 (Learn more)