¿Cómo puedo enviar 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?

Última actualización: 28-09-2022

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

Descripción corta

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 para transferencia simple de correo (simple mail protocol transfer, SMPT) 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.

Resolución

Configurar Amazon SES

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

2.    Anote los valores que aparecen en Server name (Nombre de servidor) y Port (Puerto).

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

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

5.    Seleccione Download credentials (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, seleccioneEmail Addresses (Direcciones de correo electrónico).

7.    Seleccione Verify a new email address (Verificar una nueva dirección de correo electrónico) 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 esté 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, elija Parameter groups (Grupos de parámetros) en el panel de navegación.

2.    Elija Create parameter group (Crear grupos de parámetros).

3.    En Parameter group family (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 Group name (Nombre de grupo) y Description (Descripción) y, a continuación, seleccione Create (Crear).

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

6.    Seleccione Edit parameters (Editar parámetros) y active la casilla situada junto a database mail xps.

7.    En Values (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 Database (Base de datos) y, a continuación, elija Modify (Modificar).

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

11.    En Scheduling of modifications (Programación de modificaciones), elija Immediately (Inmediatamente).

12.    Elija Modify DB Instance (Modificar 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).” (No se pudo enviar el correo a los destinatarios debido a un error en el servidor de correo. Envío de correo mediante la cuenta 1 [2020-12-08T 22:20:51]. Mensaje de excepción: no se pudo conectar al servidor de correo. [Un intento de conexión falló porque la parte conectada no respondió correctamente después de un período de tiempo o porque la conexión establecida falló debido a que el host conectado no respondió a 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 Type (Tipo), elija Custom TCP (TCP personalizado). En Port range (Intervalo 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 Source type (Tipo de origen), elija Custom (Personalizado). En Source (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 el 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 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: Reemplace @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 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

Managing an Amazon RDS Custom for SQL Server DB instance (Administrar una instancia de base de datos personalizada de Amazon RDS para SQL Server)

Using Database Mail on Amazon RDS for SQL Server (Uso del correo de base de datos en Amazon RDS para SQL Server)

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?