Synology PHP - Migration vers DSM7

Bonjour,

J'ai testé au plus simple :

$message = "mon message mail à envoyer";
$to = "vi@xxx.com";
$subject = "test mail";
mail($to, $subject, $message);
et rien ne se passe.

Si je rajoute un hearder de type :
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "From: $from\r\n";
$headers .= "Reply-To: $from\r\n";
le mail part, je le reçois, j'ai l'objet mais pas le message.

Je n'aurais pas un problème de paramétrage du php.ini ?

Merci de votre aide,
 
Oui, ce topic concernait la migration. Maintenant, la migration est faite, mais j'ai un problème avec les mails sous PHP8. Donc je trouvais plus pertinent d'initier un nouveau sujet sur PHP8 et les mails.
Ceci étant, je n'avance pas sur mon problème puisqu'un simple mail texte avec les paramètres les plus basiques ne fonctionne pas.
 
Oui, ce topic concernait la migration. Maintenant, la migration est faite, mais j'ai un problème avec les mails sous PHP8. Donc je trouvais plus pertinent d'initier un nouveau sujet sur PHP8 et les mails.
Ceci étant, je n'avance pas sur mon problème puisqu'un simple mail texte avec les paramètres les plus basiques ne fonctionne pas.

Comme déjà indiqué précédemment, les courriels partent et sont reçus, donc le problème se situr au niveau du formattage de ton code qui je pense contient des fins de ligne empêchant PHP d'inclure la valeur de $message

