I have been pulling my hair with getting OpenDKIM to work on a Debian machine with Postfix. I have been changing my KeyTable, SigningTable, ExternalIgnoreList, InternalHosts files and references like a madman.
I have kept getting errors like this in /var/log/mail.log
[code]Feb 28 11:21:43 06-135-D2 opendkim[27826]: 5EADD532313: dkim_eom(): resource unavailable: d2i_PrivateKey_bio() failed
Feb 28 11:24:00 06-135-D2 opendkim[27955]: D2560532313 error loading key `default._domainkey.mydomain.com'[/code]
Unfortunately OpenDKIM does not give more info than this and Googling did not provide many hints mor than possibly being a directory access problem. I checked directory and file access and realized that the key file was only readable by root.
[code]-rw——- 1 root root 891 Feb 28 00:14 default.private[/code]
Testing Permissions
(you can skip straight to Solution below)
[Edit: Renamed this part from “Solution” to “Testing Permissions” and added a better Solution below. Thanks to Andreas Schultze on the OpenDKIM mailing list for getting me on the right track to finding the correct solution]
As I used opendkim-genkey to generate my key I would have thought permissions would be set ok from the start but I anyway tried doing chmod 644 on the key file
[code]chmod 644 default.private[/code]
[code]-rw-r–r– 1 root root 891 Feb 28 00:14 default.private[/code]
And finally – success!
In /var/log/mail.log:
[code]Feb 28 11:30:28 06-135-D2 opendkim[27955]: 5E811532313 "DKIM-Signature" header added[/code]
To me it seems a little unsecure to do chmod 644 on the file as this means anyone with access to the system can read the private key. In my case I consider my system secure as it is only used for SMTP/Postfix so I am happy that is working.
As I am all new to Debian, OpenDKIM and Postfix (The last time I touched Unix was when I worked with IBM’s AIX on their RS/6000 systems in the early 90s…) so I would be happy to hear any thoughts on this.
Solution
To set permissions to allow OpenDKIM but no unauthorized users to access the private key, change owner of the private key file to user and group opendkim with the following command:
[code]chown opendkim:opendkim default.private[/code]
(To check what user opendkim is running as, check the running processes once you have started opendkim: ps -f -A
This command shows what groups the user opendkim belongs to: group opendkim)
Maybe this is fixed to set file permissions correctly in a later version of opendkim-genkey, I am running the old 2.0.1 apt-get package that is currently available for Debian.
Thanks for writing this up, saved me some time.
Hi,
Maybe you can help:
I’m getting this error {key_folder} is placeholder, obviously :
can’t load key from /etc/opendkim/keys/{key_folder}/default
even though all the permissions at /etc/opendkim and the keys folder are owned by opendkim:opendkim and is set to 0700
Any ideas?
Thank you. After 2 hours of digging, your solution was the key!
Damn, thanks a lot.
Marvelous, what a website it is! This website provides useful information to us, keep it up.
It all came down to that wonderful command…thank you!! I was starting to lose my mind verifying and resetting services.
Cheers for sharing this info! 9 years later and this article was still relevant to my problem.