Je viens de suivre ce tutoriel pour configurer un serveur de messagerie postfix avec dovecot et mysql comme backend pour les utilisateurs virtuels.
Maintenant que je fais travailler la plupart des pièces, je peux me connecter à POP3 (S) et IMAP (S).
En utilisant
echo TEST-MAIL | mail [email protected]
fonctionne bien, lorsque je me connecte à mon compte hotmail, il affiche l'e-mail.
Cela fonctionne également en sens inverse, donc mon entrée MX pour example.com a finalement été propagée, donc je suis en mesure de recevoir des e-mails envoyés de [email protected] à [email protected] et de les visualiser dans Thunderbird en utilisant STARTTLS via IMAP.
Faire un peu plus de recherche après avoir reçu le message d'erreur " 5.7.1: Accès au relais refusé " lorsque j'essaie d'envoyer des mails à [email protected] en utilisant Thunderbird étant connecté à [email protected] , j'ai compris que mon serveur agissait comme un "Open Mail Relay", ce qui - bien sûr - est une mauvaise chose.
En creusant davantage dans les parties facultatives du tutoriel comme ce commentaire et l'autre turorial , j'ai décidé de terminer ces étapes également pour pouvoir envoyer des mails via [email protected] via Mozilla Thunderbird, sans obtenir le message d'erreur " 5.7.1 : Accès relais refusé "(car les serveurs de messagerie courants rejettent les e-mails relayés ouverts).
Mais maintenant, je suis tombé sur une erreur en essayant de faire fonctionner Postfix avec SMTPS, dans /var/log/mail.log, il lit
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:
Cette erreur est enregistrée juste après que j'essaie d'envoyer un courrier à partir de mon serveur de messagerie nouvellement installé en utilisant SMTP SSL / TLS via le port 465 dans Thunderbird. Thunderbird me dit alors qu'un timeout s'est produit.
Google a quelques résultats concernant ce problème, mais je n'ai pas pu le faire fonctionner avec aucun d'entre eux. Je voudrais lier certains d'entre eux ici, mais en tant que nouvel utilisateur, je ne suis autorisé à utiliser que deux hyperliens.
Mon /etc/postfix/master.cf ressemble
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
et nmap me dit
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
mon /etc/postfix/main.cf ressemble
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
Les fichiers * .pem ont été créés comme décrit dans le tutoriel ci-dessus, en utilisant
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
Je pense que je n'ai pas besoin d'inclure /etc/dovecot/dovecot.conf ici, car la connexion via imaps et pop3s fonctionne bien selon les journaux. Le seul problème est que postfix utilise correctement les certificats auto-générés et auto-signés.
Toute aide appréciée!
EDIT: Je viens d'essayer ce tutoriel différent sur la génération d'un certificat auto-signé pour postfix, obtenant toujours la même erreur. Je ne sais vraiment pas quoi tester d'autre.
J'ai également vérifié les bibliothèques SSL, mais tout semble aller bien:
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)
Après avoir suivi les instructions d' Ansgar Wiechers, cela fonctionne enfin.
postconf -n
contenait les lignes comme il se doit. La vérification du certificat / clé via openssl a montré que les deux fichiers sont valides.
Il s'agit donc bien d'un problème d'autorisations! Je ne savais pas que la récupération des fichiers /etc/ssl/*/postfix.pem dans postfix: postfix ne suffit pas pour que postfix lise les fichiers.
postconf -n
partie. Le copier-coller a abouti à un fichier CERT et une clé non liée et en me concentrant sur la sortie de celui-ci, j'ai pu voir la faute de frappe dans le fichier de configuration que j'avais déjà vérifiée mais que j'ai manquée ...Ces instructions n'ont
chmod o= /etc/ssl/private/postfix.pem
rien dit sur l'utilisateur qui possède le fichier.Sur mes boîtes, le
smtpd
processus s'exécute en tantpostfix
qu'utilisateur. Vérifiez que l'postfix
utilisateur peut y accéder/etc/ssl/private/postfix.pem
. Ou peut-être justechown postfix:postfix /etc/ssl/private/postfix.pem
.L'autre problème évident est exactement ce que dit le message d'erreur: il n'y a pas de clé RSA valide dans ce fichier. Jetez un œil
/etc/ssl/private/postfix.pem
et assurez-vous qu'il contient au moins quelque chose qui ressemble à une clé RSA. Ne le collez pas dans votre question.En fait, je viens de remarquer que le message d'erreur est pour
/etc/ssl/certs/postfix.pem
, non/etc/ssl/private/postfix.pem
. Vérifiez également la propriété, les autorisations et le contenu/etc/ssl/certs/postfix.pem
.Ce message d'erreur est un peu déroutant. Il dit
cannot get RSA private key from file /etc/ssl/certs/postfix.pem
mais la clé privée devrait être dedans/etc/ssl/private/postfix.pem
. Je n'ai pas assez d'expérience avec Postfix en utilisant TLS pour savoir s'il s'agit d'un bogue Postfix ou d'une erreur dans votre configuration.la source
Le certificat doit correspondre à la clé, dans mon cas, cela n'avait rien à voir avec les autorisations
créer un certificat et une clé auto-signés https://msol.io/blog/tech/create-a-self-signed-ssl-certificate-with-openssl/
J'espère que cela t'aides
la source
vérifiez que la clé ne comporte pas de phrase secrète. Vous pouvez le supprimer avec
s'ils sont ensemble, utilisez
La phrase secrète émettra un avertissement sur les journaux indiquant qu'elle n'a pas pu obtenir la clé privée RSAA, ce qui désactive à son tour la prise en charge TLS. J'espère que cela aide quelqu'un!
la source