(cf. https://www.forum-nas.fr/threads/php-migration-vers-dsm7.19973/post-130641)
 
Non, lorsque j'envoie ce code :
$message = "mon message mail à envoyer";
$to = "vi@xxx.com";
$subject = "test mail";
mail($to, $subject, $message);
le mail ne part pas
 
Non, lorsque j'envoie ce code :
$message = "mon message mail à envoyer";
$to = "vi@xxx.com";
$subject = "test mail";
mail($to, $subject, $message);
le mail ne part pas

Avec les politiques d'accès actuelles des serveurs de messagerie, la soumission authentifiée d'un courriel requiert un MAILFROM (celui de l'enveloppe, appelé également <Return-Path>) valide.

As-tu la main sur le serveur de messagerie ?
 
Ca se trouve dans les paquets ? Je ne vois pas de serveur de messagerie par contre je vois des paquets non installés comme Mail Station, Synology Mail Server ou Synology Mail Plus server
 
Ca se trouve dans les paquets ? Je ne vois pas de serveur de messagerie par contre je vois des paquets non installés comme Mail Station, Synology Mail Server ou Synology Mail Plus server

Compte tenu de ta réponse, je pense que tu passes par un prestataire pour le courriel de ton domaine.

WebStation et PHP (peu importe la version) utilise par défaut sur DSM ≥7.x /usr/bin/ssmtp -t pour l'envoi de courriel depuis PHP.

ssmtp s'authentifie au serveur de messagerie pour l'envoi de courriel avec l'utilisateur <http/<nom_du_Nas> lorsqu'aucun en-tête MAILFROM est spécifié dans le script PHP. Ce qui provoque dans la majorité des cas un refus de relayer le courriel soumis.

Exemple avec un script PHP envoyé depuis un Nas avec une configuration PHP par défaut :
Code:
Feb 23 12:52:05 beastie postfix/smtps/smtpd[82897]: connect from <redacted>[0.0.0.0]
Feb 23 12:52:05 beastie postfix/smtps/smtpd[82897]: Anonymous TLS connection established from <redacted>[0.0.0.0]: TLSv1.3 with cipher TLS_AES_256_GCM_S
HA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256
Feb 23 12:52:05 beastie postfix/smtps/smtpd[82897]: NOQUEUE: reject: RCPT from <redacted>[0.0.0.0]: 553 5.7.1 <http@<nom_Nas>: Sender address rejected: not
 owned by user sender@example.net; from=<http@<nom_Nas> to=<recipient@example.net> proto=ESMTP helo=<nom_Nas>
Feb 23 12:52:05 beastie postfix/smtps/smtpd[82897]: lost connection after RCPT from <redacted>[0.0.0.0]
Feb 23 12:52:05 beastie postfix/smtps/smtpd[82897]: disconnect from <redacted>[0.0.0.0] ehlo=1 auth=1 mail=1 rcpt=0/1 commands=3/4

En revanche lorsque, toujours par défaut, un compte de messagerie est paramétré dans Panneau de configuration > Notification > E-mail, ce compte est utilisé lorsqu'un en-tête MAILFROM est spécifié dans le script PHP.

Exemple :
Code:
Feb 23 12:56:43 beastie postfix/smtps/smtpd[82971]: connect from <redacted>[0.0.0.0]
Feb 23 12:56:43 beastie postfix/smtps/smtpd[82971]: Anonymous TLS connection established from <redacted>[0.0.0.0]: TLSv1.3 with cipher TLS_AES_256_GCM_S
HA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256
Feb 23 12:56:43 beastie postfix/smtps/smtpd[82971]: A416A382DD24: client=<redacted>[0.0.0.0], sasl_method=LOGIN, sasl_username=sender@example.net
Feb 23 12:56:43 beastie postfix/cleanup[82974]: A416A382DD24: message-id=<>
Feb 23 12:56:43 beastie opendkim[43705]: A416A382DD24: DKIM-Signature field added (s=dkey, d=example.net)
Feb 23 12:56:43 beastie postfix/qmgr[82228]: A416A382DD24: from=<sender@example.net>, size=572, nrcpt=1 (queue active)
Feb 23 12:56:43 beastie postfix/smtps/smtpd[82971]: disconnect from <redacted>[0.0.0.0] ehlo=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=6
Feb 23 12:56:43 beastie postfix/amavis/smtpd[82977]: connect from localhost[127.0.0.1]
Feb 23 12:56:43 beastie postfix/amavis/smtpd[82977]: C4924382DD39: client=localhost[127.0.0.1]
Feb 23 12:56:43 beastie postfix/cleanup[82974]: C4924382DD39: message-id=<>
Feb 23 12:56:43 beastie postfix/amavis/smtpd[82977]: disconnect from localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Feb 23 12:56:43 beastie postfix/qmgr[82228]: C4924382DD39: from=<sender@example.net>, size=1645, nrcpt=1 (queue active)
Feb 23 12:56:43 beastie postfix/amavisfeed/lmtp[82975]: A416A382DD24: to=<recipient@example.net>, relay=127.0.0.1[127.0.0.1]:10026, delay=0.15, delays=0.07/0/0/0.07, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as C4924382DD39)
Feb 23 12:56:43 beastie postfix/qmgr[82228]: A416A382DD24: removed
Feb 23 12:56:43 beastie postfix/lmtp[82978]: C4924382DD39: to=<recipient@example.net>, relay=smtp.example.net[private/dovecot-lmtp], delay=0.02, delays=0/0/0.01/0, dsn=2.0.0, status=sent (250 2.0.0 <recipient@example.net> +kynMHtU92MiQwEAr2sA+w Saved)
Feb 23 12:56:43 beastie postfix/qmgr[82228]: C4924382DD39: removed
Feb 23 12:56:44 beastie postfix/postscreen[82253]: CONNECT from [127.0.0.1]:12745 to [127.0.0.1]:25
Feb 23 12:56:44 beastie postfix/postscreen[82253]: ALLOWLISTED [127.0.0.1]:12745
Feb 23 12:56:44 beastie postfix/smtpd[82260]: connect from localhost[127.0.0.1]
Feb 23 12:56:44 beastie opendmarc[61259]: ignoring connection from localhost
Feb 23 12:56:44 beastie postfix/smtpd[82260]: disconnect from localhost[127.0.0.1] ehlo=1 quit=1 commands=2

En résumé : assures-toi d'utiliser comme adresse d'expédition, le compte indiqué dans Panneau de configuration > Notification > E-mail
 
Dernière édition:
Oui, j'utilise bien le nom d'utilisateur défini dans le panneau de configuration / email pour le "From".
Et je n'ai pas ce problème avec PHP7.
 
Oui, j'utilise bien le nom d'utilisateur défini dans le panneau de configuration / email pour le "From".
Et je n'ai pas ce problème avec PHP7.

Alors cela indique une configuration personnalisée de PHP 7.x
Dis-nous ce que tu as dans Web Station > Paramètres du langage de script > PHP > 7.x > Modifier > Cœur > taper "mail" dans le champ de recherche

La configuration par défaut est celle-ci :
 

Pièces jointes

  • 01.png
    01.png
    131.2 KB · Affichages: 4
J'ai les mêmes infos pour PHP 7.4 et PHP 8 pour le mail et smtp :
 

Pièces jointes

  • php74.jpg
    php74.jpg
    154.1 KB · Affichages: 4
  • php742.jpg
    php742.jpg
    109.3 KB · Affichages: 4
Avec cette configuration, il est demandé à PHP d'utiliser le serveur de messagerie de la machine locale, donc il faut voir pourquoi ce serveur ne relaie pas les courriels.
 
Dans le panneau de configuration / Notification / Email est indiqué notre fournisseur de service :
smtp.office365.com.
Peut-être que je pourrais remplacer le localhost du script PHP par celui-ci ?
 
Dans le panneau de configuration / Notification / Email est indiqué notre fournisseur de service :
smtp.office365.com.

On y arrive ;)
Dans un de tes précédents messages tu indiques que l'envoi s'effectuait bien mais sans la valeur de $message
Ce à quoi je te suggérais de voir si un délimiteur de fin de ligne empêchant PHP de lire cette variable n'était pas mis par ton éditeur de code.

Peut-être que je pourrais remplacer le localhost du script PHP par celui-ci ?

Relis ce message : https://www.forum-nas.fr/threads/php-migration-vers-dsm7.19973/post-130762