Konfigurieren Sie Postfix zum Senden / Weiterleiten von E-Mails an Google Mail (smtp.gmail.com) über Port 587


9

Verwenden von Centos 5.4 mit Postfix. Ich kann a

mail foo@gmail.com 
subject: blah
 test
.
Cc:

und die Nachricht wird an Google Mail gesendet, befindet sich jedoch im Spam-Ordner, was zu erwarten ist.

Mein Ziel ist es, E-Mail-Nachrichten zu generieren und im regulären Posteingang erscheinen zu lassen! Nach meinem Verständnis von Postfix / Gmail ist es möglich, Postfix so zu konfigurieren, dass E-Mails über den authentifizierten / gültigen Benutzer über Port 587 gesendet / weitergeleitet werden, sodass die E-Mails nicht mehr als Spam angesehen werden.

Ich habe eine Reihe von Parametern ausprobiert, die auf verschiedenen Websites / Artikeln aus dem Internet basieren, ohne Glück. Einige der Artikel scheinen tatsächlich mit anderen Artikeln in Konflikt zu stehen! Ich habe mir auch die Stacflow-Beiträge dazu angesehen, aber mir fehlt noch etwas ... Ich habe auch mit ein paar Leuten im IRC (Centos / Postfix) gesprochen und habe immer noch Fragen.

Also wende ich mich wieder Serverfault zu!

Wenn es jemanden gibt, der dies geschafft hat, würde es Ihnen etwas ausmachen, Ihre main.cf-, sasl-passwd- und andere conf-Dateien zu veröffentlichen, mit denen Sie dies zum Laufen bringen! Wenn ich Ihre Konfigurationsdateien überprüfen kann, kann ich hoffentlich sehen, wo ich es vermasselt habe, und herausfinden, wie das Problem behoben werden kann.

Vielen Dank für das Lesen und alle Hilfe / Hinweise, die Sie geben!

ps, Wenn es einen Stackflow-Beitrag gibt, der darauf hinweist, den ich möglicherweise verpasst habe, kannst du mich gerne darauf hinweisen!

-tom

Antworten:


16

Obwohl ich nicht versucht habe, über den Submission Port (587) über einen Anbieter weiterzuleiten, sollte dies möglich sein. Damit Postfix weiterleiten kann, müssen Sie eine Datei mit den zu verwendenden authentifizierten Anmeldeinformationen einrichten und einige Änderungen an Ihrer /etc/postfix/main.cfKonfigurationsdatei vornehmen .

Der erste ist der Authentifizierungsnachweis. Dazu benutze ich einfach /etc/postfix/sasl_passwddie entsprechende Zeile mit der Vorlage:

smtp.provider.com    smtp_user:smtp_passwd

Sie sollten sicherstellen, dass diese Datei geschützt ist. Ich empfehle daher, root:rootEigentümer und 0600Berechtigungen festzulegen. Anschließend möchten Sie Folgendes ausführen, um die Version mit Hash-Zuordnung als Root zu erstellen.

postmap hash:/etc/postfix/sasl_passwd

Wenn Sie dies nicht /etc/postfix/main.cftun, können Sie einige der bereits eingestellten Werte finden, sodass Sie sie entsprechend ändern müssen. Die wichtigen Details lauten jedoch wie folgt:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may

Dadurch kann Postfix die Datei sasl_passwd zur Authentifizierung beim Senden von E-Mails verwenden. Anschließend müssen Sie Postfix mitteilen, dass der Anbieter die E-Mail senden soll, indem Sie die Konfiguration hinzufügen

relayhost = smtp.provider.com:port

Standardmäßig nimmt Postfix Port 25 an, wenn Sie nichts angeben, und dies hat in der Vergangenheit bei mir funktioniert. Bei Ihrem gewünschten Setup müssen Sie 587 als Port angeben. Vor diesem Hintergrund bin ich mir nicht sicher, ob Sie den Eintrag sasl_passwd ändern müssen, smtp.provider.com:587anstatt einfach, smtp.provider.comda ich dies noch nicht über einen nicht standardmäßigen Port versucht habe, sodass Sie es selbst ausprobieren müssen.

Allein diese Konfigurationsschritte betreffen die Weiterleitung von E-Mails auf mehreren Servern, die ich über einen zentralen Mailserver verwalte.

Aktualisiert, um ein voll funktionsfähiges Beispiel aufzunehmen

Es stellte sich heraus, dass ich meinen Ubuntu-Laptop (Debian-basiert) so konfiguriert hatte, dass Port 587 auf meinem E-Mail-Anbieter (nicht Gmail) verwendet wird, da mein DSL-Anbieter den ausgehenden Port 25-Verkehr blockiert. Ich habe ein Update durchgeführt, um stattdessen eines meiner Google Mail-Konten zum Versenden von E-Mails zu verwenden. Die einzige Änderung, die ich vornehmen musste

