Salut les amis

Je cherche à authentifier mes email envoyés de puis Symfony 4.4
Mais en lisant la doc officiel de symfony, je comprend pas trop comment peux m'y prendre.

https://symfony.com/doc/4.4/mailer.html#signing-messages

Voici un exemple de mon code pour envoyer un mail

    public function sendActivationLink(User $user)
    {
        $url = $this->router->generate(
            'valid_account',
            [
                'id' => $user->getId(),
                'key' => $user->getKey(),
            ],
            UrlGeneratorInterface::ABSOLUTE_URL
        );

        $email = (new TemplatedEmail())
            ->from($this->fromEmail)
            ->to($user->getUsername())
            ->subject('Validez votre compte !')
            ->htmlTemplate('emails/template.html.twig')
            ->context([
                'contact' => [
                    'email'     => $user->getEmail(),
                    'link'      => $ur,
                ]
            ]);
        $this->sender->send($email);
    }

Quelqu'un sait comment je dois m'y prendre ?

2 réponses


Salut,
Si tu veux mettre en place une SPF, il faut le faire directement dans la zone DNS de ton nom de domaine.
Tu vas pouvoir indiquer les adresse IP légitime pour un domaine d'expedition.

Ensuite, tu peux regarder, par exemple, dans GMAIL, la source de ton message reçu pour voir si la SPF est correctement configuré.

Le lien que tu envois est plutôt pour DKIM je pense. C'est un peu plus compliqué car il faut chiffrer le message.
Tu dois pouvoir confier ce rôle à postfix directement ou à Symfony comme dans ton exemple.
Pour ton exemple, qu'est ce que tu ne comprends pas ?

Devdeb22
Auteur

Merci pour ta réponse, ce que je ne comprend pas c'est :

  • Où est ce que je trouve le fichier certificate.crt pou ensuite avoir son path dans mes fichier ?
  • Et si j'ai bien compris, dans la méthode sign() de la classe SMimeSigner je lui passe l'objet $email de la classe Email et donc c'est bien comme ça qu'il fait le lien entre mon objet $email et l'objet $signer ? C'est bien ça ?

Et mon cas spécifique je doit déclarer l'objet $signer et lui passer en argument l'objet $email en avant d'appliquer à l'objet $sender la méthode send(), dans laquelle je lui passe en argument l'objet $signedEmail c'est bien ça ?

$signer = new SMimeSigner('/path/to/certificate.crt', '/path/to/certificate-private-key.key');
// if the private key has a passphrase, pass it as the third argument
// new SMimeSigner('/path/to/certificate.crt', '/path/to/certificate-private-key.key', 'the-passphrase');

$signedEmail = $signer->sign($email);
// now use the Mailer component to send this $signedEmail instead of the original email