Come posso inviare e-mail utilizzando la funzionalità Amazon SES quando la mia istanza RDS per SQL Server si trova in una sottorete pubblica o privata?

Ultimo aggiornamento: 28/09/2022

Voglio inviare e-mail utilizzando la funzionalità Servizio di email semplice Amazon (Amazon SES). Come posso farlo utilizzando un'istanza di Amazon Relational Database Service (Amazon RDS) per SQL Server ospitata in una sottorete pubblica o privata?

Breve descrizione

Per inviare e-mail con Amazon SES utilizzando un'istanza database di Amazon RDS per SQL Server, devi prima creare le tue credenziali di trasferimento del protocollo di posta semplice (SMTP) tramite Amazon SES. Quindi, crea un gruppo di parametri da utilizzare con Database Mail. Se la tua istanza database è ospitata in una sottorete privata, configura l'endpoint VPC per l'utilizzo nel tuo profilo Database Mail.

Risoluzione

Configurazione di Amazon SES

1.    Apri la console Amazon SES, quindi scegli le impostazioni SMTP.

2.    Prendi nota dei valori riportati in Server name (Nome server) e Port (Porta).

3.    Scegli Create SMTP credentials ( Crea credenziali SMTP). Verrà aperta la console AWS Identity and Access Management (IAM).

4.    Per IAM User Name (Nome utente IAM), inserisci un utente o procedi con l'utente predefinito, quindi scegli Create (Crea).

5.    Scegli Download credentials ( Scarica credenziali). Questa è l'unica volta in cui puoi scaricare le tue credenziali SMTP, quindi assicurati di salvarle in un posto sicuro.

6.    Apri la console Amazon SES, quindi scegli Email Addresses (Indirizzi e-mail).

7.    Scegli Verify a new email address (Verifica un nuovo indirizzo email), quindi inserisci l'indirizzo e-mail a cui desideri ricevere un'e-mail di conferma.

8.    Dopo aver confermato il tuo indirizzo e-mail, conferma che lo stato della verifica sia verificato.

Configurazione di un gruppo di parametri di Database Mail

Se disponi già di un gruppo di parametri personalizzato da utilizzare con il tuo profilo Database Mail, salta questo passaggio.

1.    Apri la console Amazon RDS, quindi scegli Parameter groups (Gruppi di parametri) dal pannello di navigazione.

2.    Scegli Create parameter group (Crea gruppo di parametri).

3.    Per Parameter group family (Famiglia del gruppo di parametri), scegli la versione e l'edizione di SQL Server che stai utilizzando. Ad esempio, SQL Server 2016 Enterprise Edition utilizza sqlserver-ee-13.0.

4.    Immetti un nome per il gruppo e una descrizione, quindi scegli Create (Crea).

5.    Nella pagina Parameter groups (Gruppi di parametri), scegli il gruppo che hai creato.

6.    Scegli Edit parameters (Modifica parametri) e seleziona la casella accanto al database mail xps.

7.    Per Values (Valori), scegli 1.

8.    Salva le modifiche.

Nota: se il gruppo di parametri è già associato all'istanza di RDS per SQL Server, ignora questi passaggi.

9.    Nella console Amazon RDS, scegli Database, quindi seleziona Modify (Modifica).

10.    In Database options (Opzioni del database), scegli il parametro che hai configurato in precedenza, quindi seleziona Continue (Continua).

11.    In Scheduling of modifications (Pianificazione delle modifiche), scegli Immediately (Immediatamente).

12.    Scegli Modify DB Instance (Modifica istanza database) per applicare le modifiche, quindi riavvia l'istanza.

Configurazione di Database Mail

Se l'istanza di RDS per SQL Server è ospitata in una sottorete pubblica, completa la procedura riportata in Configurazione di Database Mail.

Tuttavia, se l'istanza si trova in una sottorete privata, durante la configurazione di Database Mail è possibile che venga visualizzato questo errore:

"Impossibile inviare la posta ai destinatari a causa di un errore del server di posta. (Invio di posta tramite l'account 1 (2020-12-08T22:20:51). Messaggio di eccezione: impossibile connettersi al server di posta. (Un tentativo di connessione non è riuscito perché la parte connessa non ha risposto correttamente dopo un certo periodo di tempo oppure perché l'host connesso non ha risposto 52.63.118.124:587)."

Questo errore indica che l'istanza database non è in grado di raggiungere il server di posta. Per risolvere questo problema, crea un endpoint VPC per Amazon SNS.

1.    Identifica l'IP privato della tua istanza.

2.    Crea un nuovo gruppo di sicurezza con una regola in entrata nel gruppo di sicurezza associato alla tua istanza. In Type (Tipo), scegli Custom TCP (TCP personalizzato). In Port range (Intervallo di porte), inserisci il numero di porta che desideri utilizzare per inviare le e-mail. Puoi usare 25, 465, 587, 2465 o 2587. Per Source type (Tipo di origine), scegli Custom (Personalizzato). In Source (Origine), inserisci l'IP privato dell'istanza di RDS per SQL Server.

3.    Crea un endpoint VPC. Una volta che l'endpoint VPC è nello stato Disponibile, scegli l'endpoint, quindi copia la prima voce trovata nel campo DNS.

4.    Crea nuovamente l'account 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: sostituisci @mailserver_name con il DNS ottenuto quando hai creato l'endpoint VPC.

5.    Se Database Mail è stato configurato correttamente, quando esegui questo comando SQL l'e-mail viene inviata correttamente.

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.    Quindi, esegui questa procedura archiviata per elencare e verificare tutti gli elementi e-mail. Nella colonna sent_status, verifica che lo stato sia stato inviato.

SELECT * FROM msdb.dbo.sysmail_allitems

Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?