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.
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
- 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.
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
- 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.
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
- 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.
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.