Ich habe gerade dieses Tutorial befolgt , um einen Postfix-Mailserver mit Dovecot und MySQL als Backend für virtuelle Benutzer einzurichten.
Jetzt habe ich die meisten Teile zum Laufen gebracht, ich kann mich mit POP3 (S) und IMAP (S) verbinden.
Verwenden
echo TEST-MAIL | mail [email protected]
Funktioniert einwandfrei, wenn ich mich in meinem Hotmail-Konto anmelde, wird die E-Mail angezeigt.
Es funktioniert auch in umgekehrter Reihenfolge, daher wurde mein MX-Eintrag für example.com endgültig weitergegeben, sodass ich E-Mails von [email protected] an [email protected] empfangen und in Thunderbird mit STARTTLS über IMAP anzeigen kann.
Nachdem ich die Fehlermeldung " 5.7.1: Relay-Zugriff verweigert " erhalten hatte, als ich versuchte, mit Thunderbird, der bei [email protected] angemeldet war , E- Mails an [email protected] zu senden , stellte ich fest, dass mein Server aktiv war als "Open Mail Relay", was natürlich eine schlechte Sache ist.
Ich habe mich eingehender mit den optionalen Teilen des Tutorials wie diesem Kommentar und dem anderen Turorial befasst und mich dazu entschlossen, diese Schritte auch auszuführen , um E-Mails über [email protected] über Mozilla Thunderbird senden zu können , ohne die Fehlermeldung " 5.7.1 : Weiterleitungszugriff verweigert "mehr (da gängige Mailserver offene weitergeleitete E-Mails ablehnen).
Aber jetzt bin ich auf einen Fehler gestoßen, der versucht, Postfix mit SMTPS zum Laufen zu bringen. In /var/log/mail.log liest es
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: cannot get RSA private key from file /etc/ssl/certs/postfix.pem: disabling TLS support
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY:
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:ssl_rsa.c:669:
Dieser Fehler wird sofort protokolliert, nachdem ich versucht habe, eine E-Mail von meinem neu installierten Mailserver mit SMTP SSL / TLS über Port 465 in Thunderbird zu senden. Thunderbird teilt mir dann mit, dass eine Zeitüberschreitung aufgetreten ist.
Google hat ein paar Ergebnisse zu diesem Problem, aber ich konnte es mit keinem davon zum Laufen bringen. Ich würde einige von ihnen hier verlinken, aber als neuer Benutzer darf ich nur zwei Hyperlinks verwenden.
Meine /etc/postfix/master.cf sieht so aus
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
und nmap sagt es mir
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
meine /etc/postfix/main.cf sieht so aus
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
#smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem #default postfix generated
#smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key #default postfix generated
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smptd_tls_key_file = /etc/ssl/private/postfix.pem
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_sasl_type = dovecot
smtpd_sasl_path = private/auth
smptd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/lib/dovecot/deliver
Die * .pem-Dateien wurden wie im obigen Tutorial beschrieben mit erstellt
Postfix
To create a certificate to be used by Postfix use:
openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem
Do not forget to set the permissions on the private key so that no unauthorized people can read it:
chmod o= /etc/ssl/private/postfix.pem
You will have to tell Postfix where to find your certificate and private key because by default it will look for a dummy certificate file called "ssl-cert-snakeoil":
postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
Ich glaube, ich muss /etc/dovecot/dovecot.conf hier nicht einschließen , da die Anmeldung über imaps und pop3s entsprechend den Protokollen gut funktioniert. Das einzige Problem ist, dass Postfix die selbst erstellten, selbst signierten Zertifikate ordnungsgemäß verwendet.
Jede Hilfe dankbar!
BEARBEITEN: Ich habe gerade dieses andere Tutorial zum Generieren eines selbstsignierten Zertifikats für Postfixausprobiert, wobei immer noch derselbe Fehler auftritt. Ich weiß wirklich nicht, was ich sonst noch testen soll.
Ich habe auch nach den SSL-Bibliotheken gesucht, aber alles scheint in Ordnung zu sein:
root@domain:~# ldd /usr/sbin/postfix
linux-vdso.so.1 => (0x00007fff91b25000)
libpostfix-global.so.1 => /usr/lib/libpostfix-global.so.1 (0x00007f6f8313d000)
libpostfix-util.so.1 => /usr/lib/libpostfix-util.so.1 (0x00007f6f82f07000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f6f82cb1000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007f6f82910000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f6f826f7000)
libdb-4.8.so => /usr/lib/libdb-4.8.so (0x00007f6f8237c000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00007f6f82164000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00007f6f81f4e000)
libc.so.6 => /lib/libc.so.6 (0x00007f6f81beb000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f6f819e7000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f6f817d0000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6f815b3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6f83581000)
Nach Ansgar Wiechers Anweisungen ist es endlich soweit.
postconf -n
enthielt die Zeilen, wie es sollte. Die Zertifikat- / Schlüsselüberprüfung über openssl hat ergeben, dass beide Dateien gültig sind.
Es war also tatsächlich ein Berechtigungsproblem! Wusste nicht, dass es nicht ausreicht, die Dateien /etc/ssl/*/postfix.pem nach postfix zu verschieben: postfix ist nicht ausreichend, damit postfix die Dateien liest.
postconf -n
Teil. Das Kopieren und Einfügen führte zu einer Cert-Datei und einem nicht zugehörigen Schlüssel. Wenn ich mich auf die Ausgabe dieser Datei konzentrierte, konnte ich den Tippfehler in der Konfigurationsdatei sehen, den ich bereits überprüft, aber verpasst hatte ...Diese Anweisungen haben
chmod o= /etc/ssl/private/postfix.pem
aber nichts darüber zu sagen, welchem Benutzer die Datei gehört.Auf meinen Boxen
smtpd
läuft der Prozess alspostfix
Benutzer. Überprüfen Sie, ob derpostfix
Benutzer darauf zugreifen kann/etc/ssl/private/postfix.pem
. Oder vielleicht einfachchown postfix:postfix /etc/ssl/private/postfix.pem
.Das andere offensichtliche Problem ist genau das, was die Fehlermeldung besagt: In dieser Datei befindet sich kein gültiger RSA-Schlüssel. Schauen Sie rein
/etc/ssl/private/postfix.pem
und stellen Sie sicher, dass es mindestens etwas enthält, das aussieht wie ein RSA-Schlüssel. Fügen Sie es nicht in Ihre Frage ein.Eigentlich ist mir gerade aufgefallen, dass die Fehlermeldung dafür
/etc/ssl/certs/postfix.pem
nicht steht/etc/ssl/private/postfix.pem
. Überprüfen Sie auch das Eigentum, die Berechtigungen und den Inhalt von/etc/ssl/certs/postfix.pem
.Diese Fehlermeldung ist etwas verwirrend. Es heißt
cannot get RSA private key from file /etc/ssl/certs/postfix.pem
aber der private Schlüssel sollte drin sein/etc/ssl/private/postfix.pem
. Ich habe nicht genug Erfahrung mit Postfix mit TLS, um zu wissen, ob es sich um einen Postfix-Fehler oder um einen Fehler in Ihrer Konfiguration handelt.quelle
Cert muss mit key übereinstimmen, hatte in meinem Fall nichts mit Berechtigungen zu tun
Erstellen Sie ein selbstsigniertes Zertifikat und einen selbstsignierten Schlüssel https://msol.io/blog/tech/create-a-self-signed-ssl-certificate-with-openssl/
Hoffe das hilft
quelle
Stellen Sie sicher, dass der Schlüssel keine Passphrase enthält. Sie können es mit entfernen
wenn sie zusammen benutzt werden
Die Passphrase zeigt in den Protokollen eine Warnung an, dass der private RSAA-Schlüssel nicht abgerufen werden konnte, wodurch die TLS-Unterstützung deaktiviert wird. Hoffe das hilft jemandem!
quelle