Esta mañana, para corregir un problema de incompatibilidad de nombres en el certificado de seguridad, he seguido los pasos recomendados en ¿Cómo arreglar el SSL del servidor de correo?, pero ahora, al intentar enviar un correo electrónico desde un cliente (en este caso el cliente es Windows Mail), recibo el siguiente error.
La dirección de correo electrónico rechazada era '[email protected]'. Asunto 'Esto es una prueba. ', Cuenta: 'mail.dominio.com', Servidor: 'mail.domain.com', Protocolo: SMTP, Respuesta del servidor: '554 5.7.1 [email protected]: Acceso de retransmisión denegado', Puerto: 25, Seguro(SSL): No, Error del servidor: 554, Número de error: 0x800CCC79
Editar: Todavía puedo recuperar correos electrónicos de esta cuenta, y envío correos a otras cuentas del mismo dominio. Sólo que no puedo enviar correos electrónicos a destinatarios fuera de nuestro dominio.
Intenté deshabilitar TLS por completo, pero no hay nada que hacer, sigo recibiendo el mismo error.
Cuando compruebo el archivo mail.log
, veo lo siguiente.
Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79
El archivo main.cf
tiene este aspecto:
#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#
#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
#
# Some common configuration parameters;
#
inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = host
myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain
smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop
#
# Receiving messages parameters;
#
mydestination = localhost, company
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf
#
# Delivering local messages parameters;
#
mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"
biff = no
alias_database = hash:/etc/aliases
local_recipient_maps =
#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf
#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key
smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes
smtpd_sender_restrictions =
permit_sasl_authenticated
permit_mynetworks
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
Como nota al margen, mi empleador quiere poder enviar correos electrónicos desde clientes (Thunderbird y Outlook) tanto desde nuestra red local como desde fuera de ella.
TLS sólo permite la encriptación en la sesión smtp y no afecta directamente a si Postfix podrá o no retransmitir un mensaje.
La retransmisión del mensaje denegada ocurre porque las reglas smtpd_recipient_restrictions no se cumplen. Una de esas condiciones debe cumplirse para permitir que el mensaje pase:
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
Para explicar esas reglas:
permit_sasl_authenticated
permite a los remitentes autentificados a través de SASL. Esto será necesario para autenticar a los usuarios de fuera de su red que normalmente están bloqueados.
check_recipient_access
Esto hará que postfix busque en /etc/postfix/filtered_domains reglas basadas en la dirección del destinatario. (A juzgar por el nombre del archivo, probablemente sólo esté bloqueando dominios específicos... Comprueba si gmail.com está en la lista).
permit_mynetworks
Esto permitirá hosts por dirección IP que coincidan con los rangos de IP especificados en $mynetworks. En el archivo main.cf que has publicado, $mynetworks estaba configurado como 127.0.0.1, por lo que sólo retransmitirá los correos electrónicos generados por el propio servidor.
Basado en esa configuración, su cliente de correo necesitará usar la Autenticación SMTP antes de que se le permita retransmitir mensajes. No estoy seguro de qué base de datos está utilizando SASL. Eso se especifica en /usr/lib/sasl2/smtpd.conf Presumiblemente también utiliza la misma base de datos que sus buzones virtuales, por lo que debería poder habilitar la autenticación SMTP en su cliente de correo y estar todo listo.
smtpd_use_tls = no
Ha deshabilitado TLS, así que ahora necesita autorizar su red local añadiéndola a mynetworks
. Por ejemplo,
mynetworks = 192.168.1.0/24 127.0.0.0/8
Esto arreglará el envío desde su red local solamente. Para enviar correo electrónico desde fuera de su red local, tendrá que hacer funcionar la autenticación TLS.
Creo que te falta tu dominio.com en mydestination, porque el valor por defecto relay_domains=$mydestination
, así que puedes añadir a tu configuración la línea:
mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
o:
relay_domains = $mydomain
No olvides reiniciar el servidor postfix (service postfix restart
) cada vez que edites el archivo conf de postfix.