simonschaufi / laravel-dkim
Laravel package for signing outgoing messages with DKIM.
Fund package maintenance!
simonschaufi
www.paypal.me/simonschaufi/10
Installs: 86 513
Dependents: 0
Suggesters: 0
Security: 0
Stars: 26
Watchers: 6
Forks: 9
Open Issues: 1
Requires
- illuminate/config: ^9.0 || ^10.0 || ^11.0
- illuminate/contracts: ^9.0 || ^10.0 || ^11.0
- illuminate/mail: ^9.0 || ^10.0 || ^11.0
README
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.