diff options
-rw-r--r-- | ansible/roles/opendkim/handlers/main.yml | 5 | ||||
-rw-r--r-- | ansible/roles/opendkim/tasks/main.yml | 95 | ||||
-rw-r--r-- | ansible/roles/opendkim/templates/opendkim.conf.j2 | 27 | ||||
-rw-r--r-- | ansible/roles/opendkim/vars/main.yml | 6 |
4 files changed, 133 insertions, 0 deletions
diff --git a/ansible/roles/opendkim/handlers/main.yml b/ansible/roles/opendkim/handlers/main.yml new file mode 100644 index 0000000..b68de05 --- /dev/null +++ b/ansible/roles/opendkim/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Reload OpenDKIM + service: + name: opendkim + state: reloaded diff --git a/ansible/roles/opendkim/tasks/main.yml b/ansible/roles/opendkim/tasks/main.yml new file mode 100644 index 0000000..640f0d8 --- /dev/null +++ b/ansible/roles/opendkim/tasks/main.yml @@ -0,0 +1,95 @@ +--- +- name: Install OpenDKIM + package: + name: + - opendkim + - opendkim-tools + state: present + tags: + - role::opendkim + +- name: Re-own OpenDKIM key directory + file: + state: directory + owner: opendkim + group: opendkim + mode: "0700" + path: "/etc/dkimkeys" + tags: + - role::opendkim + +- name: Create key directories + file: + state: directory + owner: opendkim + group: opendkim + mode: "0700" + path: "/etc/dkimkeys/{{ item }}" + with_items: + - "{{ opendkim_domains }}" + tags: + - role::opendkim + +- name: Generate OpenDKIM keys + become: true + become_user: opendkim + command: | + opendkim-genkey -D /etc/dkimkeys/{{ item }} -d {{ item }} -s {{ opendkim_selector }} + with_items: + - "{{ opendkim_domains }}" + args: + creates: /etc/dkimkeys/{{ item }}/{{ opendkim_selector }}.private + tags: + - role::opendkim + +- name: Template OpenDKIM configuration file + template: + src: opendkim.conf.j2 + dest: /etc/opendkim.conf + mode: "0644" + owner: opendkim + group: opendkim + tags: + - role::opendkim + notify: + - Reload OpenDKIM + +- name: Create OpenDKIM key & signing table directory + file: + state: directory + owner: opendkim + group: opendkim + mode: "0755" + path: "/etc/opendkim" + tags: + - role::opendkim + +- name: Create OpenDKIM KeyTable + copy: + content: | + {% for item in opendkim_domains %} + {{ item }} {{ item }}:{{ opendkim_selector }}:/etc/dkimkeys/{{ item }}/{{ opendkim_selector}}.private + {% endfor %} + dest: /etc/opendkim/keytable + owner: opendkim + group: opendkim + mode: "0644" + tags: + - role::opendkim + notify: + - Reload OpenDKIM + +- name: Create OpenDKIM SigningTable + copy: + content: | + {% for item in opendkim_domains %} + *@{{ item }} {{ item }} + {% endfor %} + dest: /etc/opendkim/signingtable + owner: opendkim + group: opendkim + mode: "0644" + tags: + - role::opendkim + notify: + - Reload OpenDKIM diff --git a/ansible/roles/opendkim/templates/opendkim.conf.j2 b/ansible/roles/opendkim/templates/opendkim.conf.j2 new file mode 100644 index 0000000..cb42d76 --- /dev/null +++ b/ansible/roles/opendkim/templates/opendkim.conf.j2 @@ -0,0 +1,27 @@ +# Ansible Managed + +# 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 + +# Configure which keys reference which private key on the filesystem and which +# key we use for each domain +KeyTable /etc/opendkim/keytable +SigningTable refile:/etc/opendkim/signingtable + +# 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 inet:8891@localhost + +PidFile /run/opendkim/opendkim.pid + +TrustAnchorFile /usr/share/dns/root.key diff --git a/ansible/roles/opendkim/vars/main.yml b/ansible/roles/opendkim/vars/main.yml new file mode 100644 index 0000000..34aa51c --- /dev/null +++ b/ansible/roles/opendkim/vars/main.yml @@ -0,0 +1,6 @@ +--- +opendkim_domains: + - pydis.wtf + - pydis.com + - pythondiscord.com +opendkim_selector: lovelace |