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 [email protected]
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 [email protected] a [email protected] 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 [email protected] usando Thunderbird para iniciar sesión en [email protected] , 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 [email protected] 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.
postconf -n
parte Copiar y pegar dio como resultado un archivo cert y una clave no relacionada, y al centrarme en el resultado de eso, me permitió ver el error tipográfico en el archivo de configuración que ya había verificado pero que me perdí ...Esas instrucciones tienen
chmod o= /etc/ssl/private/postfix.pem
pero no dicen nada sobre qué usuario posee el archivo.En mis cajas, el
smtpd
proceso se ejecuta como elpostfix
usuario. Verifique que elpostfix
usuario pueda acceder/etc/ssl/private/postfix.pem
. O posiblemente solochown postfix:postfix /etc/ssl/private/postfix.pem
.El otro problema obvio es exactamente lo que dice el mensaje de error: no hay una clave RSA válida en ese archivo. Eche un vistazo
/etc/ssl/private/postfix.pem
y asegúrese de que contenga al menos algo que se parezca a una clave RSA. No lo pegues en tu pregunta.En realidad, acabo de notar que el mensaje de error es para
/etc/ssl/certs/postfix.pem
, no/etc/ssl/private/postfix.pem
. Verifique también la propiedad, los permisos y el contenido de/etc/ssl/certs/postfix.pem
.Ese mensaje de error es un poco confuso. Dice
cannot get RSA private key from file /etc/ssl/certs/postfix.pem
pero la clave privada debería estar adentro/etc/ssl/private/postfix.pem
. No tengo suficiente experiencia con Postfix usando TLS para saber si esto es un error de Postfix o un error en su configuración.fuente
Cert tiene que coincidir con la clave, en mi caso no tenía nada que ver con los permisos
cree un certificado y una clave autofirmados https://msol.io/blog/tech/create-a-self-signed-ssl-certificate-with-openssl/
Espero que esto ayude
fuente
verifique que la clave no tenga una frase de contraseña. Puedes eliminarlo con
si están juntos usan
La frase de contraseña emitirá una advertencia en los registros que dice que no pudo obtener la clave privada RSAA, que a su vez deshabilita el soporte TLS. ¡Espero que esto ayude a alguien!
fuente