¿Cómo envío correos electrónicos mediante la característica Amazon SES cuando mi instancia de RDS para SQL Server está en una subred pública o privada?

5 minutos de lectura
0

Quiero enviar correos electrónicos mediante la característica Amazon Simple Email Service (Amazon SES). Quiero usar una instancia de Amazon Relational Database Service (Amazon RDS) para SQL Server alojada en una subred pública o privada.

Breve descripción

Para enviar correos electrónicos con Amazon SES mediante una instancia de base de datos de Amazon RDS para SQL Server, primero cree sus credenciales de protocolo simple de transferencia de correo (simple mail transfer protocol, SMTP) con Amazon SES. A continuación, cree un grupo de parámetros para usarlo con Database Mail. Si la instancia de base de datos está alojada en una subred privada, configure el punto de conexión de VPC para usarlo en su perfil de Database Mail.

Solución

Configurar Amazon SES

1.    Abra la consola de Amazon SES y, a continuación, seleccione Configuración de SMTP.

2.    Anote los valores que aparecen en Nombre del servidor y Puerto.

3.    Elija Crear credenciales de SMTP. Al hacerlo, se abrirá la consola de AWS Identity and Access Management (IAM).

4.    En Nombre de usuario de IAM, especifique un usuario o continúe con el usuario predeterminado y, a continuación, seleccione Crear.

5.    Elija Descargar credenciales. Este es el único momento en el que puede descargar sus credenciales de SMTP, así que asegúrese de guardarlas en un lugar seguro.

6.    Abra la consola de Amazon SES y, a continuación, seleccione Direcciones de correo electrónico.

7.    Elija Verificar una dirección de email nueva, y, a continuación, especifique la dirección de correo electrónico en la que desea recibir un correo electrónico de confirmación.

8.    Después de confirmar la dirección de correo electrónico, confirme que el estado de verificación sea Verificado.

Configurar un grupo de parámetros de Database Mail

Si ya tiene un grupo de parámetros personalizado para usarlo con su perfil de Database Mail, omita este paso.

1.    Abra la consola de Amazon RDS y, a continuación, seleccione Grupos de parámetros en el panel de navegación.

2.    Elija Crear grupo de parámetros.

3.    En Familia de grupos de parámetros, elija la versión y la edición de SQL Server que esté utilizando. Por ejemplo, SQL Server 2016 Enterprise Edition usa sqlserver-ee-13.0.

4.    Especifique valores para Nombre de grupo y Descripción y, a continuación, elija Crear.

5.    En la página Grupos de parámetros, elija el grupo que ha creado.

6.    Elija Editar parámetros y active la casilla situada junto a database mail xps.

7.    En Valores, elija 1.

8.    Guarde los cambios.

Nota: Si el grupo de parámetros ya está asociado a la instancia de RDS para SQL Server, omita estos pasos.

9.    En la consola de Amazon RDS, elija Base de datos y, a continuación, elija Modificar.

10.    En Opciones de base de datos, elija el parámetro que configuró anteriormente y, a continuación, elija Continuar.

11.    En Programación de modificaciones, elija Inmediatamente.

12.    Elija Modificar la instancia de base de datos para aplicar los cambios y, a continuación, reinicie la instancia.

Configurar Database Mail

Si su instancia de RDS para SQL Server está alojada en una subred pública, siga los pasos que se indican en Configuración de Database Mail.

Sin embargo, si la instancia se encuentra en una subred privada, es posible que aparezca este error al configurar Database Mail:

«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). Exception Message: Could not connect to mail server. (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)».

Este error indica que la instancia de base de datos no puede acceder al servidor de correo. Para resolver este problema, cree un punto de conexión de VPC para Amazon SNS.

1.    Identifique la IP privada de su instancia.

2.    Cree un nuevo grupo de seguridad con una regla de entrada para el grupo de seguridad asociado a la instancia**.** En Tipo, elija TCP personalizado. En Rango de puertos, especifique el número de puerto que desea utilizar para enviar correos electrónicos. Puede usar 25, 465, 587, 2465 o 2587. En Tipo de origen, elija Personalizado. En Origen, especifique la IP privada de su instancia de RDS para SQL Server.

3.    Cree un punto de conexión de VPC. Cuando el punto de conexión de VPC esté en estado disponible, elija el punto de conexión y, a continuación, copie la primera entrada que se encuentra en el campo DNS.

4.    Vuelva a crear la cuenta de 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' ;

Nota: Sustituya @mailserver_name por el DNS que obtuvo al crear el punto de conexión de VPC.

5.    Si configuró Database Mail correctamente, cuando ejecute este comando de SQL, el correo electrónico se enviará correctamente.

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.    A continuación, ejecute este procedimiento almacenado para enumerar y verificar todos los elementos del correo electrónico. En la columna sent_status, compruebe que el estado se ha enviado.

SELECT * FROM msdb.dbo.sysmail_allitems

Información relacionada

Administración de una instancia de base de datos para Amazon RDS Custom para SQL Server

Using Database Mail on Amazon RDS for SQL Server