Konfigurieren Sie Postfix für die Verwendung von Google Apps SMTP-Relay in einer Google Compute Engine-Instanz


7

Was sind die Schritte zum Einrichten von Postfix als SMTP-Relay, das das SMTP-Relay von Google Apps verwendet? Es gibt eine Reihe von Tutorials im Web , die erklären , wie das verwenden smtp.gmail.comGateway mit SASL - Authentifizierung , aber ich konnte keine funktionierende Konfiguration für das Google Apps Relais finden , smtp-relay.google.comwie hier , vor allem eine , die speziell für Google Compute ist.

Ich habe den SMTP-Relay-Dienst mit "Nur Adressen in meinen Domänen" wie hier beschrieben eingerichtet und überprüft, ob die IP- Adresse tatsächlich diejenige ist, von der aus ich eine Verbindung herstelle.

Ich weiß, dass Google Compute Port 25 nicht als ausgehenden Port zulässt, wie hier beschrieben .

Ich benutze Debian Linux oder ein Debian-Derivat.

Ich habe Postfix eingerichtet, wie in den Dokumenten beschrieben, aber alles, was ich in der mail.log bekomme, ist:

postfix/smtp[720]: send attr reason = host smtp-relay.gmail.com[66.102.1.28] said: 
550-5.7.1 Invalid credentials for relay [104.155.78.1]. The IP address you've
550-5.7.1 registered in Google Apps SMTP Relay service doesn't match domain of 
550-5.7.1 the accountthis email is being sent from. If you are trying to relay 
550-5.7.1 mail from a domain that isn't registered under your Googles Apps 
550-5.7.1 account or has empty envelope-from, you must configure your mail 
550-5.7.1 server either to use SMTP AUTH to identify the sending domain or to 
550-5.7.1 present one of your domain names in the HELO or EHLO command. For 
550-5.7.1 more information, please visit 
550 5.7.1  https://support.google.com/a/answer/6140680#invalidcred kg2sm505213wjb.4 - gsmtp (in reply to MAIL FROM command)

Antworten:


7

Installieren Sie Postfix mit apt-get install postfix. Wenn Sie dazu aufgefordert werden, wählen Sie "Satellitensystem" oder die Option mit smarthost. Akzeptieren Sie vorerst die Standardeinstellungen von allem anderen.

Bearbeiten Sie Ihre main.cf gemäß der folgenden Datei:

/etc/postfix/main.cf

# a file which should contain the google apps domain
myorigin = /etc/mailname
# if your google apps domain is in mydestination, remove it, or postfix will attempt to deliver your mail locally
mydestination = ...., localhost

# Google Apps Relay SMTP, must use Port 587 because, 25 is blocked
relayhost = [smtp-relay.gmail.com]:587

# Force ehlo behavior
smtp_always_send_ehlo = yes
smtp_helo_name = <yourappsdomainhere>

# Enable TLS
smtp_use_tls=yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

# limit smtp to loopback interface & compute engine doesn't support ipv6
inet_interfaces = loopback-only
inet_protocols = ipv4

# These lines can be used, if the result is not as expected
# debug_peer_list = smtp-relay.gmail.com
# debug_peer_level = 2

Starten Sie Postfix mit neu service postfix restart. Alles sollte gut sein.

Dies ist möglicherweise nicht die sauberste aller Lösungen, aber es funktioniert für mich.


Das hat bei mir halb geklappt. Ich kann jetzt E-Mails von meiner Befehlszeile aus senden echo "body of your email" | mail -s "This is a Subject" -a "From: me@mydomain.com" recipient@elsewhere.com, aber wenn ich versuche, E-Mails mit der PHP-Funktion mail () zu senden, wird in meiner mail.log-Datei eine Nachricht mit dem Titel "Ungültige Anmeldeinformationen für die Weiterleitung" angezeigt. Wissen Sie, wie Sie das beheben können?
Robbert

hm stellen Sie sicher, dass Sie E-Mails per sendmailBefehl von der CLI senden können . Dann überprüfen Sie Ihre php.ini, PHP sollte Mail per sendmail senden. Überprüfen Sie, ob PHP E-Mails mit einer korrekten Absenderadresse sendet (dh der Absender muss mit den zulässigen Absendern kompatibel sein, die Sie in Ihrem Google Apps-Panel konfiguriert haben).
Konqi

Vielen Dank für Ihren kurzen Kommentar. Ich suchte weiter und fand den "besseren" Weg, es zu tun. Der Weg mit der Authentifizierung. Wenn Sie interessiert sind, könnte ich die Zusammenfassung teilen, die ich darüber geschrieben habe.
Robbert

