Probleme de malformation de header sur les mails

Hello
je viens d’installer la v20 et j’ai un probleme de mail. les logs indiquent une malformation des headers

2024-10-04 10:04:18 1swdIQ-002JTy-00 rewrite: malformed address: Return-Path: =?UTF-8?B?RXNwZXJsd may not follow « =?UTF-8?B?RXNwZXJsdWF0?= » [email protected]

le mail d’erreur mentionne aussi le meme probleme :
Remote server returned '554 5.0.0 <gmail-smtp-in.l.google.com #5.0.0 smtp; 550-5.7.1 [188.165.76.33] Messages with multiple addresses in From: header are 550-5.7.1 not accepted. For more information, go to 550-5.7.1

le from est bizare :

From: « =?UTF-8?B?RXNwZXJsdWF0?= » contact@mondomainecom
Return-Path: =?UTF-8?B?RXNwZXJsdWF0?= [email protected]
Reply-To: [email protected]
Date: Fri, 04 Oct 2024 08:04:17 +0000

J’ai un autre dolibarr installé sur le meme serveur, meme config, en v19.0.2 et aucun probleme

server : openlitespeed / php8.2

Peux tu confirmer que tu utilise la méthode d’envoi « PHP Mail » ?

Peux tu essayer de remplacer cette ligne dans le fichier CMailFile.class.php
$out .= "Return-Path: ".$this->getValidAddress($this->addr_from, 0, 1).$this->eol2;

par

$out .= "Return-Path: ".$this->getValidAddress($this->addr_from, 1, 1).$this->eol2;

Si tu as tjs le pb sur le From , tu peux essayer cette correction la:

$newemail = ($format == 3 ? '"' : '').($encode ? self::encodetorfc2822($name) : $name).($format == 3 ? '"' : '').' <'.$email.'>';

à remplacer par

$newemail = (($format == 3 && !$encode) ? '"' : '').($encode ? self::encodetorfc2822($name) : $name).(($format == 3 && !$encode) ? '"' : '').' <'.$email.'>';

Bonjour,

ne manque il pas un point dans l’email

From: « =?UTF-8?B?RXNwZXJsdWF0?= » contact@mondomainecom

oui ca c’est moi qui ai oublié de mettre le . j’ai remplacer mon domaine par modomaine.com

cela ne change rien, j’ai toujours cette erreur dans les logs exim

2024-11-13 12:04:26 1tBBAg-003dPd-1N rewrite: malformed address: Return-Path: =?UTF-8?B?RXNwZXJsd may not follow =?UTF-8?B?RXNwZXJsdWF0?= [email protected]

2024-11-13 12:04:26 1tBBAg-003dPd-1N rewrite: missing or malformed local part (expected word or « < »)

j’ai des wordpress sur le meme serveur et je n’ai pas ca sur les envoi. je n’ai pas ce probleme non plus sur la version 19 de dolibarr.

pour info, j’ai aussi essayé avec et sans avoir rempli « E-mail utilisé pour les retours d’erreur (champ « Errors-To » dans les e-mails envoyés) » dans les parametres smtp
et j’ai aussi essayé sans cette configuration dans mon php ini :

php_admin_value sendmail_path « /usr/sbin/sendmail -t -i -f [email protected] »

mais rien n’y fait. toujours la meme erreur dans mes logs d’exim. il y a un return-path qui n’est pas bon et met le bazar dans les headers du mail sortant

En effet, un Return-Path ne devrait contenir que
Return-Path: <[email protected]>

Mais si après avoir changé la ligne par
$out .= "Return-Path: ".$this->getValidAddress($this->addr_from, 1, 1).$this->eol2;
Tu as toujours
Return-Path: =?UTF-8?B?RXNwZXJsd <[email protected]>

Alors, soit tu n’a pas changé dans la version effective de dolibarr, soit tu as un composant (exim) qui modifie la valeur return-path mise par dolibarr par la sienne. postfix se permet cela dans certaines config.

Peux tu confirmer que tu utilise la méthode d’envoi « PHP Mail » ?