Ich bin auf die privaten Daten verschleiern aber ansonsten einfügen wie sie ist Konfiguration für Postfix arbeiten.

Zuerst haben wir /etc/postfix/main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
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
smtp_tls_security_level = may

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = solitare, localhost.localdomain, , localhost
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
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

Als nächstes haben wir /etc/postfix/sasl_passwd:

smtp.gmail.com:587  myusername@gmail.com:mypassword

Ich habe dann die folgende SMTP-Sitzung ausgeführt:

jbouse@solitare:~$ telnet localhost 25
Trying 127.0.0.1...
Connected to solitare.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
helo localhost
250 example.com
mail from: jbouse@example.com
250 2.1.0 Ok
rcpt to: myotherusername@gmail.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
this is just a test
.
250 2.0.0 Ok: queued as 6269B280191
quit
221 2.0.0 Bye
Connection closed by foreign host.

Dann logge ich mich in mein myotherusernameGoogle Mail-Konto ein und lese die Nachricht:

Return-Path: <myotherusername@gmail.com>
Received: from example.com (mydslproviderhostname.net [x.x.x.229])
        by mx.google.com with ESMTPS id 6sm401663ywd.11.2010.03.04.19.19.58
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Thu, 04 Mar 2010 19:19:58 -0800 (PST)
Sender: "Jeremy Bouse" <myotherusername@gmail.com>
Received: from localhost (solitare [127.0.0.1])
    by example.com (Postfix) with SMTP id 6269B280191
    for <myotherusername@gmail.com>; Thu,  4 Mar 2010 22:17:39 -0500 (EST)
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
Message-Id: <20100305031745.6269B280191@example.com>
Date: Thu,  4 Mar 2010 22:17:39 -0500 (EST)

this is just a test

Nachdem ich nun gezeigt habe, dass meine 13 Jahre als Systemadministrator nicht verschwendet sind, kann ich E-Mails von meinem Laptop über Google Mail senden, ohne ein selbstsigniertes x.509-Zertifikat erstellen zu müssen, wie andere Ihnen mitteilen würden. Der Schlüssel zusätzlich zu der /etc/postfix/main.cfdie smtp_tls_security_level Einstellung kann Postfix sagen , dass es in Ordnung ist , die zur Ausgabe von STARTTLS - Befehl , wenn zu einem anderen MTA verbinden , wenn es TLS unterstützt. Wenn Sie die Einstellung smtp_tls_security_level vergessen haben , wird möglicherweise ein Eintrag in Ihrem angezeigt , der wie folgt lautet/var/log/mail.log :

Mar  4 22:10:58 solitare postfix/smtp[19873]: 20E07280191: to=<myotherusername@gmail.com>, relay=smtp.gmail.com[74.125.47.109]:587, delay=38, delays=38/0.03/0.08/0.01, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.47.109] said: 530 5.7.0 Must issue a STARTTLS command first. 20sm399188ywh.48 (in reply to MAIL FROM command))

Wenn es jedoch richtig eingestellt ist, sollten Sie Folgendes sehen:

Mar  4 22:20:00 solitare postfix/smtp[20313]: 6269B280191: to=<myotherusername@gmail.com>, relay=smtp.gmail.com[74.125.47.109]:587, delay=141, delays=110/29/0.36/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1267759200 6sm401663ywd.11)

Hallo Jeremy ... Danke für die Antwort. Ein paar Fragen. Ich habe Netzpostings gesehen, die smtpd _... params haben .. Ich nehme an, ich brauche diese nicht. Außerdem haben / beziehen sich einige Artikel auf TSL-Zertifikate. Muss ich mich überhaupt mit diesen befassen? Vielen Dank!!
Tom Smith

Die Parameter smtpd _... sind für Postfix als Server ... Bei der Weiterleitung an einen smarthost arbeitet Postfix als Client, der die Parameter smtp _... verwendet.
Jeremy Bouse

1
Soßengesicht, Sie wissen offensichtlich nicht, wovon Sie sprechen. Ich schlage vor, dass Sie sich ein wenig über SMTP & TLS / SSL / x.509 informieren, da Ihnen das Wissen zu diesem Thema fehlt.
Jeremy Bouse

1
felipe-alfaro.org/blog/2009/05/10/… ... Zweiter Absatz gibt meine eigenen Kommentare wieder ...
Jeremy Bouse

1
Danke, dass du das geklärt hast, Jeremy. Ich fand es immer etwas seltsam, dass Sie Ihr eigenes Zertifikat unterschreiben mussten, aber in meiner Eile (und in den vielen Artikeln / Tutorials, die ich gesehen habe) sagten alle, dies zu tun. Lebe und lerne.
Soße Gesicht
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.