From 4bce1f93cfe365f30c709cac99661b70dec0efa7 Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Mon, 13 Jul 2020 09:51:23 +0200
Subject: [PATCH] Link hyperkitty to mailman

---
 roles/mailman3/tasks/main.yml                 |  7 ++++--
 .../mailman3/mailman-hyperkitty.cfg.j2        | 22 +++++++++++++++++++
 .../templates/mailman3/mailman-web.py.j2      |  3 ---
 .../templates/mailman3/mailman.cfg.j2         |  5 +++++
 .../nginx/sites-available/mailman3.j2         |  2 +-
 5 files changed, 33 insertions(+), 6 deletions(-)
 create mode 100644 roles/mailman3/templates/mailman3/mailman-hyperkitty.cfg.j2

diff --git a/roles/mailman3/tasks/main.yml b/roles/mailman3/tasks/main.yml
index 3c2ade00..912cfa14 100644
--- a/roles/mailman3/tasks/main.yml
+++ b/roles/mailman3/tasks/main.yml
@@ -22,11 +22,14 @@
 # Test with: psql -U mailman3 -W -d mailman3 -h localhost
 - name: Configure mailman3
   template:
-    src: mailman3/mailman.cfg.j2
-    dest: /etc/mailman3/mailman.cfg
+    src: "mailman3/{{ item }}.j2"
+    dest: "/etc/mailman3/{{ item }}"
     mode: 0640
     owner: root
     group: list
+  loop:
+    - mailman.cfg
+    - mailman-hyperkitty.cfg
   notify: Restart mailman3
 
 # You will need to setup postgres
diff --git a/roles/mailman3/templates/mailman3/mailman-hyperkitty.cfg.j2 b/roles/mailman3/templates/mailman3/mailman-hyperkitty.cfg.j2
new file mode 100644
index 00000000..d965b7e5
--- /dev/null
+++ b/roles/mailman3/templates/mailman3/mailman-hyperkitty.cfg.j2
@@ -0,0 +1,22 @@
+{{ ansible_header | comment }}
+
+# This is the mailman extension configuration file to enable HyperKitty as an
+# archiver. Remember to add the following lines in the mailman.cfg file:
+#
+# [archiver.hyperkitty]
+# class: mailman_hyperkitty.Archiver
+# enable: yes
+# configuration: /etc/mailman3/mailman-hyperkitty.cfg
+#
+
+[general]
+
+# This is your HyperKitty installation, preferably on the localhost. This
+# address will be used by Mailman to forward incoming emails to HyperKitty
+# for archiving. It does not need to be publicly available, in fact it's
+# better if it is not.
+base_url: http://localhost/hyperkitty/
+
+# Shared API key, must be the identical to the value in HyperKitty's
+# settings.
+api_key: {{ mailman3.archiver_key }}
diff --git a/roles/mailman3/templates/mailman3/mailman-web.py.j2 b/roles/mailman3/templates/mailman3/mailman-web.py.j2
index 0152d385..f98e104e 100644
--- a/roles/mailman3/templates/mailman3/mailman-web.py.j2
+++ b/roles/mailman3/templates/mailman3/mailman-web.py.j2
@@ -198,6 +198,3 @@ SOCIALACCOUNT_PROVIDERS = {
 COMPRESS_OFFLINE = True
 
 POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/'
-
-# Use Crans SMTP for Django mails
-EMAIL_HOST = 'smtp.crans.org'
diff --git a/roles/mailman3/templates/mailman3/mailman.cfg.j2 b/roles/mailman3/templates/mailman3/mailman.cfg.j2
index 5b9a5d9f..4dbccacc 100644
--- a/roles/mailman3/templates/mailman3/mailman.cfg.j2
+++ b/roles/mailman3/templates/mailman3/mailman.cfg.j2
@@ -271,3 +271,8 @@ lmtp_port: 8024
 # .cfg, which the file must end with.
 #configuration: python:mailman.config.exim4
 configuration: python:mailman.config.postfix
+
+[archiver.hyperkitty]
+class: mailman_hyperkitty.Archiver
+enable: yes
+configuration: /etc/mailman3/mailman-hyperkitty.cfg
diff --git a/roles/mailman3/templates/nginx/sites-available/mailman3.j2 b/roles/mailman3/templates/nginx/sites-available/mailman3.j2
index c243b591..2141d4da 100644
--- a/roles/mailman3/templates/nginx/sites-available/mailman3.j2
+++ b/roles/mailman3/templates/nginx/sites-available/mailman3.j2
@@ -7,7 +7,7 @@ upstream mailman3 {
 server {
     listen 80;
     listen [::]:80;
-    server_name mailman.crans.org mailman.adm.crans.org;
+    server_name mailman.crans.org mailman.adm.crans.org localhost;
     server_tokens off;
 
     location / {