Ho appena seguito questo tutorial per configurare un mailserver postfix con dovecot e mysql come backend per utenti virtuali.
Ora ho funzionato la maggior parte delle parti, posso collegarmi a POP3 (S) e IMAP (S).
utilizzando
echo TEST-MAIL | mail myaccount@hotmail.com
funziona bene, quando accedo al mio account hotmail mostra l'e-mail.
Funziona anche al contrario, quindi la mia voce MX per esempio.com è stata finalmente propagata, quindi sono in grado di ricevere e-mail inviate da myaccount@hotmail.com a myvirtualuser@example.com e visualizzarle in Thunderbird usando STARTTLS tramite IMAP.
Facendo un po 'più di ricerca dopo che ho ricevuto il messaggio di errore " 5.7.1: Accesso di inoltro negato " quando ho provato a inviare mail a mioaccount@hotmail.com usando Thunderbird che si accedeva a myvirtualuser@example.com , ho capito che il mio server stava funzionando come "Open Mail Relay", che - ovviamente - è una cosa negativa.
Scavando di più nelle parti opzionali del tutorial come questo commento e l'altro tutorial , ho deciso di completare anche questi passaggi per essere in grado di inviare mail via myvirtualuser@example.com tramite Mozilla Thunderbird, senza ricevere il messaggio di errore " 5.7.1 : Accesso di inoltro negato "(poiché i comuni server di posta rifiutano le email di inoltro aperte).
Ma ora ho riscontrato un errore nel tentativo di far funzionare Postfix con SMTPS, in /var/log/mail.log si legge
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:
Tale errore viene registrato subito dopo aver tentato di inviare una posta dal mio mailserver appena installato utilizzando SMTP SSL / TLS tramite la porta 465 in Thunderbird. Thunderbird mi dice quindi che si è verificato un timeout.
Google ha alcuni risultati relativi a quel problema, ma non sono riuscito a farlo funzionare con nessuno di questi. Vorrei collegarne alcuni qui, ma come nuovo utente mi è permesso utilizzare solo due collegamenti ipertestuali.
Il mio /etc/postfix/master.cf sembra
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
e nmap mi dice
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
il mio /etc/postfix/main.cf sembra
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
I file * .pem sono stati creati come descritto nel tutorial sopra, usando
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
Penso di non dover includere /etc/dovecot/dovecot.conf qui, poiché l'accesso tramite imaps e pop3s funziona bene secondo i registri. L'unico problema è che Postfix utilizza correttamente i certificati auto-generati e autofirmati.
Qualsiasi aiuto apprezzato!
EDIT: ho appena provato questo diverso tutorial sulla generazione di un certificato autofirmato per Postfix, ottenendo comunque lo stesso errore. Davvero non so cos'altro testare.
Ho anche controllato le librerie SSL, ma tutto sembra andare bene:
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)
Dopo aver seguito Ansgar Wiechers istruzioni di , finalmente funziona.
postconf -n
conteneva le righe come dovrebbe. Il controllo certificato / chiave tramite openssl ha mostrato che entrambi i file sono validi.
Quindi è stato davvero un problema con le autorizzazioni! Non sapevo che chown'ing i file /etc/ssl/*/postfix.pem per postfix: postfix non è sufficiente per postfix per leggere i file.