Resolución de Problemas: Odoo y Mailu

Aunque el titulo diga Odoo y Mailu, realmente el problema es mas puntual. Hay que recordar que son herramientas conformadas por otras y en especial, Maillu usa postfix para la entrega de mensajes por SMTP.

El problema

A la hora de configurar un servidor de correo electrónico propio en odoo, es posible que te pilles un error como este

Odoo no es precisamente verboso con sus errores, por lo que puede ser totalmente confuso y es fácil de perderse sin saber que pasa. Así que si tienes acceso a los logs del sistema, te pones a revisar los logs de Odoo

SMTPRecipientsRefused: {'ventas@mail.mitienda.com': (550, b'5.1.0 <bounce@mail.mitienda.com>: Sender address rejected: User unknown in virtual mailbox table')} 
2024-10-30 17:23:52,288 1 ERROR odoo odoo.addons.mail.models.mail_mail: failed sending mail (id: 65) due to Falló la entrega del correo
La entrega de correo vía el servidor SMTP 'None' falló.
SMTPRecipientsRefused: {'ventas@mail.mitienda.com': (550, b'5.1.0 <bounce@mail.mitienda.com>: Sender address rejected: User unknown in virtual mailbox table')} 
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_mail_server.py", line 715, in send_email
    smtp.send_message(message, smtp_from, smtp_to_list)
  File "/usr/lib/python3.10/smtplib.py", line 986, in send_message
    return self.sendmail(from_addr, to_addrs, flatmsg, mail_options,
  File "/usr/lib/python3.10/smtplib.py", line 901, in sendmail
    raise SMTPRecipientsRefused(senderrs)
smtplib.SMTPRecipientsRefused: {'ventas@mail.mitienda.com': (550, b'5.1.0 <bounce@mail.mitienda.com>: Sender address rejected: User unknown in virtual mailbox table')}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_mail.py", line 665, in _send
    res = SendIrMailServer.send_email(
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_mail_server.py", line 726, in send_email
    raise MailDeliveryException(_("Mail Delivery Failed"), msg)
odoo.addons.base.models.ir_mail_server.MailDeliveryException: ('Falló la entrega del correo', "La entrega de correo vía el servidor SMTP 'None' falló.\nSMTPRecipientsRefused: {'ventas@mail.mitienda.com': (550, b'5.1.0 <bounce@mail.mitienda.com>: Sender address rejected: User unknown in virtual mailbox table')}")

Ah bueno, me quedo clarisimo que algo no funciona. Gracias Python.

Deduciendo de lo que indica el extraño error que dice Python, es posible que haya rebote por alguna razón. pero al revisar la bandeja de entrada del correo emisor y receptor, simplemente no hay nada. Mientras tanto, Odoo solo dice que ocurrió un error.

Vamos asumiendo que ha sido bien configurado el servidor de correo, entonces, no debería haber problema. Pero es raro. Sender address rejected: User unknown in virtual mailbox table no indica nada. ¿Que postfix no ha creado las bandejas de entrada?, pues vamos a ver que dice postfix.

Rastreando el problema

Teniendo dudas razonables, vamos a revisar el log de postfix. Mas rebotes

Oct 30 16:58:55 mail postfix/smtpd[355]: NOQUEUE: reject: RCPT from mailu-front-1.mailu_default[127.0.0.1]: 550 5.1.0 <bounce@mail.mitienda.com>: Sender address rejected: User unknown in virtual mailbox table; from=<bounce@mail.mitienda.com> to=<marcos@mail.mitienda.com> proto=ESMTP helo=<mail.mitienda.com>
Oct 30 16:58:55 mail postfix/smtpd[355]: disconnect from mailu-front-1.mailu_default[127.0.0.1] ehlo=2 xclient=0/1 mail=1 rcpt=0/1 rset=1 quit=1 commands=5/7

Bueno, que rebota. Nada que no me haya dicho python. Probemos ahora con un cliente de correo y veamos

Oct 31 02:36:34 mail postfix/smtpd[8747]: NOQUEUE: reject: RCPT from mailu-front-1.mailu_default[127.0.0.1]: 553 5.7.1 <ventas@mail.mitienda.com>: Sender address rejected: not owned by user admin@mail.mitienda.com; from=<ventas@mail.mitienda.com> to=<marcos@mail.mitienda.com> proto=ESMTP helo=<mail.mitienda.com>

¿Como que Sender address rejected: not owned by user?

Solución

Probablemente llegaste a la parte que te interesaba, pero no hubieses podido llegar aquí sin el preámbulo anterior. He puesto literalmente los mensajes de errores con los que estuve rastreando el problema, en texto y no capturas para que google se encargue del resto, pero en realidad, no se por que se dan estos errores en especifico. Créeme, ChatGPT y Copilot de Microsoft solo alcanzaban a decirme que había un error, pero no de que es ni por que. Pero de casualidad encontré la respuesta.

En Odoo, ve a las configuraciones, en ajustes generales y configurar correo saliente.

Llena los campos como ya sabes y no olvides llenar el misterioso campo «Filtro DE»

El súper intuitivo campo «Filtro DE» se refiere a los dominios autorizados para mandar correos electrónicos. Puedes encontrar los detalles en la documentación oficial de Odoo, pero realmente es bastante… opaco.

https://www.odoo.com/documentation/15.0/es/applications/general/email_communication/email_servers.html

El campo filtro DE le permite utilizar un servidor de correo electrónico saliente en específico según la dirección de correo electrónico De o el dominio por el que Odoo envía correos electrónicos. Puede utilizar este ajuste para mejorar la entrega o la tasa de éxito de envío de los correos electrónicos que se envían desde la base de datos. También puede establecer el campo filtro DE para enviar coreos electrónicos desde distintos dominios en un entorno multiempresa. Puede acceder a este campo en Odoo en Ajustes ‣ Conversaciones ‣ Servidores de correo personalizados ‣ Servidores de correo saliente ‣ Nuevo.

Cuando se envía un correo electrónico desde Odoo mientras el campo de filtro DE está establecido, se elige un servidor de correo electrónico según la siguiente secuencia:

  1. Primero, Odoo busca un servidor de correo electrónico con el mismo valor de filtr DE que el valor De (dirección de correo electrónico) definido en el correo electrónico saliente.
  2. Sin embargo, si no se encontraron servidores de correo electrónico que utilicen el valor De, entonces Odoo buscara un servidor de correo electrónico que tenga el mismo dominio que el valor De (dirección de correo electrónico) definida en el correo electrónico saliente.

Si no se encontraron servidores de correo electrónico después de comprobar el dominio, entonces Odoo obtiene todos los servidores de correo electrónico que no tengan establecido ningún valor o valores de filtro DE.

Si esta consulta no devuelve ningún resultado, entonces Odoo realiza una búsqueda de un servidor de correo electrónico que utilice el parámetro de sistema: mail.default.from. Primero, la dirección de correo electrónico indicada intenta buscar una coincidencia con un servidor de correo electrónico, y posteriormente el dominio intenta encontrar una coincidencia. Si no se encuentra ningún servidor de correo electrónico, Odoo devuelve el primer servidor de correo electrónico (según la prioridad).

No, yo no he traducido. la traducción es así de patatera en la pagina oficial.

Te ahorro los líos. Pon la dirección de correo que usas para la cuenta de admin.

Conclusiones

No me esta gustando Odoo 😭

Creo que el problema aquí es que un cliente de correo comúnmente ya agrega el campo «de» o «desde» que indica desde que cuenta de correo electrónico se esta enviando el correo, pero Odoo no lo agrega por defecto. Por eso imagino que el campo se llena con NULL y causa el error.


Descubre más desde Interlan

Suscríbete y recibe las últimas entradas en tu correo electrónico.

,

Deja un comentario

Interlan