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?

5 minuto de leitura
0

Quero enviar e-mails com o recurso Amazon Simple Email Service (Amazon SES). Quero usar 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 Amazon RDS para SQL Server, crie primeiro suas credenciais do Simple Mail Transfer Protocol (SMTP) usando o Amazon SES. Em seguida, crie um grupo de parâmetros para usar com o Database Mail. Se sua instância de banco de dados estiver hospedada em uma sub-rede privada, configure o endpoint da VPC para uso em seu perfil do Database Mail.

Resolução

Configurar o Amazon SES

1.    Abra o console do Amazon SES e escolha as configurações do SMTP.

2.    Observe os valores listados para Nome do servidor e Porta.

3.    Escolha Criar credenciais SMTP. Abra o console do AWS Identity and Access Management (IAM).

4.    Em Nome de usuário do IAM, insira um usuário ou continue com o usuário padrão e escolha Criar.

5.    Escolha Baixar credenciais. Essa é a única vez em que você pode baixar suas credenciais do SMTP; portanto, certifique-se de salvá-las em algum lugar seguro.

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

7.    Escolha Verificar um novo endereço de e-mail e, em seguida, insira o endereço de e-mail em que você deseja receber um e-mail de confirmação.

8.    Depois de confirmar seu endereço de e-mail, confirme se seu Status da verificação foi verificado.

Configurar um grupo de parâmetros do Database Mail

Se você já tiver um grupo de parâmetros personalizado para usar com seu perfil do Database Mail, pule esta etapa.

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

2.    Escolha Criar grupo de parâmetros.

3.    Para 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 um Nome de grupo e uma Descrição e, em seguida, escolha Criar.

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

6.    Escolha Editar parâmetros e marque a caixa ao lado do database mail xps.

7.    Em Valores, escolha 1.

8.    Salve as 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 Banco de dados e, em seguida, escolha Modificar.

10.    Em Opções do banco de dados, escolha o parâmetro que você configurou anteriormente e escolha Continuar.

11.    Em Programação de modificações, escolha Imediatamente.

12.    Escolha Modificar instância de banco de dados para aplicar as alterações e, em seguida, reinicialize sua instância.

Configurar o Database Mail

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

Mas, se sua instância estiver em uma sub-rede privada, você poderá ver esse erro ao configurar o Database Mail:

“O e-mail não pôde ser enviado aos destinatários devido à falha do servidor de e-mail. (Enviando e-mails 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 determinado período, 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 da VPC para o Amazon SES.

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**.** Em Tipo, escolha TCP personalizado. Em 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 Tipo de fonte, escolha Personalizado. Em Origem, insira o IP privado da sua instância do RDS para SQL Server.

3.    Crie um endpoint da VPC. Depois que o endpoint da VPC estiver no estado disponível, escolha o endpoint 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 da VPC.

5.    Se você configurou o Database Mail corretamente, ao 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 enviada, verifique se o status foi enviado.

SELECT * FROM msdb.dbo.sysmail_allitems

Informações relacionadas

Gerenciar um Amazon RDS Custom para instância de banco de dados do SQL Server

Usar o Database Mail no Amazon RDS para SQL Server