In dieser Anleitung wird gezeigt, wie Sie mit SendGrid eine E-Mail von einer Anwendung senden, die auf einer Compute Engine-VM-Instanz ausgeführt wird.
Ziele
- SendGrid mit Postfix auf einer Compute Engine-Instanz verwenden
- SendGrid in Java-Code verwenden, der auf einer Compute Engine-Instanz ausgeführt wird
- SendGrid in Node.js-Code verwenden, der auf einer Compute Engine-Instanz ausgeführt wird
- SendGrid mit einem Microsoft Exchange Edge-Transport-Server auf einer Compute Engine-Instanz verwenden
Weitere Informationen zum Einrichten von SendGrid finden Sie in der SendGrid-Entwicklerdokumentation.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Compute Engine
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
- Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.
- Geben Sie für Name den Wert
sendgrid-tutorial
an. - Klicken Sie im Abschnitt Bootlaufwerk auf Ändern, um mit der Konfiguration des Bootlaufwerks zu beginnen.
- Wählen Sie auf dem Public images Tab a Debian or CentOS image version aus.
- Klicken Sie auf Auswählen.
- Klicken Sie auf Erstellen, um die VM zu erstellen.
-
Registrieren Sie sich im Google Cloud Marketplace für den SendGrid-E-Mail-Dienst. Halten Sie die SendGrid-SMTP-Kontoanmeldedaten fest, die Nutzername, Passwort und Hostname umfassen. Der SMTP-Nutzername und das SMTP-Passwort sind mit den bei der Registrierung für den Dienst angegebenen Daten identisch. Der SendGrid-Hostname ist
smtp.sendgrid.net
. - Erstellen Sie einen API-Schlüssel:
- Melden Sie sich bei SendGrid an und rufen Sie Einstellungen > API-Schlüssel auf.
- Erstellen Sie einen API-Schlüssel.
- Wählen Sie die Berechtigungen für den Schlüssel aus. Der Schlüssel muss mindestens die Berechtigungen E-Mails senden zum Senden von E-Mails haben.
- Klicken Sie auf Save (Speichern), um den Schlüssel zu erstellen.
- SendGrid generiert einen neuen Schlüssel. Dies ist die einzige Kopie des Schlüssels. Kopieren Sie den Schlüssel daher und speichern Sie ihn für später.
E-Mails von Ihrer Instanz mit Postfix senden
Führen Sie die folgenden Schritte aus, um eine Verbindung zu Ihrer SendGrid-Anleitung-Instanz herzustellen und SendGrid mit Postfix auszuführen.
SSH-Verbindung zur Instanz "sendgrid-tutorial" herstellen
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
- Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.
SendGrid als SMTP-Relay mit Postfix konfigurieren
Führen Sie in Ihrem SSH-Terminal die folgenden Befehle aus, um SendGrid als SMTP-Relay mit Postfix zu verwenden.
Superuser werden:
sudo su -
Sichere Demaskierung festlegen:
umask 077
Postfix Mail Transport Agent installieren:
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Wenn Sie dazu aufgefordert werden, wählen Sie die Konfiguration Nur lokal aus und bestätigen den Standard-Domainnamen.
Ändern Sie die Postfix-Konfigurationsoptionen. Öffnen Sie
/etc/postfix/main.cf
zum Bearbeiten. Geben Sie beispielsweise zur Verwendung desnano
-Texteditors den folgenden Befehl ein:nano /etc/postfix/main.cf
Aktualisieren Sie die Datei:
Entfernen Sie die Kommentarzeichen bei folgenden Zeilen:
# default_transport = error # relay_transport = error
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:
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
Die obigen Zeilen erzwingen die SSL/TLS-Unterstützung und konfigurieren die SMTP-Authentifizierung für solche Anfragen. Die Authentifizierung in der Postfix-Konfiguration wird von einem SASL-Modul (Simple Authentication and Security Layer) verarbeitet.
Speichern und schließen Sie die Datei.
Generieren Sie die SASL-Passwortzuordnung mit dem API-Schlüssel, den Sie im Abschnitt Vorbereitung erstellt haben. Ersetzen Sie
your-api-key
durch den generierten API-Schlüssel.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Verwenden Sie das Dienstprogramm
postmap
zur Generierung einer.db
-Datei:postmap /etc/postfix/sasl_passwd
Prüfen Sie, ob Sie eine
.db
-Datei haben:ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Entfernen Sie die Datei mit Ihren Anmeldedaten, da sie nicht mehr benötigt wird:
rm /etc/postfix/sasl_passwd
Legen Sie die Berechtigungen für die
.db
-Datei fest und überprüfen Sie, ob die andere Datei entfernt wurde:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Laden Sie die Konfiguration neu, um die geänderten Parameter zu laden:
Debian
/etc/init.d/postfix restart
CentOS
postfix reload
Installieren Sie das
mailutils
- odermailx
-Paket:Debian
apt -y install mailutils
CentOS
yum install mailx -y
Senden Sie eine Test-E-Mail:
echo 'message' | mail -s subject email@example.com
Ersetzen Sie Folgendes:
message
: Der Text der E-Mail.subject
: Der Betreff der E-Mail.email@example.com
: Die E-Mail-Adresse, an die Sie eine Nachricht senden möchten.
Suchen Sie in den Systemlogs nach einer Statuszeile, die
status
und den Code für eine erfolgreiche Serverantwort(250)
enthält.Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
E-Mails mit Java auf der Instanz senden
SSH-Verbindung zur Instanz "sendgrid-tutorial" herstellen
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
- Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.
E-Mail-Nachricht verfassen und senden
In der folgenden Anleitung wird die SendGrid-Java-Clientbibliothek zum Verfassen und Senden einer E-Mail-Nachricht über SendGrid verwendet. Das vollständige Beispiel können Sie sich auf GitHub ansehen.
Gehen Sie im SSH-Terminal folgendermaßen vor:
Werden Sie Superuser und legen Sie mit umask einen sicheren Zugriff fest:
sudo su - umask 077
Installieren Sie Java und Maven:
apt -y update && apt -y install git-core openjdk-11-jdk maven
Klonen Sie das GitHub-Repository:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Gehen Sie zum Hauptquellcode für das Beispiel:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
Öffnen Sie
SendEmailServelet.java
zum Bearbeiten.Ersetzen Sie
your-sendgrid-api-key
durch den API-Schlüssel für das SendGrid-Konto.Ersetzen Sie
your-sendgrid-from-email
durch die E-Mail-Adresse, von der Sie E-Mails senden möchten.Ersetzen Sie
destination-email
durch die E-Mail-Adresse, an die Sie E-Mails senden möchten.
Gehen Sie zum Stammverzeichnis des Beispielcodes:
cd /root/java-docs-samples/compute/sendgrid
Verpacken Sie die Java-Klasse:
mvn clean package
Wechseln Sie zum neuen
target
-Verzeichnis:cd target
Legen Sie Berechtigungen fest, mit denen Sie die JAR-Datei ausführen können:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Führen Sie die Auswahl für alternative Java-Versionen aus:
update-alternatives --config java
Wählen Sie die Option
java-11-openjdk-amd64
aus.Führen Sie die Java-Datei aus:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
E-Mails mit Node.js auf der Instanz senden
Wenn Sie dieses Beispiel ausführen möchten, muss Node.js
ab Version 7.6 auf der VM-Instanz installiert sein.
SSH-Verbindung zur Instanz "sendgrid-tutorial" herstellen
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
- Klicken Sie in der Liste der VM-Instanzen in der Zeile der Instanz, zu der Sie eine Verbindung herstellen möchten, auf SSH.
E-Mail-Nachricht verfassen und senden
Gehen Sie im SSH-Terminal folgendermaßen vor:
Werden Sie Superuser und legen Sie mit umask einen sicheren Zugriff fest:
sudo su - umask 077
Aktualisieren Sie die Paket-Repositorys:
Debian
apt update
CentOS
yum update -y
Installieren Sie Node.js-Abhängigkeiten:
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
Installieren Sie Node.js. Standardmäßig wird bei der Installation auch npm installiert:
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 -
Installieren Sie dann Node.js:
yum -y install nodejs
Installieren Sie den SendGrid-Node.js-Client:
npm install sendgrid
Klonen Sie das Beispiel-Repository:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Gehen Sie zu dem Verzeichnis, das das SendGrid-Beispiel enthält:
cd nodejs-docs-samples/compute
Kopieren Sie die Datei
sendgrid.js
:cp sendgrid.js sendmail.js
Öffnen Sie
sendmail.js
zum Bearbeiten.Ersetzen Sie
your-sendgrid-api-key
durch den API-Schlüssel für das SendGrid-Konto.Ersetzen Sie
from-email@example.com
durch die E-Mail-Adresse, von der aus Sie E-Mails senden möchten.Ersetzen Sie
to-email@example.com
durch die E-Mail-Adresse, an die Sie E-Mails senden möchten.
Führen Sie das Programm aus, um über SendGrid eine E-Mail-Nachricht zu senden:
node sendmail.js
E-Mails von einem Exchange-Edge-Transport-Server senden
Sie können Microsoft Exchange so einrichten, dass ausgehende E-Mails mit SendGrid gesendet werden. Dazu konfigurieren Sie einen Connector für ausgehende Nachrichten. Weitere Informationen finden Sie unter Microsoft Exchange Server 2016 in Compute Engine bereitstellen.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.
So löschen Sie das Projekt:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Compute Engine-Instanz löschen
So löschen Sie eine Compute Engine-Instanz:
- Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
-
Klicken Sie auf das Kästchen für die Instanz
sendgrid-tutorial
. - Klicken Sie zum Löschen der Instanz auf Weitere Aktionen, dann auf Löschen, und folgen Sie dann der Anleitung.
Nächste Schritte
Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center