From d00b7a636e946285ee07c3bc36429d969ca4fef8 Mon Sep 17 00:00:00 2001
From: Florian Pritz <bluewind@xinu.at>
Date: Sun, 18 Sep 2016 17:35:16 +0200
Subject: [PATCH] Add spampd to apollo

Signed-off-by: Florian Pritz <bluewind@xinu.at>
---
 playbooks/apollo.yml                 |  1 +
 roles/spampd/files/sa-update.service |  6 ++++
 roles/spampd/files/sa-update.sh      |  7 ++++
 roles/spampd/files/sa-update.timer   |  8 +++++
 roles/spampd/files/update-channels   |  3 ++
 roles/spampd/files/update-gpgkeys    |  5 +++
 roles/spampd/files/yerp.gpg.key      | 41 ++++++++++++++++++++++
 roles/spampd/files/zmi.gpg.key       | 52 ++++++++++++++++++++++++++++
 roles/spampd/handlers/main.yml       |  4 +++
 roles/spampd/tasks/main.yml          | 38 ++++++++++++++++++++
 10 files changed, 165 insertions(+)
 create mode 100644 roles/spampd/files/sa-update.service
 create mode 100644 roles/spampd/files/sa-update.sh
 create mode 100644 roles/spampd/files/sa-update.timer
 create mode 100644 roles/spampd/files/update-channels
 create mode 100644 roles/spampd/files/update-gpgkeys
 create mode 100644 roles/spampd/files/yerp.gpg.key
 create mode 100644 roles/spampd/files/zmi.gpg.key
 create mode 100644 roles/spampd/handlers/main.yml
 create mode 100644 roles/spampd/tasks/main.yml

diff --git a/playbooks/apollo.yml b/playbooks/apollo.yml
index 41605598b..da7ef9986 100644
--- a/playbooks/apollo.yml
+++ b/playbooks/apollo.yml
@@ -11,6 +11,7 @@
     - { role: borg-client, backup_host: "borg@vostok.archlinux.org", backup_dir: "/backup/apollo", postgres_backup_dir: "/var/lib/postgres/backup", tags: ["borg"] }
     - { role: nginx, letsencrypt_validation_dir: "/var/lib/letsencrypt", tags: ["nginx"] }
     - { role: planet, planet_domain: "planet.archlinux.org", planet_dir: "/srv/http/planet", tags: ["planet"] }
+    - { role: spampd, tags: ["mail", "spampd"] }
     - { role: postfix, postfix_server: false, tags: ["mail", "postfix"] }
     - { role: opendkim, dkim_selector: apollo, tags: ['mail', "opendkim"] }
     - { role: dovecot, tags: ['mail', "dovecot"] }
diff --git a/roles/spampd/files/sa-update.service b/roles/spampd/files/sa-update.service
new file mode 100644
index 000000000..b18b3dad8
--- /dev/null
+++ b/roles/spampd/files/sa-update.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=sa-update
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/sa-update.sh
diff --git a/roles/spampd/files/sa-update.sh b/roles/spampd/files/sa-update.sh
new file mode 100644
index 000000000..0acc2ac4a
--- /dev/null
+++ b/roles/spampd/files/sa-update.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+set -e
+
+/usr/bin/vendor_perl/sa-update --channelfile /etc/mail/spamassassin/update-channels --gpgkeyfile /etc/mail/spamassassin/update-gpgkeys || exit 0
+/usr/bin/vendor_perl/sa-compile --quiet
+systemctl restart spampd
diff --git a/roles/spampd/files/sa-update.timer b/roles/spampd/files/sa-update.timer
new file mode 100644
index 000000000..a558043eb
--- /dev/null
+++ b/roles/spampd/files/sa-update.timer
@@ -0,0 +1,8 @@
+[Unit]
+Description=sa-update
+
+[Timer]
+OnCalendar=*-*-* 00:05:00
+
+[Install]
+WantedBy=timers.target
diff --git a/roles/spampd/files/update-channels b/roles/spampd/files/update-channels
new file mode 100644
index 000000000..0a142a074
--- /dev/null
+++ b/roles/spampd/files/update-channels
@@ -0,0 +1,3 @@
+updates.spamassassin.org
+sought.rules.yerp.org
+sa.zmi.at
diff --git a/roles/spampd/files/update-gpgkeys b/roles/spampd/files/update-gpgkeys
new file mode 100644
index 000000000..c5e022654
--- /dev/null
+++ b/roles/spampd/files/update-gpgkeys
@@ -0,0 +1,5 @@
+# sa.zmi.at
+40F74481
+
+# sought.rules.yerp.org
+6C6191E3
diff --git a/roles/spampd/files/yerp.gpg.key b/roles/spampd/files/yerp.gpg.key
new file mode 100644
index 000000000..176a22f1f
--- /dev/null
+++ b/roles/spampd/files/yerp.gpg.key
@@ -0,0 +1,41 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.1 (GNU/Linux)
+
+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
+=nK43
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/roles/spampd/files/zmi.gpg.key b/roles/spampd/files/zmi.gpg.key
new file mode 100644
index 000000000..7d7261a38
--- /dev/null
+++ b/roles/spampd/files/zmi.gpg.key
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.12 (GNU/Linux)
+
+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
+cbXphKHfpKOu3R5vADTEhpF06HS7dfg=
+=bBTm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/roles/spampd/handlers/main.yml b/roles/spampd/handlers/main.yml
new file mode 100644
index 000000000..e2abcd67c
--- /dev/null
+++ b/roles/spampd/handlers/main.yml
@@ -0,0 +1,4 @@
+---
+
+- name: systemd daemon reload
+  command: systemctl daemon-reload
diff --git a/roles/spampd/tasks/main.yml b/roles/spampd/tasks/main.yml
new file mode 100644
index 000000000..ba9c1891e
--- /dev/null
+++ b/roles/spampd/tasks/main.yml
@@ -0,0 +1,38 @@
+---
+
+# make and gcc are required for sa-compile
+- name: install spampd and dependencies
+  pacman: name=spampd,make,gcc state=present
+
+- name: install sa-update.sh
+  copy: src=sa-update.sh dest=/usr/local/bin/sa-update.sh owner=root group=root mode=755
+
+- name: install support files
+  copy: src={{ item }} dest=/etc/mail/spamassassin/{{ item }} owner=root group=root mode=644
+  with_items:
+    - update-gpgkeys
+    - update-channels
+    - yerp.gpg.key
+    - zmi.gpg.key
+
+- name: install systemd timers
+  copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=644
+  with_items:
+    - sa-update.timer
+    - sa-update.service
+  notify:
+    - systemd daemon reload
+
+- name: add gpg keys to SA keyring
+  command: /usr/bin/vendor_perl/sa-update --import "/etc/mail/spamassassin/{{item}}"
+  with_items:
+    - yerp.gpg.key
+    - zmi.gpg.key
+
+- name: activate systemd timers
+  service: name={{ item }} enabled=yes state=started
+  with_items:
+    sa-update.timer
+
+- name: start spampd
+  service: name=spampd enabled=yes state=started
-- 
GitLab