diff --git a/defaults/main.yml b/defaults/main.yml index b5855a3..3bcbbd3 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -94,3 +94,4 @@ mailserver: show_footer_text: 'NO' quota_multiplier: '1048576' page_size: '500' + mailbox_postdeletion_script: sudo -u vmail /etc/postfixadmin/mailbox-postdeletion.sh diff --git a/tasks/main.yml b/tasks/main.yml index 4c95631..88938ee 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -63,6 +63,36 @@ mode: 0700 path: /var/cache/postfixadmin/templates_c +- name: copy postfixadmin mailbox postdeletion script + ansible.builtin.template: + src: postfixadmin/mailbox-postdeletion.sh.j2 + dest: /etc/postfixadmin/mailbox-postdeletion.sh + owner: root + group: root + mode: "0755" + +- name: copy postfixadmin sudoers config + ansible.builtin.template: + src: postfixadmin/sudoers.j2 + dest: /etc/sudoers.d/10-postfixadmin + owner: root + group: root + mode: "0644" + +- name: create directory for deleted mailboxes + ansible.builtin.file: + state: directory + owner: vmail + group: vmail + mode: 0700 + path: /var/mail/vmail/.deleted/ + +- name: add cronjob to cleanup deleted mailboxes + ansible.builtin.cron: + name: cleanup deleted mailboxes + job: 'find /var/mail/vmail/.deleted/ -mindepth 1 -maxdepth 1 -mtime +1 -exec rm -r {} \;' + minute: "37" + # php_version and "restart php-fpm" handler from nginx role - name: create postfixadmin php pool ansible.builtin.template: diff --git a/templates/postfixadmin/mailbox-postdeletion.sh.j2 b/templates/postfixadmin/mailbox-postdeletion.sh.j2 new file mode 100644 index 0000000..b319d47 --- /dev/null +++ b/templates/postfixadmin/mailbox-postdeletion.sh.j2 @@ -0,0 +1,14 @@ +#!/bin/sh + +# Parameters: (1) username (2) domain +# username = localpart@domain + +localpart="${1%%@*}" +domain="${1#*@}" + +set -e + +test -d "/var/mail/vmail/$domain/$localpart" || exit 0 + +touch "/var/mail/vmail/$domain/$localpart" +mv "/var/mail/vmail/$domain/$localpart" "/var/mail/vmail/.deleted/$(date '+%Y%m%d%H%M%S')-$localpart@$domain" diff --git a/templates/postfixadmin/sudoers.j2 b/templates/postfixadmin/sudoers.j2 new file mode 100644 index 0000000..846d0d7 --- /dev/null +++ b/templates/postfixadmin/sudoers.j2 @@ -0,0 +1 @@ +postfixadmin ALL = (vmail) NOPASSWD: /etc/postfixadmin/mailbox-postdeletion.sh