Questo tutorial mostra come utilizzare SendGrid per inviare email da un'app in esecuzione su un un'istanza di macchina virtuale (VM) Compute Engine.
Obiettivi
- Utilizzare SendGrid con Postfix su un'istanza Compute Engine.
- Utilizza SendGrid nel codice Java in esecuzione su un'istanza Compute Engine.
- Utilizza SendGrid nel codice Node.js in esecuzione su un'istanza Compute Engine.
- Utilizza SendGrid con un server di trasporto perimetrale di Microsoft Exchange su un'istanza di Compute Engine.
Per altre informazioni sulla configurazione di SendGrid, consulta la documentazione per gli sviluppatori di SendGrid.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- In the Google Cloud console, go to the Create an instance page.
-
Set Name to
sendgrid-tutorial
. - In the Boot disk section, click Change to begin configuring your boot disk.
- Nella scheda Public images, scegli a Debian or CentOS image version,
- Fai clic su Seleziona.
- Per creare la VM, fai clic su Crea.
-
Utilizza la
Google Cloud Marketplace
la registrazione al servizio email SendGrid. Prendi nota delle credenziali dell'account SMTP di SendGrid, che includono nome utente, password e nome host. Il
nome utente e la password SMTP sono gli stessi che hai utilizzato per registrarti al
servizio. Il nome host di SendGrid è
smtp.sendgrid.net
. - Crea una chiave API:
- Accedere a SendGrid e vai a Impostazioni > Chiavi API.
- Creare una chiave API.
- Seleziona le autorizzazioni per la chiave. Come minimo, la chiave deve avere Autorizzazioni Invio email per inviare email.
- Fai clic su Salva per creare la chiave.
- SendGrid genera una nuova chiave. Questa è l'unica copia della chiave, quindi assicurati di copiarla e di salvarla per un secondo momento.
Invio di email dalla tua istanza con Postfix
Completa i seguenti passaggi per collegarti al tuo sendgrid-tutorial ed esegui SendGrid con Postfix.
Connettiti all'istanza sendgrid-tutorial tramite SSH
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Configurazione di SendGrid come inoltro SMTP con Postfix
Esegui i seguenti comandi nel terminale SSH per utilizzare SendGrid come SMTP con Postfix.
Diventa un super user:
sudo su -
Imposta un'umask sicura:
umask 077
Installa l'agente di trasporto della posta Postfix:
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Se richiesto, seleziona la configurazione Solo locale e accetta il nome di dominio predefinito.
Modifica le opzioni di configurazione di Postfix. Apri
/etc/postfix/main.cf
per la modifica. Ad esempio, per utilizzare l'editor di testonano
, inserisci il seguente comando:nano /etc/postfix/main.cf
Aggiorna il file:
Commenta le seguenti righe:
# default_transport = error # relay_transport = error
Aggiungi le seguenti righe alla fine del file:
relayhost = [smtp.sendgrid.net]:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd header_size_limit = 4096000 smtp_sasl_security_options = noanonymous
Le righe precedenti applicano il supporto SSL/TLS e configurano l'autenticazione SMTP per queste richieste. Un livello di accesso e sicurezza semplice (SASL) gestisce l'autenticazione nella configurazione Postfix.
Salva e chiudi il file.
Genera la mappa delle password SASL utilizzando la chiave API generata nella Sezione Prima di iniziare. Sostituisci
your-api-key
con la chiave API che hai generato.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Utilizza l'utilità
postmap
per generare un file.db
:postmap /etc/postfix/sasl_passwd
Verifica di avere un file
.db
:ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Rimuovi il file contenente le tue credenziali perché non è più necessario:
rm /etc/postfix/sasl_passwd
Imposta le autorizzazioni sul file
.db
e verifica che l'altro file sia stato rimosso:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Ricarica la configurazione per caricare i parametri modificati:
Debian
/etc/init.d/postfix restart
CentOS
postfix reload
Installa il pacchetto
mailutils
omailx
:Debian
apt -y install mailutils
CentOS
yum install mailx -y
Invia un'email di prova:
echo 'message' | mail -s subject email@example.com
Sostituisci quanto segue:
message
: il corpo dell'email.subject
: l'oggetto dell'email.email@example.com
: l'indirizzo email che a cui vuoi inviare un messaggio.
Cerca nei log di sistema una riga di stato contenente
status
e codice di risposta del server riuscita(250)
:Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
Invio di email con Java sulla tua istanza
Connettiti all'istanza sendgrid-tutorial tramite SSH
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Creare e inviare un messaggio email
Le istruzioni riportate di seguito utilizzano la libreria client Java di SendGrid per creare e inviare un messaggio email tramite SendGrid. Puoi visualizzare l'esempio completo su GitHub.
Nel terminale SSH:
Diventa un superutente e imposta un'umask sicura:
sudo su - umask 077
Installa Java e Maven:
apt -y update && apt -y install git-core openjdk-11-jdk maven
Clona il repository GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vai al codice sorgente principale dell'esempio:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
Apri
SendEmailServelet.java
per la modifica.Sostituisci
your-sendgrid-api-key
con la chiave API del tuo account SendGrid.Sostituisci
your-sendgrid-from-email
con l'indirizzo email da cui vuoi inviare la posta.Sostituisci
destination-email
con all'indirizzo email a cui vuoi inviare l'email.
Vai alla directory principale del codice di esempio:
cd /root/java-docs-samples/compute/sendgrid
Impacchetta la classe Java:
mvn clean package
Vai alla nuova directory
target
:cd target
Imposta le autorizzazioni che ti consentono di eseguire il file JAR:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Esegui il selettore della versione Java alternativa:
update-alternatives --config java
Seleziona l'opzione
java-11-openjdk-amd64
.Esegui il file Java:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Invio della posta con Node.js sulla tua istanza
Per eseguire questo esempio, devi avere Node.js
versione 7.6 o successiva installata
sull'istanza VM.
Connettiti all'istanza sendgrid-tutorial tramite SSH
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Creare e inviare un messaggio email
Nel terminale SSH:
Diventa un super user e imposta un umask sicuro:
sudo su - umask 077
Aggiorna i repository dei pacchetti:
Debian
apt update
CentOS
yum update -y
Installa le dipendenze Node.js:
Debian
apt -y install git-core curl build-essential openssl libssl-dev
CentOS
yum install git-core curl openssl openssl-devel -y yum groupinstall "Development Tools" -y
Installa Node.js. Per impostazione predefinita, l'installazione installa anche npm:
Debian
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - sudo apt -y install nodejs
CentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
Quindi, installa Node.js:
yum -y install nodejs
Installa il client Node.js di SendGrid:
npm install sendgrid
Clona il repository di esempio:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vai alla directory che contiene l'esempio SendGrid:
cd nodejs-docs-samples/compute
Copia il file
sendgrid.js
:cp sendgrid.js sendmail.js
Apri
sendmail.js
per la modifica.Sostituisci
your-sendgrid-api-key
con la chiave API del tuo account SendGrid.Sostituisci
from-email@example.com
con l'indirizzo email da cui vuoi inviare la posta.Sostituisci
to-email@example.com
con l'indirizzo email a cui vuoi inviare la posta.
Esegui il programma per inviare un messaggio email tramite SendGrid:
node sendmail.js
Invio della posta da un server di trasporto perimetrale di Exchange
Puoi configurare Microsoft Exchange in modo che invii le email in uscita con SendGrid configurando un connettore di invio in uscita. Per maggiori dettagli, vedi Deployment di Microsoft Exchange Server 2016 su Compute Engine.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina l'istanza Compute Engine
Per eliminare un'istanza di Compute Engine:
- In the Google Cloud console, go to the VM instances page.
-
Select the checkbox for
your
sendgrid-tutorial
instance. - To delete the instance, click More actions, click Delete, and then follow the instructions.
Passaggi successivi
Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.