summaryrefslogtreecommitdiff
path: root/roles/mail/opendkim/tasks/main.yml
blob: 615b45e09a11cf2fdde461d9afc61e46e06fd594 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
---
- name: install opendkim packages
  apt:
    name:
    - opendkim
    - opendkim-tools
    state: present

- name: create configure sub directory
  file:
    path: /etc/opendkim
    state: directory
    mode: 0700
    owner: opendkim
    group: opendkim

- name: remove annoying sample Socket options
  lineinfile:
    regexp: "^#Socket\\s+"
    state: absent
    dest: /etc/opendkim.conf
  notify: restart opendkim

- name: set opendkim default options
  set_fact:
    opendkim_options_default:
      Mode: "{{ opendkim_sign | ternary('s','') }}{{ opendkim_verify | ternary('v','') }}"
      ReportAddress: "{{ opendkim_admin_mail }}"
      LogWhy: "yes"
    opendkim_options_postfix: {}
    opendkim_options_sign: {}
    opendkim_options_verify: {}

- name: prepare opendkim to be used with chrooted postfix
  when: opendkim_socket_for_postfix
  block:
  - name: set opendkim postfix options
    set_fact:
      opendkim_options_postfix:
        Socket: "local:/var/spool/postfix/opendkim/opendkim.sock"

  - name: create systemd override directory
    file:
      path: /etc/systemd/system/opendkim.service.d
      state: directory

  - name: add systemd service override
    copy:
      content: |
        [Service]
        ExecStartPre=+/usr/bin/install -d /var/spool/postfix/opendkim -o opendkim -g opendkim -m 0750
      dest: /etc/systemd/system/opendkim.service.d/postfix-chroot.conf
    notify: reload systemd

  - name: configure opendkim listen socket for legacy init
    lineinfile:
      dest: /etc/default/opendkim
      regexp: '^SOCKET='
      line: 'SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"'
    notify: restart opendkim

- name: prepare opendkim for signing
  when: opendkim_sign
  block:
  - name: set opendkim sign options
    set_fact:
      opendkim_options_sign:
        InternalHosts: "{{ opendkim_internal_hosts | join(', ') }}"
        KeyTable: "refile:/etc/opendkim/KeyTable"
        SigningTable: "refile:/etc/opendkim/SigningTable"

  - name: generate/install dkim keys
    loop: "{{ opendkim_domains | dict2items }}"
    loop_control:
      loop_var: opendkim_domain
      label: "{{ opendkim_domain.key }}"
    include_tasks: dkim-key.yml

  - name: install KeyTable and SingingTable
    loop:
    - KeyTable
    - SigningTable
    template:
      src: "{{ item }}.j2"
      dest: "/etc/opendkim/{{ item }}"
    notify: restart opendkim

## TODO: implement this
# - name: prepare opendkim for verifying
#   when: opendkim_verify
#   block:
#   - name: set opendkim verify options
#     set_fact:
#       opendkim_options_verify:
#         option: "value"

- name: configure opendkim
  loop: "{{ opendkim_options_default | combine(opendkim_options_postfix) | combine(opendkim_options_sign) | combine(opendkim_options_verify) | dict2items }}"
  loop_control:
    label: "{{ item.key }} = {{ item.value }}"
  lineinfile:
    regexp: "^#?\\s*{{ item.key }}\\s+"
    line: "{{ item.key }}\t\t\t{{ item.value }}"
    dest: /etc/opendkim.conf
  notify: restart opendkim