diff --git a/postfix/tasks/dkim.yml b/postfix/tasks/dkim.yml new file mode 100644 index 0000000000000000000000000000000000000000..50f2fba933c44a2d17cdcd823d55aa5a6a4db827 --- /dev/null +++ b/postfix/tasks/dkim.yml @@ -0,0 +1,55 @@ +--- + +- name: ensure we have opendkim + apt: + name: + - opendkim + - opendkim-tools + state: present + + +- name: ensure we have keys for any domain + command: + cmd: "opendkim-genkey --directory=/etc/dkimkeys --domain={{ item }} --selector={{ item }}-{{ dkim_selector }} --nosubdomains" + creates: + - "/etc/dkimkeys/{{ item }}-{{ dkim_selector }}.private" + - "/etc/dkimkeys/{{ item }}-{{ dkim_selector }}.txt" + become: yes + become_user: opendkim + loop: "{{ postfix_domains + postfix_virtual_domains }}" + + +- name: ensure we have a folder for systemd overrides + file: + state: directory + path: "/etc/systemd/system/opendkim.service.d/" + mode: '0755' + owner: root + group: root + +- name: ensure we run the service without root + copy: + src: "opendkim-systemd-service-override.conf" + dest: "/etc/systemd/system/opendkim.service.d/override.conf" + + +- name: ensure we have our config + template: + src: "opendkim.conf.j2" + dest: "/etc/opendkim.conf" + owner: root + group: root + mode: '0644' + + +- name: ensure we have the key table + template: + src: "opendkim-{{ item }}.j2" + dest: "/etc/dkimkeys/{{ item }}" + owner: root + group: root + mode: '0644' + loop: + - "keytable" + - "signingtable" + - "trustedhosts" diff --git a/postfix/templates/opendkim.conf.j2 b/postfix/templates/opendkim.conf.j2 new file mode 100644 index 0000000000000000000000000000000000000000..4d53e4bf3ad3792ff22a88ba6f56d30d7957f64e --- /dev/null +++ b/postfix/templates/opendkim.conf.j2 @@ -0,0 +1,52 @@ +# This is a basic configuration for signing and verifying. It can easily be +# adapted to suit a basic installation. See opendkim.conf(5) and +# /usr/share/doc/opendkim/examples/opendkim.conf.sample for complete +# documentation of available configuration parameters. + +Syslog yes +SyslogSuccess yes +#LogWhy no + +# Common signing and verification parameters. In Debian, the "From" header is +# oversigned, because it is often the identity key used by reputation systems +# and thus somewhat security sensitive. +Canonicalization relaxed/simple +#Mode sv +#SubDomains no +OversignHeaders From + + +# In Debian, opendkim runs as user "opendkim". A umask of 007 is required when +# using a local socket with MTAs that access the socket as a non-privileged +# user (for example, Postfix). You may need to add user "postfix" to group +# "opendkim" in that case. +UserID opendkim +UMask 007 + +# Socket for the MTA connection (required). If the MTA is inside a chroot jail, +# it must be ensured that the socket is accessible. In Debian, Postfix runs in +# a chroot in /var/spool/postfix, therefore a Unix socket would have to be +# configured as shown on the last line below. +Socket local:/run/opendkim/opendkim.sock +#Socket inet:8891@localhost +#Socket inet:8891 +#Socket local:/var/spool/postfix/opendkim/opendkim.sock + +PidFile /run/opendkim/opendkim.pid + +# Hosts for which to sign rather than verify, default is 127.0.0.1. See the +# OPERATION section of opendkim(8) for more information. +#InternalHosts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 + +# The trust anchor enables DNSSEC. In Debian, the trust anchor file is provided +# by the package dns-root-data. +TrustAnchorFile /usr/share/dns/root.key +#Nameservers 127.0.0.1 + + +# Specify the list of keys +KeyTable file:/etc/dkimkeys/keytable +# Match keys and domains. To use regular expressions in the file, use refile: instead of file: +SigningTable refile:/etc/dkimkeys/signingtable +# Match a list of hosts whose messages will be signed. By default, only localhost is considered as internal host. +InternalHosts refile:/etc/dkimkeys/trustedhosts