Acabo de seguir este tutorial para configurar un servidor de correo postfix con dovecot y mysql como back-end para usuarios virtuales.
Ahora que tengo la mayoría de las piezas funcionando, puedo conectarme a POP3 (S) e IMAP (S).
Utilizando
echo TEST-MAIL | mail myaccount@hotmail.com
funciona bien, cuando inicio sesión en mi cuenta de hotmail muestra el correo electrónico.
También funciona en reversa, por lo tanto, mi entrada MX para example.com finalmente se ha propagado, por lo que puedo recibir correos electrónicos enviados desde myaccount@hotmail.com a myvirtualuser@example.com y verlos en Thunderbird usando STARTTLS a través de IMAP.
Investigando un poco más después de recibir el mensaje de error " 5.7.1: Acceso de retransmisión denegado " al intentar enviar correos a myaccount@hotmail.com usando Thunderbird para iniciar sesión en myvirtualuser@example.com , descubrí que mi servidor estaba actuando como un "Open Mail Relay", que, por supuesto, es algo malo.
Al profundizar más en las partes opcionales del tutorial como este comentario y la otra publicación , decidí completar estos pasos también para poder enviar correos a través de myvirtualuser@example.com a través de Mozilla Thunderbird, sin recibir el mensaje de error " 5.7.1 : Acceso de retransmisión denegado "(ya que los servidores de correo comunes rechazan los correos electrónicos retransmitidos abiertos).
Pero ahora me encontré con un error al intentar que Postfix funcionara con SMTPS, en /var/log/mail.log se lee
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:
Ese error se registra justo después de intentar enviar un correo desde mi servidor de correo recién instalado usando SMTP SSL / TLS a través del puerto 465 en Thunderbird. Thunderbird luego me dice que ocurrió un tiempo de espera.
Google tiene algunos resultados sobre ese problema, pero no pude hacerlo funcionar con ninguno de ellos. Enlazaría algunos de ellos aquí, pero como usuario nuevo solo puedo usar dos hipervínculos.
Mi /etc/postfix/master.cf se parece a
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
y nmap me dice
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
mi /etc/postfix/main.cf parece
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
Los archivos * .pem se crearon como se describe en el tutorial anterior, utilizando
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
Creo que no tengo que incluir /etc/dovecot/dovecot.conf aquí, ya que iniciar sesión a través de imaps y pop3s funciona bien de acuerdo con los registros. El único problema es hacer que Postfix use correctamente los certificados autofirmados y autofirmados.
Cualquier ayuda apreciada!
EDITAR: acabo de probar este tutorial diferente sobre la generación de un certificado autofirmado para postfix, obteniendo el mismo error. Realmente no sé qué más probar.
También verifiqué las bibliotecas SSL, pero todo parece estar 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)
Después de seguir las instrucciones de Ansgar Wiechers , finalmente funciona.
postconf -n
contenía las líneas como debería. La verificación del certificado / clave a través de openssl mostró que ambos archivos son válidos.
¡De hecho, ha sido un problema de permisos! No sabía que la creación de los archivos /etc/ssl/*/postfix.pem para postfix: postfix no es suficiente para que postfix lea los archivos.