oui j’utilise bien php mail. Exim ne modifie rien sinon j’aurai le meme souci sur mes autres sites sur le meme serveurs, mais ce n’est pas le cas.

j’ai juste forcé le sender au niveau php avec la ligne

/usr/sbin/sendmail -t -i -f [email protected]

le chemin ne pointe pas vers sendmail mais est un lien symbolique vers exim4

J’ai fait la modification recommandée sur le fichier ./core/class/CMailFile.class.php

mais peut etre que le test mail du panneau de configuration n’utilise pas ce fichier la ?

Si, il utilise bien la couche commune.
Tu ne devrais pas avoir à forcer le sender dans php. Mais peu importe, cela devrait marcher dans les 2 cas.
Peux tu faire ceci;. Ajoute dans accueil - configuration - divers, la constante MAIN_MAIL_DEBUG. refait un test d’envoi.
Et post le contenu du fichier dolibarr_mail.log

si je ne force pas le sender, l’enveloppe part avec le user php, c’est pas terrible. c’est pour ca.
MAIN_MAIL_DEBUG en nom et valeur ? je laisse vide ?

le voila :

From: =?UTF-8?B?RXNwZXJsdWF0?= <[email protected]>
Return-Path: <[email protected]>
Reply-To: [email protected]
Date: Wed, 13 Nov 2024 14:39:02 +0000
Message-ID: <1731508742.phpmail-dolibarr-test@3549d3983220356b1f448faa884d65cbf9b5905a>
X-Dolibarr-TRACKID: test@3549d3983220356b1f448faa884d65cbf9b5905a
X-RemoteAddr: 91.161.82.145
X-Mailer: Dolibarr version 20.0.1 (using php mail)
Mime-Version: 1.0
Content-Type: multipart/mixed;
 boundary="multipart_x.1731508742.x_boundary"
Content-Transfer-Encoding: 8bit
Feedback-ID: test:3549d3983220356b1f448faa884d65cbf9b5905a:dolib
This is a message with multiple parts in MIME format.
--multipart_x.1731508742.x_boundary
Content-Type: text/plain; charset=UTF-8

Bonjour
Ceci est un mail de test envoyé à [email protected].
Les lignes sont séparées par un retour à la ligne.

--multipart_x.1731508742.x_boundary--

et le log exim4 correspondant :

2024-11-13 15:39:02 1tBEWM-003mjG-0u rewrite: malformed address: Return-Path: <contact@mondomaine. may not follow =?UTF-8?B?RXNwZXJsdWF0?= [email protected]

2024-11-13 15:39:02 1tBEWM-003mjG-0u rewrite: missing or malformed local part (expected word or « < »)
2024-11-13 15:39:02 1tBEWM-003mjG-0u <= [email protected] U=user_php P=local S=1234
2024-11-13 15:39:02 1tBEWM-003mjG-0u => [email protected] R=dnslookup T=remote_smtp H=mail.mondomaine.com [82.165.107.159] X=TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256 CVsk,CN=Plesk,[email protected]" C=« 250 2.0.0 Ok: queued as 97D006258F »
2024-11-13 15:39:02 1tBEWM-003mjG-0u Completed
2024-11-13 15:45:50 Start queue run: pid=903200
2024-11-13 15:45:50 End queue run: pid=903200

OK. Le changement sur le Return-Path est bien effectif.
Peux tu maintenant essayer avec
$out .= "Return-Path: ".$this->getValidAddress($this->addr_from, 2, 1).$this->eol2;
(en bref, après avoir testé en changeant le 0 en 1 du 2eme paramètre, maintenant on essaie avec 2).
Puis remet moi la log dolibarr_mail.log

changement dans ./core/class/CMailFile.class.php :
// $out .= "Return-Path: ".$this->getValidAddress($this->addr_from, 0, 1).$this->eol2;
$out .= "Return-Path: ".$this->getValidAddress($this->addr_from, 2, 1).$this->eol2;

