¿Cómo corregir Postfix '' Relay Access Denied '?


54

Esta mañana, para corregir un problema con una falta de coincidencia de nombre en el certificado de seguridad, seguí los pasos recomendados de ¿Cómo arreglar el servidor de correo SSL? , pero ahora, cuando intento 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@gmail.com'. Asunto 'Esta es una prueba. ', Cuenta:' mail.domain.com ', Servidor:' mail.domain.com ', Protocolo: SMTP, Respuesta del servidor:' 554 5.7.1: 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 electrónicos a otras cuentas en el mismo dominio. Simplemente no puedo enviar correos electrónicos a destinatarios fuera de nuestro dominio.

Traté de deshabilitar TLS por completo pero sin dados, todavía recibo el mismo error.

Cuando reviso el archivo mail.log, veo lo siguiente.

Jul 18 08:24:41 company imapd: LOGIN, user=user_name@domain.com, ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, user=user_name@domain.com, 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@gmail.com>: Relay access denied; from=<user_name@domain.com> to=<email@gmail.com> 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, user=user_name@domain.com, ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79

El archivo se main.cfve así:

#
# 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 de clientes (Thunderbird y Outlook) tanto desde nuestra red local como fuera de ella.


66
¿Por qué no aceptas?
Torre

Respuestas:


58

TLS solo habilita el cifrado en la sesión smtp y no afecta directamente si Postfix podrá o no retransmitir un mensaje.

El mensaje denegado de retransmisión se produce porque las reglas smtpd_recipient_restrictions no coinciden. Se debe cumplir una de esas condiciones 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 remitentes autenticados a través de SASL. Esto será necesario para autenticar usuarios fuera de su red que normalmente están bloqueados.

check_recipient_access

Esto hará que postfix busque en / etc / postfix / filter_domains las reglas basadas en la dirección del destinatario. (A juzgar por el nombre del archivo, probablemente solo esté bloqueando dominios específicos ... ¿Verifica si gmail.com aparece allí?)

permit_mynetworks

Esto permitirá que los hosts por dirección IP coincidan con los rangos de IP especificados en $ mynetworks. En el archivo main.cf que publicó, $ mynetworks se configuró en 127.0.0.1, por lo que solo retransmitirá los correos electrónicos generados por el propio servidor.

Según esa configuración, su cliente de correo necesitará usar la autenticación SMTP antes de poder 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 usa 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 listo.


14
smtpd_use_tls = no

Ha deshabilitado TLS, por lo que ahora necesita autorizar su red local agregándola mynetworks. Por ejemplo,

mynetworks = 192.168.1.0/24 127.0.0.0/8

Esto solucionará el envío solo desde su red local. Para enviar correos electrónicos desde fuera de su red local, necesitará que funcione la autenticación TLS.


He configurado smtpd_use_tls = yes porque tenemos que poder enviar correos electrónicos desde fuera de la red. Sin embargo, el problema persiste.
Noah Goodrich

Aumente smtpd_tls_loglevel hasta 3 y vea si aparece algo interesante en los registros (y recuerde volver a colocarlo en 1 o 0 cuando haya terminado).
pgs

Además, intente configurar smtp_use_tls en no (para enviar correos electrónicos externos). Ver postfix.org/postconf.5.html#smtp_use_tls
pgs

1
-1 porque no todos pueden deshabilitar tls.
jgifford25

3
No estoy diciendo que deba desactivar tls; Estoy diciendo que dado que ya lo ha deshabilitado, entonces necesita configurar mis redes. Y que la solución completa es hacer que tls vuelva a funcionar.
pgs

6

Creo que extrañas tu domain.com en mydestination, porque es el predeterminado relay_domains=$mydestination, por lo que puedes agregar tu configuración a la línea:

mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain

o:

relay_domains = $mydomain

No olvide reiniciar el servidor postfix ( service postfix restart) cada vez que edite el archivo conf de postfix.


+ 1 por agregar "localhost, localhost.localdomain" a la lista de hosts (a menudo es un problema en algunos sistemas, aunque no está claro por qué no es un problema en otros)
Iain Collins

2

Tuve el mismo problema en Outlook (con el palomar y el backend postfix) y pasé dos días buscando soluciones y modificando mis archivos de configuración. Todo lo que tenía que hacer era marcar "El servidor requiere autenticación" en la pestaña Saliente en la configuración de correo en Outlook y mis mensajes ahora se envían a gmail. Consulte las instrucciones detalladas sobre cómo encontrar la configuración aquí http://support.bluetie.com/node/440 .


2

Este problema me estaba molestando por un tiempo. Estaba tratando de conectarme desde server1.domain.com a server2.domain.com.

Así es como solucioné esto:

#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

También debe asegurarse de haber configurado / etc / hosts y / etc / hostname correctamente y asegurarse de ejecutar lo siguiente después de los cambios de red:

sudo service networking restart

y lo siguiente después de los cambios de configuración de postfix

sudo service postfix reload

0

Para mí: tuve que agregar localhosta mynetworkspesar del hecho de que 127.0.0.0/8ya estaba allí. Entonces, ahora se ve:

mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.