Skip to content

Commit 0cd2af8

Browse files
committed
Enable DKIM for messages submitted from localhost for openrailwaymap.org
1 parent ee03e3a commit 0cd2af8

3 files changed

Lines changed: 140 additions & 9 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# This is a basic configuration that can easily be adapted to suit a standard
2+
# installation. For more advanced options, see opendkim.conf(5) and/or
3+
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
4+
5+
# Log to syslog
6+
Syslog yes
7+
LogResults yes
8+
LogWhy yes
9+
SyslogSuccess yes
10+
# Required to use local socket with MTAs that access the socket as a non-
11+
# privileged user (e.g. Postfix)
12+
UMask 007
13+
14+
# Commonly-used options; the commented-out versions show the defaults.
15+
Canonicalization relaxed/relaxed #simple
16+
Mode s
17+
18+
# Always oversign From (sign using actual From and a null From to prevent
19+
# malicious signatures header fields (From and/or others) between the signer
20+
# and the verifier. From is oversigned by default in the Debian pacakge
21+
# because it is often the identity key used by reputation systems and thus
22+
# somewhat security sensitive.
23+
OversignHeaders From
24+
25+
# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures
26+
# (ATPS) (experimental)
27+
28+
#ATPSDomains example.com
29+
30+
KeyTable /etc/opendkim/keytable
31+
SigningTable refile:/etc/opendkim/signingtable
32+
33+
Socket local:/var/spool/postfix/opendkim/opendkim.sock
34+
PidFile /var/run/opendkim/opendkim.pid
35+
UserID opendkim

ansible/roles/mail/tasks/main.yml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,103 @@
122122
- systemctl restart amavis
123123
- systemctl restart amavisd-milter
124124

125+
- name: Install OpenDKIM
126+
block:
127+
- name: Install OpenDKIM from APT
128+
apt:
129+
name: [opendkim, opendkim-tools]
130+
131+
- name: Write /etc/opendkim.conf
132+
copy:
133+
src: opendkim.conf
134+
dest: /etc/opendkim.conf
135+
owner: root
136+
group: root
137+
mode: 0644
138+
notify:
139+
- systemctl restart opendkim
140+
141+
- name: Ensure correct permissions on /etc/opendkim
142+
file:
143+
state: directory
144+
path: /etc/opendkim
145+
owner: root
146+
group: root
147+
mode: 0755
148+
149+
- name: Ensure correct permissions on /etc/opendkim/keys
150+
file:
151+
state: directory
152+
path: /etc/opendkim/keys
153+
owner: root
154+
group: opendkim
155+
mode: 0750
156+
notify:
157+
- systemctl restart opendkim
158+
159+
- name: Create OpenDKIM key
160+
shell:
161+
chdir: /etc/opendkim
162+
cmd: 'opendkim-genkey --selector=2020 --bits=2048 --directory=keys'
163+
creates: /etc/opendkim/keys/2020.private
164+
register: opendkim_key_creation
165+
166+
- name: Make OpenDKIM key readable for user opendkim
167+
when: opendkim_key_creation.changed
168+
file:
169+
path: '/etc/opendkim/{{ item }}'
170+
owner: opendkim
171+
group: root
172+
mode: 0600
173+
loop:
174+
- '2020.private'
175+
- '2020.txt'
176+
177+
- name: Print public OpenDKIM key
178+
when: opendkim_key_creation.changed
179+
block:
180+
- slurp:
181+
src: /etc/opendkim/keys/2020.txt
182+
register: opendkim_public_key
183+
- debug:
184+
msg: 'Please publish the following DNS entry with your public DKIM key:\n{{ opendkim.public_key }}'
185+
186+
- name: Write /etc/opendkim/keytable
187+
copy:
188+
dest: /etc/opendkim/keytable
189+
owner: root
190+
group: root
191+
mode: 0644
192+
content: |
193+
default %:2020:/etc/opendkim/keys/2020.private
194+
notify:
195+
- systemctl restart opendkim
196+
197+
- name: Write /etc/opendkim/signingtable
198+
copy:
199+
dest: /etc/opendkim/signingtable
200+
owner: root
201+
group: root
202+
mode: 0644
203+
content: |
204+
*@openrailwaymap.org default
205+
notify:
206+
- systemctl restart opendkim
207+
208+
- name: Create /var/spool/postfix/opendkim
209+
file:
210+
path: /var/spool/postfix/opendkim
211+
owner: opendkim
212+
group: opendkim
213+
mode: 0755
214+
state: directory
215+
216+
- name: Add Postfix to opendkim group
217+
user:
218+
append: yes
219+
name: postfix
220+
groups: opendkim
221+
125222
- name: Install Spamassassin
126223
apt:
127224
name: spamassassin
@@ -278,3 +375,7 @@
278375
systemd:
279376
name: amavisd-milter
280377
state: restarted
378+
- name: systemctl restart opendkim
379+
systemd:
380+
name: opendkim
381+
state: restarted

ansible/roles/mail/tasks/templates/main.cf

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,12 @@ recipient_delimiter = +
5151
inet_interfaces = all
5252
inet_protocols = all
5353

54-
# Filter mail with Amavis (via amavisd-milter)
54+
# Filter mail with Amavis (via amavisd-milter), sign emails submitted from localhost with correct domain
5555
milter_default_action = accept
5656
milter_protocol = 2
57-
smtpd_milters = unix:amavis/amavis.sock
58-
#smtpd_milters = unix:amavis/amavis.sock,
59-
# unix:opendkim/opendkim.sock
60-
#non_smtpd_milters = unix:opendkim/opendkim.sock
61-
62-
# add OpenDKIM signatures
63-
milter_default_action = accept
64-
#non_smtpd_milters = unix:opendkim/opendkim.sock
57+
smtpd_milters = unix:amavis/amavis.sock,
58+
unix:opendkim/opendkim.sock
59+
non_smtpd_milters = unix:opendkim/opendkim.sock
6560

6661
# Restriction controlling access to the Postfix SMTP server
6762
# Their purpose is to reject clients where reverse DNS fails

0 commit comments

Comments
 (0)