logs exim :
2024-11-14 15:24:16 1tBalc-004k2h-1s rewrite: malformed address: Return-Path: [email protected] may not follow =?UTF-8?B?RXNwZXJsdWF0?= [email protected]

2024-11-14 15:24:16 1tBalc-004k2h-1s rewrite: missing or malformed local part (expected word or « < »)
2024-11-14 15:24:16 1tBalc-004k2h-1s <= [email protected] U=mondomaine_app P=local S=1232
2024-11-14 15:24:17 1tBalc-004k2h-1s => [email protected] R=dnslookup T=remote_smtp H=mail.mondomaine.com [82.165.107.159] X=TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256 CV=no DN="C=CH,L=Schaffhausen,O=Plesk,CN=Plesk,[email protected]" C=« 250 2.0.0 Ok: queued as D95105FD69 »
2024-11-14 15:24:17 1tBalc-004k2h-1s Completed

logs mail dolibarr :

From: =?UTF-8?B?RXNwZXJsdWF0?= <[email protected]>
Return-Path: [email protected]
Reply-To: [email protected]
Date: Thu, 14 Nov 2024 14:24:16 +0000
Message-ID: <1731594256.phpmail-dolibarr-test@3549d3983220356b1f448faa884d65cbf9b5905a>
X-Dolibarr-TRACKID: test@3549d3983220356b1f448faa884d65cbf9b5905a
X-RemoteAddr: 91.161.82.145
X-Mailer: Dolibarr version 20.0.1 (using php mail)
Mime-Version: 1.0
Content-Type: multipart/mixed;
 boundary="multipart_x.1731594256.x_boundary"
Content-Transfer-Encoding: 8bit
Feedback-ID: test:3549d3983220356b1f448faa884d65cbf9b5905a:dolib
This is a message with multiple parts in MIME format.
--multipart_x.1731594256.x_boundary
Content-Type: text/plain; charset=UTF-8

Bonjour
Ceci est un mail de test envoyé à [email protected].
Les lignes sont séparées par un retour à la ligne.

--multipart_x.1731594256.x_boundary--

Et si tu supprime (mis en commentaire) omplètement la ligne ?

Alors, en fait le probleme vient du FROM, mais je ne parviens pas à le régler.

  1. j’ai modifié la ligne suivante :
    // $out .= "From: ".$this->getValidAddress($this->addr_from, 3, 1).$this->eol2;
    $out .= "From: ".$this->getValidAddress($this->addr_from, 2, 1).$this->eol2;

je n’ai plus le From: =?UTF-8?B?RXNwZXJsdWF0?=, donc de ce point de vue, ca parait mieux.

le log mail dolibar es propre

MAIS…

au niveau exim j’ai toujours une malformation
2024-11-15 09:14:50 1tBrTe-005SFC-2l rewrite: malformed address: Return-Path: [email protected] may not follow [email protected]

Si je commente la ligne de return-path, en effet, il n’est plus présent, mais l’erreur exim devient alors

2024-11-15 09:17:53 1tBrWb-005STB-01 rewrite: malformed address: Reply-To: [email protected]
may not follow [email protected]

En d’autres termes, il doit y avoir une erreur dans le rendu qui ne se voit pas dans les logs dolibarr, peut etre au niveau du saut de ligne, qui fait que la premiere ligne (FROM) se retrouve mixée avec la suivante (return-path ou reply-to si on commente le return-path)

Si je fais un envoi de test vers gmail, le message d’erreur en retour est toujours le meme que depuis le début :

Remote server returned '554 5.0.0 <gmail-smtp-in.l.google.com #5.0.0 smtp; 550-5.7.1 [188.165.76.33] Messages with multiple addresses in From: header are 550-5.7.1 not accepted. For more information, go to 550-5.7.1

→ le from, malgre le fait qu’il paraisse correctement formaté dans le log mail de dolibar, ne l’est pas (ou plus) lorsqu’Exim envoi le mail. Le FROM semble mélangé à la ligne suivante.

Je doute que le problème vienne de dolibarr.
En effet les lignes suivantes

