ansible/roles/mailman3/tasks/main.yml

111 lines
3.2 KiB
YAML

---
- name: Install mailman3
apt:
update_cache: true
name:
- mailman3-full
- python3-ipython # Prettier shell
- python3-pip # CAS
- python3-lxml # CAS
- sassc
install_recommends: false
register: apt_result
retries: 3
until: apt_result is succeeded
- name: Install Crans python modules
pip:
name: "{{ item }}"
loop:
- git+https://gitlab/adm.crans.org/nounous/mailman-crans-theme.git
- git+https://gitlab.adm.crans.org/nounous/allauth-cas-crans.git
# You will need to setup postgres
# sudo -u postgres createuser -P mailman3
# sudo -u postgres createdb -O mailman3 mailman3
- name: Configure mailman3
template:
src: "mailman3/{{ item }}.j2"
dest: "/etc/mailman3/{{ item }}"
mode: 0640
owner: root
group: list
loop:
- mailman.cfg
- mailman-hyperkitty.cfg
notify: Restart mailman3
- name: Apply permissions to the mailman directory
file:
path: /var/lib/mailman3
state: directory
owner: list
group: list
# You will need to setup postgres
# sudo -u postgres createuser -P mailman3web
# sudo -u postgres createdb -O mailman3web mailman3web
- name: Configure mailman3-web
template:
src: mailman3/mailman-web.py.j2
dest: /etc/mailman3/mailman-web.py
mode: 0640
owner: root
group: www-data
notify: Restart mailman3-web
- name: Migrate Django database
django_manage:
command: migrate
project_path: /usr/share/mailman3-web
become: true
become_user: www-data
notify: Restart mailman3-web
- name: Collect static files
django_manage:
command: collectstatic
project_path: /usr/share/mailman3-web
become: true
become_user: www-data
notify: Restart mailman3-web
- name: Compress static files
django_manage:
command: compress
project_path: /usr/share/mailman3-web
become: true
become_user: www-data
notify: Restart mailman3-web
# When notifying moderators daily, add link to moderation page
- name: Patch daily moderation mails
blockinfile:
path: /usr/lib/python3/dist-packages/mailman/commands/cli_notify.py
marker: "{mark}"
marker_begin: ' # XXX This should be a template.'
marker_end: ' msg = OwnerNotification(mlist, subject, text, mlist.administrators)'
block: " text = _(\"\"\"La liste {} a {} requêtes de modération en attente.\n\n{}\n\nVous pouvez gérer ces demandes via votre interface web :\nhttps://{{ mailman3.web_domains[0] }}/postorius/lists/{}/held_messages\n\"\"\").format(mlist.fqdn_listname, count, detail, mlist.fqdn_listname)"
- name: Send owner notifications from listname-bounces@domain
lineinfile:
path: /usr/lib/python3/dist-packages/mailman/email/message.py
regexp: ' sender ='
line: ' sender = f"{mlist.list_name}-bounces@{mlist.domain.mail_host}"'
# When notifying moderators of a new incoming message, add link to moderation page
- name: Patch moderation requests messages
template:
src: mailman/templates/fr/list:admin:action:post.txt.j2
dest: /usr/lib/python3/dist-packages/mailman/templates/fr/list:admin:action:post.txt
owner: root
group: root
mode: 0644
- name: Indicate role in motd
template:
src: update-motd.d/05-service.j2
dest: /etc/update-motd.d/05-mailman3
mode: 0755