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.cf
Konfigurationsdatei vornehmen .
Der erste ist der Authentifizierungsnachweis. Dazu benutze ich einfach /etc/postfix/sasl_passwd
die 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:root
Eigentümer und 0600
Berechtigungen 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.cf
tun, 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:587
anstatt einfach, smtp.provider.com
da 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 myotherusername
Google 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.cf
die 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)