From: =?UTF-8?B?RXNwZXJsdWF0?= <[email protected]>
Return-Path: [email protected]
Reply-To: [email protected]

sont toutes valides. Le from avec les caractère bizares sont en fait le nom du destinataire encodé selon les regles d’envoi de mail suivi de l’email entre crochet.
Bref, la log (qui est le paquet exact envoyé à la commande mail) montre que le message envoyé est bien correct. Il l’est aussi meme sans les modifications. Aussi si ce dernier pose problème à l’arrivée, c’est qu’il est transformé et corrompu par le MTA, mais hélas sur ce point je ne peux aider.

Eldy, regaerde mon dernier commentaire. Il ne s’agit pas de l’encodage du from mais probablement du saut de ligne.

Comme je l’ai dit plusieurs fois, j’ai sur le même serveur dolibarr et des wordpress. il n’y a qu’avec dolibar que j’ai cette malformation des headers. les emails partent correctement avec les wordpress.
j’ai également un autre dolibar en version 19 sur un autre serveur qui ne pose pas non plus probleme.
alors tout pointe sur cette version de dolibarr, qui pour une raison qui semble échapper à tout le monde, formatte incorrectement le header.

regarde bien ce que j’ai décrit. Si je commente le return-path, j’ai toujours la meme erreur qui se reporte sur la ligne suivante.

au niveau exim j’ai toujours une malformation
2024-11-15 09:14:50 1tBrTe-005SFC-2l rewrite: malformed address: Return-Path: [email protected] may not follow [email protected]

Si je commente la ligne de return-path, en effet, il n’est plus présent, mais l’erreur exim devient alors

2024-11-15 09:17:53 1tBrWb-005STB-01 rewrite: malformed address: Reply-To: [email protected]
may not follow [email protected]

Bonjour,

le message de log de exim semble justement indiquer le contraire.

rewrite indique que ce message provient du système des règles de réécriture des adresses de exim.

Essayez de poster vos messages de log sur le forum en texte préformaté, c’est illisible sinon.

→ le contraire de quoi ? je n’ai cette erreur de header que sur les mails envoyés par dolibarr. je n’ai auncune erreur sur les autres vhosts.

Je viens de faire un autre test. je suis repassé en php7.4 et la plus de probleme. Le soucis est donc en php8.2.

voila le log exim en php 7.4

2024-11-19 08:50:00 1tDIzo-009HxI-0V <= [email protected] U=mondomaine_app P=local S=1065 id=1732002600.phpmail-dolibarr-test@3549d3983220356b1f448faa884d65cbf9b5905a
2024-11-19 08:50:00 1tDIzo-009HxI-0V => [email protected] R=dnslookup T=remote_smtp H=mail.mondomaine.com [82.165.107.159] X=TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256 CV=no DN="C=CH,L=Schaffhausen,O=Plesk,CN=Plesk,[email protected]" C="250 2.0.0 Ok: queued as 7692B62F94"
2024-11-19 08:50:00 1tDIzo-009HxI-0V Completed

et voila ensuite en php8.2

2024-11-19 08:50:38 1tDJ0Q-009Hxy-13 rewrite: malformed address: Reply-To: [email protected]
 may not follow [email protected]

2024-11-19 08:50:38 1tDJ0Q-009Hxy-13 rewrite: missing or malformed local part (expected word or "<")
2024-11-19 08:50:38 1tDJ0Q-009Hxy-13 <= [email protected] U=mondomaine_app P=local S=1171
2024-11-19 08:50:38 1tDJ0Q-009Hxy-13 => [email protected] R=dnslookup T=remote_smtp H=mail.mondomaine.com [82.165.107.159] X=TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256 CV=no DN="C=CH,L=Schaffhausen,O=Plesk,CN=Plesk,[email protected]" C="250 2.0.0 Ok: queued as 9395E62F94"
2024-11-19 08:50:38 1tDJ0Q-009Hxy-13 Completed

on voit donc bien qu’il y a un souci sur la formation du header mail selon la version php.