simonschaufi/laravel-dkim

Laravel package for signing outgoing messages with DKIM.

v3.4.0 2024-03-18 12:37 UTC

This package is auto-updated.

Last update: 2024-04-02 11:06:01 UTC


README

Donate GitHub Sponsors Buy me a coffee GitHub Packagist Downloads Laravel 9/10/11

A Laravel package, that allows signing emails with DKIM.

Installation

composer require simonschaufi/laravel-dkim

In Laravel version before 11, the providers array in config/app.php has an entry with Illuminate\Mail\MailServiceProvider::class. Comment this line out and add your own service provider entry (in the "Package Service Providers" section):

/*
 * Package Service Providers...
 */
SimonSchaufi\LaravelDKIM\DKIMMailServiceProvider::class,

In Laravel 11, add this to your bootstrap/app.php:

->withProviders([
    \SimonSchaufi\LaravelDKIM\DKIMMailServiceProvider::class,
])

The DKIMMailServiceProvider extends the MailServiceProvider and overwrites a method that we need for our own behavior.

After that, you should publish the config file with:

php artisan vendor:publish --provider="SimonSchaufi\LaravelDKIM\DKIMMailServiceProvider" --tag dkim-config

Next we need to create a private and public key pair for signing and verifying the email.

There are many tools available to generate the necessary keys but here is one which is easy to use:

https://tools.socketlabs.com/dkim/generator

Enter your domain and in the "selector" field enter default, or adjust the "selector" in the laravel config file accordingly. Leave the remaining fields as they are.

After you have generated the keys and added the public key to your dns record, here is a tool to validate it:

https://www.mail-tester.com/spf-dkim-check

Finally, store the private key for example in storage/app/dkim/private_key.txt and configure your settings in .env:

DKIM_DOMAIN=example.com

If you placed the private key somewhere else, you need to set the full absolute path in the environment variable or adjust the storage path in the config file.

If you find this package helpful, please consider a donation! Links are on top of this file.