当我的 RDS for SQL Server 实例位于公有子网或私有子网中时,如何使用 Amazon SES 功能发送电子邮件?

2 分钟阅读
0

我想使用 Amazon Simple Email Service(Amazon SES)功能发送电子邮件。我想使用托管在私有或公有子网中的 Amazon Relational Database Service(Amazon RDS)for SQL Server 实例。

简述

要使用 Amazon RDS for SQL Server 数据库实例通过 Amazon SES 发送电子邮件,请先使用 Amazon SES 创建您的简单邮件传输协议(SMTP)凭证。然后,创建用于数据库邮件的参数组。如果您的数据库实例托管在私有子网中,请配置 VPC 端点以在您的数据库邮件配置文件中使用。

解决方案

设置 Amazon SES

1.    打开 Amazon SES 控制台,然后选择 SMTP 设置

2.    记下列出的服务器名称端口的值。

3.    选择创建 SMTP 凭证。打开 AWS Identity and Access Management(IAM)控制台。

4.对于 IAM 用户名,输入一个用户或使用默认用户,然后选择创建

5.选择下载凭证。这是您唯一一次可以下载 SMTP 凭证的机会,因此请务必将凭证保存在安全的地方。

6.打开 Amazon SES 控制台,然后选择电子邮件地址

7.选择验证新的电子邮件地址,然后输入您想要接收确认电子邮件的电子邮件地址。

8.    确认电子邮件地址后,确认您的验证状态已验证

设置数据库邮件参数组

如果您已经有一个自定义参数组可以用于数据库邮件配置文件,请跳过此步骤。

1.    打开 Amazon RDS 控制台,然后从导航窗格中选择参数组

2.    选择创建参数组

3.    对于参数组系列,选择您正在使用的 SQL Server 版本。例如,SQL Server 2016 企业版是 sqlserver-ee-13.0

4.    输入组名称描述,然后选择创建

5.    在参数组页面上,选择您创建的组。

6.    选择编辑参数,然后选中数据库邮件 xps 旁边的复选框。

7.    对于,选择 1

8.    保存您的更改。

注意: 如果参数组已与您的 RDS for SQL Server 实例关联,请跳过这些步骤。

9.    在 Amazon RDS 控制台中,选择数据库,然后选择修改

10.    在数据库选项下,选择先前配置的参数,然后选择继续

11.    在修改计划下,选择立即

12.    选择修改数据库实例以应用更改,然后重启您的实例。

配置数据库邮件

如果您的 RDS for SQL Server 实例托管在公有子网中,请按照配置数据库邮件中的步骤进行操作。

但是,如果您的实例位于私有子网中,则在配置数据库邮件时可能会看到以下错误:

“由于邮件服务器故障,邮件无法发送给收件人。(使用账户 1 发送邮件 [2020-12-08T22:20:51])。异常消息: 无法连接到邮件服务器。(连接尝试失败,原因是连接方在一段时间后未正确响应,或者建立的连接失败,原因是连接的主机未响应 52.63.118.124:587)。”

此错误表示您的数据库实例无法访问邮件服务器。要解决这个问题,请为 Amazon SES 创建一个 VPC 端点。

1.    识别您的实例的私有 IP

2.    创建一个新的安全组,其中包含与您的实例关联的安全组的入站规则**。对于类型**,请选择自定义 TCP。在端口范围中,输入要用于发送电子邮件的端口号。您可以使用 25、465、587、2465 或 2587。对于源类型,选择自定义。在中,输入您的 RDS for SQL Server 实例的私有 IP。

3.    创建 VPC 端点。VPC 端点处于可用状态后,选择端点,然后复制 DNS 字段下的第一个条目。

4.    重新创建数据库邮件账户:

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。

5.    如果您正确配置了数据库邮件,那么当您运行此 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';

6.    接下来,运行此存储过程以列出并验证所有电子邮件。在 sent_status 列中,验证状态是否为“已发送”。

SELECT * FROM msdb.dbo.sysmail_allitems

相关信息

管理 Amazon RDS Custom for SQL Server 数据库实例

在 Amazon RDS for SQL Server 上使用数据库邮件

AWS 官方
AWS 官方已更新 2 年前