Jump to content

Intégrer la clé DKIM dans les emails de Prestashop


Recommended Posts

Bonjour,

Mon site est hébergé chez OVH, j'ai ajouté la clé publique dans la zone DNS de ce serveur. Maintenant, pour que tout soit opérationnel, il faut ajouter une seconde clé privée dans l'en-tête de l'e-mail.

J'ai trouvé le fichier qui se charge d'envoyer les e-mails depuis Prestashop, il se trouve dans le dossier classes/mail.php.

J'ai essayé de modifier ce fichier pour intégrer la clé privée dans chacun des mails, malheureusement, lorsque j'envoie un mail test depuis le back-office, cela me crée une erreur, il charge sans s'arrêter, après je suis dans l'incapacité d'envoyer d'autres e-mails, car j'ai le message que comme quoi, j'ai envoyé plus de 200 messages à l'heure.

J'ai trouvé deux sujets qui en parlent.

Le premier https://github.com/PrestaShop/PrestaShop/issues/23396, je ne vois pas trop où implanter le petit bout de script.

Le second https://github.com/PrestaShop/PrestaShop/blob/develop/classes/Mail.php, j'ai ajouté les parties où ils y avaient DKIM dans mon fichier mail.php, dans mon back-office dans la partie test e-mail, il continue de charger sans arrêter.

Toute aide sera la bienvenue et je pense que ça pourra en aider bien d'autres.

 

 

 

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour,

Je me suis aperçu qu’il manquait dans la base de données configuration les champs ['PS_MAIL_DKIM_ENABLE'], ['PS_MAIL_DKIM_DOMAIN'], ['PS_MAIL_DKIM_SELECTOR'] et ['PS_MAIL_DKIM_KEY'] pour que ça fonctionne correctement. J'ai donc créé ces champs et complété avec les informations personnelles données générées par le site https://dkimcore.org/tools/keys.html.

Pour le champ PS_MAIL_DKIM_ENABLE, j'ai mis la valeur 1.

Malheureusement, le site https://www.mail-tester.com/ me confirme que je n'ai toujours pas de clé dkim.

Une personne, aurait-elle la gentillesse de bien vouloir m'aider !

Link to comment
Share on other sites

Bonjour Mediacom87,

Je suppose que tu passes par ce genre de service pour éviter de te retrouver sur blacklists et tu dois bien avoir d'autres avantages, dont je ne connais pas.

Pour ce que je veux faire, il doit bien avoir une petite modification à faire dans le fichier mail.php ou c'est bien trop compliqué à mettre en place ?

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

Merci pour la réponse.

J'ai suivi la procédure pour modifier certains fichiers et en ajouter d'autres, ça fait beaucoup de choses à faire. Malheureusement, dans le back office des emails, il m’affiche une erreur.

Ce n'est pas un reproche et je te remercie de bien avoir voulu m'aider en m'apportant des réponses, mais pour ma part, ça fait beaucoup de modifications à faire, alors qu’une petite modification du fichier email.php permet d'obtenir le même résultat.

Sauf que je l'ai modifié et ça m'affiche une erreur.

 

Je ne vois pas où je dois ajouter ce bout de script dans le fichier email.php ?

Site de la source que tu m'as cité plus haut: https://github.com/PrestaShop/PrestaShop/issues/23396

$message = \Swift_SignedMessage::newInstance();

$privateKey = 'PRIVATE KEY';

$domainName = 'domain.cz'; $selector = '1610567654.domain';

$signer = new Swift_Signers_DKIMSigner($privateKey, $domainName, $selector);

$message->attachSigner($signer);

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour à tous,

J'ai réussi à faire fonctionner la clé DKIM en ajoutant cette partie et rempli les informations dans les champs.

        bool $dkimEnable = false,
        string $dkimKey = '',
        string $dkimDomain = '',
        string $dkimSelector = ''

            /* Create new message and DKIM sign it, if enabled and all data for signature are provided */
            if ($dkimEnable === true
                && !empty($dkimKey)
                && !empty($dkimDomain)
                && !empty($dkimSelector)
            ) {
                $signer = new Swift_Signers_DKIMSigner(
                    $dkimKey,
                    $dkimDomain,
                    $dkimSelector
                );
                $message->attachSigner($signer);
            }

Par contre, en regardant sur le site https://github.com/PrestaShop/PrestaShop/blob/develop/classes/Mail.php, j'aperçois qu'on peut mettre les informations (sélecteur, domaine et la clé privée dans la base de donnée), ce que j'ai fait en créant les champs dans la table "configuration" et rempli chacun des champs avec mes valeurs DKIM.

'PS_MAIL_DKIM_ENABLE',

'PS_MAIL_DKIM_DOMAIN',

'PS_MAIL_DKIM_SELECTOR',

'PS_MAIL_DKIM_KEY',

Dans le fichier mail.php

J'ai ajouté

        $configuration = Configuration::getMultiple(

                'PS_MAIL_DKIM_ENABLE',
                'PS_MAIL_DKIM_DOMAIN',
                'PS_MAIL_DKIM_SELECTOR',
                'PS_MAIL_DKIM_KEY',
 

 

        /* Create new message and DKIM sign it, if enabled and all data for signature are provided */
        if ((bool) $configuration['PS_MAIL_DKIM_ENABLE'] === true
            && !empty($configuration['PS_MAIL_DKIM_DOMAIN'])
            && !empty($configuration['PS_MAIL_DKIM_SELECTOR'])
            && !empty($configuration['PS_MAIL_DKIM_KEY'])
        ) {
            $signer = new Swift_Signers_DKIMSigner(
                $configuration['PS_MAIL_DKIM_KEY'],
                $configuration['PS_MAIL_DKIM_DOMAIN'],
                $configuration['PS_MAIL_DKIM_SELECTOR']
            );
            $message->attachSigner($signer);
        }

Je ne comprends que je n'arrive pas à récupérer ces informations dans la base de données ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...