Ich würde sagen, das hängt von Ihrer Lösung ab. Diese Frage bezieht sich auf die SMTP-Relay-Funktionalität. Wenn Sie sich als normaler Benutzer authentifizieren, ist die Lösung recht einfach und auch viel eingeschränkter. Wenn Sie einen anderen Ansatz mit dem SMTP-Relay haben, wäre ich sehr an Ihrer Lösung interessiert.
Konqi

1
Meine E-Mails wurden von "user@Server.localdomain" gesendet. Ich habe eine "/ etc / postfix / generic" -Datei erstellt, die "users@Server.localdomain" "user@domain.com" (die in G Suite konfigurierte "zugeordnet hat, und eine Zeile mit" smtp_generic_maps = hash: / "hinzugefügt. etc / postfix / generic "in meine Postfix-Konfigurationsdatei und nach dem Ausführen von" sudo postmap / etc / postfix / generic "und" sudo service postfix restart "hat es funktioniert.
Schneeball

1

Ich habe einige Tage im Internet gesucht, um die Lösung zu finden, nach der Sie und ich gesucht haben.

Stellen Sie sicher, dass Sie die SMTP-Relay-Einstellungen unter Apps> Google Apps> Google Mail> Erweiterte Einstellungen in Ihrem Google Apps-Konto wie folgt festgelegt haben:

Einstellungen für den SMTP-Relay-Dienst von Google Apps

Stellen Sie sicher, dass Sie Postfix- und libsasl2-Module installiert haben.

sudo apt-get update
sudo apt-get install postfix
sudo apt-get install libsasl2-modules

Postfix-Konfiguration

Stellen Sie während der Postfix-Konfiguration die folgenden Einstellungen ein:

  • Allgemeine Art der E-Mail-Konfiguration: Internet mit smarthost.
  • E-Mail-Name: example.com (vollqualifizierter Domainname)
  • Relay-Host: [smtp.gmail.com]: 587

Ihre /etc/postfix/main.cfDatei sollte folgendermaßen aussehen:

myhostname = yourdomain.com
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

myorigin = /etc/mailname
mydestination = yourdomain.com

relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# Use IPv4 protocol
inet_protocols = ipv4

# enable SASL authentication 
smtp_sasl_auth_enable = yes

# disallow methods that allow anonymous authentication. 
smtp_sasl_security_options = noanonymous

# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd

# Enable STARTTLS encryption 
smtp_use_tls = yes

# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Erstellen Sie eine /etc/postfix/sasl/passwdDatei und fügen Sie Ihren Google Apps-Benutzernamen und Ihr Kennwort wie folgt hinzu:

[smtp.gmail.com]:587 you@yourdomain.com:yourpassword

Erstellen Sie nun die Hash-Datenbankdatei für Postfix, indem Sie den Befehl postmap ausführen:

sudo postmap /etc/postfix/sasl/passwd

Sichern Sie Ihre Kennwort- und Hash-Datenbankdateien so, dass nur root sie lesen und schreiben kann:

sudo chown root:root /etc/postfix/sasl/passwd /etc/postfix/sasl/passwd.db
sudo chmod 0600 /etc/postfix/sasl/passwd /etc/postfix/sasl/passwd.db

Starten Sie Postfix neu durch:

sudo /etc/init.d/postfix restart

Wenn Sie Mailutils installiert haben, können Sie das Senden von E-Mails testen, indem Sie:

echo "body of your email" | mail -s "This is a Subject" -a "From: you@yourdomain.com" receiver@otherdomain.com

Wenn Ihre E-Mail nicht empfangen wird, überprüfen Sie Ihre mail.log-Datei auf Fehlermeldungen:

sudo tail -f /var/log/mail.log

Ich habe einen ausführlicheren Artikel geschrieben: http://dev.robbertvermeulen.com/postfix-google-apps-smtp-relay-google-compute-engine/


Ich bin nicht sicher, ob Sie tatsächlich das SMTP-Relay verwenden. Es sieht so aus, als würden Sie einfach SMTP mit Benutzerauthentifizierung verwenden (etwas, das ich in meinem Setup vermeiden wollte). Sie können es testen, indem Sie die Relaiseinstellungen im Bedienfeld entfernen und prüfen, ob es noch funktioniert - es sollte nicht, aber wenn ich recht habe, wird es.
Konqi

Ich bestätige, was @konqi gesagt hat. Sie verwenden den Google Mail-SMTP-Server (smtp.gmail.com) und nicht das G-Suite-SMTP-Relay (smtp-relay.gmail.com). Sie können den Unterschied hier in der Google Mail-Dokumentation sehen .
maxime_039

-1

Vielleicht zu spät, aber: Wenn Sie G-Suite verwenden, müssen Sie smtp-relay.gamil.com:587 verwenden und wissen, dass ein Zugriffskonto mit 2 Authentifizierungen einen Fehler anzeigt: Anwendungsspezifisches Kennwort erforderlich

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.