Difference between revisions of "DKIM"
From Leaky
(Created page with "A simple script to generate the DKIM keys for a domain. #!/bin/bash DOMAIN=$1 if [ ! -d /etc/exim/dkim ] then echo "No DKIM directory /etc/exim/dkim" exit...") |
(No difference)
|
Revision as of 21:50, 5 March 2024
A simple script to generate the DKIM keys for a domain.
#!/bin/bash DOMAIN=$1 if [ ! -d /etc/exim/dkim ] then echo "No DKIM directory /etc/exim/dkim" exit fi cd /etc/exim/dkim if [ ! -f $DOMAIN.key ] then echo "Generating private key for $DOMAIN" openssl genrsa 4096 > $DOMAIN.key else echo "Private key for $DOMAIN already exists" fi if [ ! -f $DOMAIN.pub ] then echo "Generating public key for $DOMAIN" openssl rsa -in $DOMAIN.key -pubout > $DOMAIN.pub else echo "Public key for $DOMAIN already exists" fi chown root:exim $DOMAIN.key $DOMAIN.pub chmod 0640 $DOMAIN.key $DOMAIN.pub echo "TXT record required for $DOMAIN zonefile" echo "" ./pub2txt.pl $DOMAIN.pub
and the required pub2txt.pl converts a public key into a BIND record for your zone file.
#!/usr/bin/env perl use strict; use warnings; my $f = shift @ARGV || die "Need filename"; my $key = "v=DKIM1; t=y; k=rsa; p="; open(PUB, "<", $f) or die "Can't open file $f"; while (my $l = <PUB>) { chomp $l; next if ($l =~ /^----/); $key .= $l; } close(PUB); print "s6122._domainkey\tIN\tTXT\t(\n"; print join "\n", map { "\t\"$_\"" } $key =~ m[.{1,64}]g; print "\n\t)\n";
After creating the DNS record and key files, simply ensure that the domain is configured for generating DKIM signatures - in my config, this involves adding a line to `/etc/exim/dkim/sender_domains` such as:
*@domain.com: domain.com
The first field specifies which From addresses need to be signed and the value is the name of the key file to use in /etc/exim/dkim/