Move and adapt opendkim configuration to own role
This commit is contained in:
parent
c488006433
commit
ce1745cd29
11 changed files with 256 additions and 1 deletions
14
README.md
14
README.md
|
@ -1 +1,13 @@
|
|||
## ansible-role-opendkim_postfix
|
||||
## ansible-role-XXXX
|
||||
|
||||
Work in progress...
|
||||
|
||||
# Requirements
|
||||
|
||||
# Installation
|
||||
|
||||
# Usage
|
||||
|
||||
# Credits
|
||||
|
||||
Antonio J. Delgado 2022 https://gitlab.com/antoniodelgado
|
||||
|
|
2
defaults/main.yml
Normal file
2
defaults/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
create_ovh_dns_entry: true
|
10
handlers/main.yml
Normal file
10
handlers/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Reload postfix
|
||||
service:
|
||||
name: postfix
|
||||
state: restarted
|
||||
|
||||
- name: Restart OpenDKIM service
|
||||
service:
|
||||
name: opendkim
|
||||
state: restart
|
22
meta/main.yml
Normal file
22
meta/main.yml
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
galaxy_info:
|
||||
author: Antonio J. Delgado (ajdelgado)
|
||||
description: TODO - Description
|
||||
|
||||
# issue_tracker_url: https://github.com/uoi-io/ansible-galera/issues
|
||||
|
||||
license: GPLv3
|
||||
|
||||
min_ansible_version: "2.0"
|
||||
|
||||
github_branch: master
|
||||
|
||||
platforms:
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- focal
|
||||
- jammy
|
||||
|
||||
galaxy_tags: []# TODO
|
||||
|
||||
dependencies: []
|
151
tasks/configure.yml
Normal file
151
tasks/configure.yml
Normal file
|
@ -0,0 +1,151 @@
|
|||
---
|
||||
- name: Find opendkim-genkey command
|
||||
shell: which opendkim-genkey | true
|
||||
register: which_result
|
||||
|
||||
- name: Find opendkim-genkey command using whereis
|
||||
shell: "whereis opendkim-genkey | awk 'BEGIN {FS=\": \"} {print($2)}'"
|
||||
register: which_result
|
||||
when: which_result.stdout == ""
|
||||
|
||||
- name: Fail if opendkim-genkey is not found
|
||||
fail:
|
||||
when: which_result.stdout == ""
|
||||
|
||||
- name: Set command for opendkim-genkey
|
||||
set_fact:
|
||||
opendkim_genkey_cmd: "{{ which_result.stdout }}"
|
||||
|
||||
- name: Generate DKIM keys
|
||||
shell: "{{opendkim_genkey_cmd }} -D /etc/dkimkeys --domain={{ item }} --selector={{ item }}"
|
||||
args:
|
||||
creates: "/etc/dkimkeys/{{ item }}.txt"
|
||||
loop: "{{ mail_domains }}"
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure OpenDKIM mode to sv
|
||||
lineinfile:
|
||||
path: /etc/opendkim.conf
|
||||
regexp: '^Mode '
|
||||
line: 'Mode sv'
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure OpenDKIM Socket
|
||||
lineinfile:
|
||||
path: /etc/opendkim.conf
|
||||
regexp: '^Socket '
|
||||
line: 'Socket inet:8891@127.0.0.1'
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure OpenDKIM domains
|
||||
lineinfile:
|
||||
path: /etc/opendkim.conf
|
||||
regexp: '^Domain '
|
||||
line: "Domain {{ domains|join(',') }}"
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure OpenDKIM key file
|
||||
lineinfile:
|
||||
path: /etc/opendkim.conf
|
||||
regexp: '^KeyFile '
|
||||
line: "KeyFile /etc/dkimkeys/{{ domains[0] }}.private"
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure OpenDKIM selector
|
||||
lineinfile:
|
||||
path: /etc/opendkim.conf
|
||||
regexp: '^Selector '
|
||||
line: 'Selector ""'
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Enable opendkim service
|
||||
service:
|
||||
name: opendkim
|
||||
state: restarted
|
||||
enabled: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Ensure opendkim folder exists
|
||||
file:
|
||||
path: /etc/opendkim
|
||||
state: directory
|
||||
owner: root
|
||||
group: opendkim
|
||||
mode: 0770
|
||||
|
||||
- name: Configure keytable for OpenDKIM
|
||||
template:
|
||||
src: templates/keytable.j2
|
||||
dest: /etc/opendkim/keytable
|
||||
owner: root
|
||||
group: opendkim
|
||||
mode: '0550'
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure signingtable for OpenDKIM
|
||||
template:
|
||||
src: templates/signingtable.j2
|
||||
dest: /etc/opendkim/signingtable
|
||||
owner: root
|
||||
group: opendkim
|
||||
mode: '0550'
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure TrustedHosts for OpenDKIM
|
||||
template:
|
||||
src: templates/TrustedHosts.j2
|
||||
dest: /etc/opendkim/TrustedHosts
|
||||
owner: root
|
||||
group: opendkim
|
||||
mode: '0550'
|
||||
backup: true
|
||||
notify: Restart OpenDKIM service
|
||||
|
||||
- name: Configure milter default action
|
||||
lineinfile:
|
||||
path: /etc/postfix/main.cf
|
||||
regexp: '^milter_default_action '
|
||||
line: 'milter_default_action = accept'
|
||||
backup: yes
|
||||
notify:
|
||||
- Reload postfix
|
||||
|
||||
- name: Configure milter protocol
|
||||
lineinfile:
|
||||
path: /etc/postfix/main.cf
|
||||
regexp: '^milter_protocol '
|
||||
line: 'milter_protocol = 2'
|
||||
backup: yes
|
||||
notify:
|
||||
- Reload postfix
|
||||
|
||||
- name: Configure OpenDKIM smtpd milters
|
||||
lineinfile:
|
||||
path: /etc/postfix/main.cf
|
||||
regexp: '^smtpd_milters '
|
||||
line: 'smtpd_milters = inet:127.0.0.1:8891'
|
||||
backup: yes
|
||||
notify:
|
||||
- Reload postfix
|
||||
|
||||
- name: Configure OpenDKIM non smtpd milters
|
||||
lineinfile:
|
||||
path: /etc/postfix/main.cf
|
||||
regexp: '^non_smtpd_milters '
|
||||
line: 'non_smtpd_milters = inet:127.0.0.1:8891'
|
||||
backup: yes
|
||||
notify:
|
||||
- Reload postfix
|
||||
|
||||
- name: Ensure opendkim service is started and enabled
|
||||
service:
|
||||
name: opendkim
|
||||
state: started
|
||||
enabled: true
|
31
tasks/configure_ovh.yml
Normal file
31
tasks/configure_ovh.yml
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
- name: Get DKIM key
|
||||
slurp:
|
||||
src: "/etc/dkimkeys/{{ item }}.txt"
|
||||
register: key_file
|
||||
loop: "{{ mail_domains }}"
|
||||
|
||||
- name: Show key files
|
||||
debug:
|
||||
var: key_file
|
||||
|
||||
- name: Extract key from file content
|
||||
set_fact:
|
||||
dkim_key: "{{ key_file['content'] | b64decode | regex_replace('^.*\"(.*)\"$', '\\1') }}"
|
||||
|
||||
- name: Show record content
|
||||
debug:
|
||||
var: dkim_key
|
||||
|
||||
- name: Add DKIM key record for domain
|
||||
synthesio.ovh.domain:
|
||||
domain: "{{ item }}"
|
||||
value: "{{ dkim_key }}"
|
||||
record_type: "TXT"
|
||||
name: '_domainkey'
|
||||
record_ttl: 10
|
||||
append: true
|
||||
loop: "{{ mail_domains }}"
|
||||
when:
|
||||
- "'.local' not in item"
|
||||
- item | regex_findall('\.') | length < 2
|
6
tasks/install.yml
Normal file
6
tasks/install.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
- name: Ensure OpenDKIM software is present
|
||||
package:
|
||||
name:
|
||||
- opendkim
|
||||
- opendkim-tools
|
10
tasks/main.yml
Normal file
10
tasks/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Ensure installation of OpenDKIM
|
||||
include_tasks: install.yml
|
||||
|
||||
- name: Ensure configuration of OpenDKIM
|
||||
include_tasks: configure.yml
|
||||
|
||||
- name: Ensure configuration of OVH record
|
||||
include_tasks: configure_ovh.yml
|
||||
when: create_ovh_dns_entry
|
5
templates/TrustedHosts.j2
Normal file
5
templates/TrustedHosts.j2
Normal file
|
@ -0,0 +1,5 @@
|
|||
127.0.0.1
|
||||
::1
|
||||
{% for ip in mail_own_networks %}
|
||||
{{ ip }}
|
||||
{% endfor %}
|
3
templates/keytable.j2
Normal file
3
templates/keytable.j2
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% for domain in mail_domains %}
|
||||
mail._domainkey.{{ domain }} {{ domain }}:mail:/etc/opendkim/{{ domain }}.private
|
||||
{% endfor %}
|
3
templates/signingtable.j2
Normal file
3
templates/signingtable.j2
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% for domain in mail_domains %}
|
||||
*@{{ domain }} mail._domainkey.{{ domain }}
|
||||
{% endfor %}
|
Loading…
Reference in a new issue