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 077Postfix 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.cfzum Bearbeiten. Geben Sie beispielsweise zur Verwendung desnano-Texteditors den folgenden Befehl ein:nano /etc/postfix/main.cfAktualisieren 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 = noanonymousDie 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-keydurch den generierten API-Schlüssel.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Verwenden Sie das Dienstprogramm
postmapzur Generierung einer.db-Datei:postmap /etc/postfix/sasl_passwdPrü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_passwdLegen 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 restartCentOS
postfix reloadInstallieren Sie das
mailutils- odermailx-Paket:Debian
apt -y install mailutils
CentOS
yum install mailx -ySenden 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
statusund den Code für eine erfolgreiche Serverantwort(250)enthält.Debian
tail -n 5 /var/log/syslogCentOS
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 077Installieren Sie Java und Maven:
apt -y update && apt -y install git-core openjdk-11-jdk mavenKlonen Sie das GitHub-Repository:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.gitGehen Sie zum Hauptquellcode für das Beispiel:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridÖffnen Sie
SendEmailServelet.javazum Bearbeiten.Ersetzen Sie
your-sendgrid-api-keydurch den API-Schlüssel für das SendGrid-Konto.Ersetzen Sie
your-sendgrid-from-emaildurch die E-Mail-Adresse, von der Sie E-Mails senden möchten.Ersetzen Sie
destination-emaildurch die E-Mail-Adresse, an die Sie E-Mails senden möchten.
Gehen Sie zum Stammverzeichnis des Beispielcodes:
cd /root/java-docs-samples/compute/sendgridVerpacken Sie die Java-Klasse:
mvn clean packageWechseln Sie zum neuen
target-Verzeichnis:cd targetLegen Sie Berechtigungen fest, mit denen Sie die JAR-Datei ausführen können:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarFühren Sie die Auswahl für alternative Java-Versionen aus:
update-alternatives --config javaWählen Sie die Option
java-11-openjdk-amd64aus.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 077Aktualisieren Sie die Paket-Repositorys:
Debian
apt updateCentOS
yum update -yInstallieren Sie Node.js-Abhängigkeiten:
Debian
apt -y install git-core curl build-essential openssl libssl-devCentOS
yum install git-core curl openssl openssl-devel -y yum groupinstall "Development Tools" -yInstallieren 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 nodejsCentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -Installieren Sie dann Node.js:
yum -y install nodejsInstallieren Sie den SendGrid-Node.js-Client:
npm install sendgridKlonen Sie das Beispiel-Repository:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitGehen Sie zu dem Verzeichnis, das das SendGrid-Beispiel enthält:
cd nodejs-docs-samples/computeKopieren Sie die Datei
sendgrid.js:cp sendgrid.js sendmail.jsÖffnen Sie
sendmail.jszum Bearbeiten.Ersetzen Sie
your-sendgrid-api-keydurch den API-Schlüssel für das SendGrid-Konto.Ersetzen Sie
from-email@example.comdurch die E-Mail-Adresse, von der aus Sie E-Mails senden möchten.Ersetzen Sie
to-email@example.comdurch 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.