While adding FreeBSD support to the type I noticed various issues:
- We were making sure that the KeyTable and SigningTable were created in
__opendkim_genkey, but that was being done with the default cdist permissions
(0400) which could result in issues when reloading the service after privilege
drop.
This is addressed by checking that it exists/creating it in __opendkim (just
once, not once per __opendkim_genkey call) with laxer permissions (0444).
- In __opendkim, the service was being started after the config file was
installed. This is insufficient as OpenDKIM will refuse to start with the
generated config if either SigningTable or KeyTable do not exist yet.
- __opendkim_genkey had the implicit assumption that the --directory parameter
always ended in a slash. This was not documented and error-prone; we are now
a bit laxer and add the trailing slash if it is missing.
- __opendkim_genkey was not changing permissions for the resulting .txt file.
This was not critical for it to function, but it was inconsistent.
- As documented in #17, __opendkim allows for a --userid parameter that might
cause issues with keys generated by __opendkim_genkey.
This issue has not been addressed yet, but I recommend deprecating the
--userid parameter.