Como posso enviar e-mails usando o recurso Amazon SES quando minha instância do RDS para SQL Server está em uma sub-rede pública ou privada?

Data da última atualização: 28/09/2022

Quero enviar e-mails usando o recurso Amazon Simple Email Service (Amazon SES). Como posso fazer isso usando uma instância do Amazon Relational Database Service (Amazon RDS) para SQL Server hospedada em uma sub-rede pública ou privada?

Breve descrição

Para enviar e-mails com o Amazon SES usando uma instância de banco de dados do Amazon RDS para SQL Server, primeiro crie suas credenciais de protocolo SMPT usando o Amazon SES. Em seguida, crie um grupo de parâmetros para usar com o Database Mail. Se a sua instância de banco de dados estiver hospedada em uma sub-rede privada, configure o endpoint de VPC para uso no seu perfil do Database Mail.

Resolução

Configurar o Amazon SES

1.    Abra o console do Amazon SES e escolha SMTP settings (Configurações SMTP).

2.    Observe os valores listados para Server name (Nome do servidor) e Port (Porta).

3.    Escolha Create SMTP credentials (Criar credenciais SMTP). Isso abre o console do AWS Identity and Access Management (IAM).

4.    Em IAM User Name (Nome de usuário do IAM), insira um usuário ou prossiga com o usuário padrão e escolha Create (Create).

5.    Escolha Download credentials (Baixar credenciais). Como essa é a única vez em que você pode baixar suas credenciais SMTP, não se esqueça de salvá-las em algum lugar seguro.

6.    Abra o console do Amazon SES e escolha Email Addresses (Endereços de e-mail).

7.    Escolha Verify a new email address (Verificar um novo endereço de e-mail) e, em seguida, insira o endereço de e-mail no qual você deseja receber um e-mail de confirmação.

8.    Depois de confirmar seu endereço de e-mail, confirme se o seu status de verificação em Verification status é Verified (Verificado).

Configurar um grupo de parâmetros do Database Mail

Se você já tem um grupo de parâmetros personalizados para usar com seu perfil do Database Mail, pule essa etapa.

1.    Abra o console do Amazon RDS e escolha Parameter groups (Grupos de parâmetros) no painel de navegação.

2.    Escolha Create parameter group (Criar grupo de parâmetros).

3.    Em Parameter group family (Família de grupos de parâmetros), escolha a versão e a edição do SQL Server que você está usando. Por exemplo, o SQL Server 2016 Enterprise Edition usa sqlserver-ee-13.0.

4.    Insira valores em Group name (Nome do grupo) e Description (Descrição) e escolha Create (Criar).

5.    Na página Parameter groups (Grupos de parâmetros), escolha o grupo que você criou.

6.    Escolha Edit parameters (Editar parâmetros) e marque a caixa ao lado de database mail xps.

7.    Em Values (Valores), escolha 1.

8.    Salve suas alterações.

Observação: se o grupo de parâmetros já estiver associado à sua instância do RDS para SQL Server, ignore essas etapas.

9.    No console do Amazon RDS, escolha Database (Banco de dados) e depois Modify (Modificar).

10.    Em Database options (Opções de banco de dados), escolha o parâmetro que você configurou anteriormente e depois escolha Continue (Continuar).

11.    Em Scheduling of modifications (Programação de modificações), escolha Immediately (Imediatamente).

12.    Escolha Modify DB Instance (Modificar instância) de banco de dados para aplicar as alterações e reinicialize sua instância.

Configurar o Database Mail

Se a sua instância do RDS para SQL Server estiver hospedada em uma sub-rede pública, siga as etapas em Configurar o Database Mail.

Porém, se a sua instância estiver em uma sub-rede privada, você poderá ver o seguinte erro ao configurar o Database Mail:

“O e-mail não pôde ser enviado aos destinatários devido a uma falha do servidor de e-mail. (Enviando e-mail usando a Conta 1 (2020-12-08T 22:20:51). Mensagem de exceção: Não foi possível conectar-se ao servidor de e-mail. (Uma tentativa de conexão falhou porque a parte conectada não respondeu adequadamente após um período de tempo, ou a conexão estabelecida falhou porque o host conectado não respondeu 52.63.118.124:587).”

Esse erro indica que sua instância de banco de dados não consegue acessar o servidor de e-mail. Para resolver isso, crie um endpoint de VPC para o Amazon SNS.

1.    Identifique o IP privado da sua instância.

2.    Crie um novo grupo de segurança com uma regra de entrada para o grupo de segurança associado à sua instância. Para Type (Tipo), selecione Custom TCP (TCP personalizado). Em Port range (Intervalo de portas), insira o número da porta que você deseja usar para enviar e-mail. Você pode usar 25, 465, 587, 2465 ou 2587. Em Source type (Tipo de origem), escolha Custom (Personalizado). Em Source (Origem), insira o IP privado da sua instância do RDS para SQL Server.

3.    Crie um endpoint de VPC. Depois que o endpoint de VPC estiver no estado disponível, escolha-o e copie a primeira entrada encontrada no campo DNS.

4.    Recrie a conta do Database Mail:

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' ;

Observação: substitua @mailserver_name pelo DNS que você obteve ao criar o endpoint de VPC.

5.    Se você configurou o Database Mail corretamente, quando executar esse comando SQL, o e-mail será enviado com êxito.

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.    Em seguida, execute esse procedimento armazenado para listar e verificar todos os itens de e-mail. Na coluna sent_status, verifique se o status é Sent (Enviado).

SELECT * FROM msdb.dbo.sysmail_allitems