summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-05-02 01:16:14 -0700
committerElizabeth Hunt <me@liz.coffee>2025-05-02 18:37:37 -0700
commit01160ea57f87e1ca8799c55123e491ec7bac6c0c (patch)
treefd579e486012265071887772d466144c4a3ed054
parent2a8a33d28267f84e947834c1374a5e413f6d760e (diff)
downloadinfra-01160ea57f87e1ca8799c55123e491ec7bac6c0c.tar.gz
infra-01160ea57f87e1ca8799c55123e491ec7bac6c0c.zip
Fix some long-standing group issues and stuff
-rw-r--r--group_vars/mail.yml10
-rw-r--r--playbooks/roles/mail/templates/stacks/docker-compose.yml8
-rw-r--r--playbooks/roles/mail/templates/volumes/data/dms/config/dovecot-ldap.conf1
-rwxr-xr-xplaybooks/roles/mail/templates/volumes/data/dms/config/user-patches.sh13
-rwxr-xr-xplaybooks/roles/src/templates/volumes/data/hooks/update2
5 files changed, 20 insertions, 14 deletions
diff --git a/group_vars/mail.yml b/group_vars/mail.yml
index c69cc82..1114ca8 100644
--- a/group_vars/mail.yml
+++ b/group_vars/mail.yml
@@ -17,14 +17,10 @@ ldap_search_base: "{{ 'dc=' ~ idm_domain | regex_replace('\\.', ',dc=') }}"
ldap_bind_dn: "dn=token"
ldap_query_filter_user: "(&(class=account)(emailprimary=%s))"
-ldap_query_filter_group: "(&(class=account)(emailprimary=%s))"
+ldap_query_filter_group: "(&(class=group)(mail=%s))"
ldap_query_filter_alias: "(&(class=account)(emailalternative=%s))"
-ldap_query_filter_domain: "(&(class=account)(emailprimary=%s))"
-ldap_query_filter_senders: "(&(class=account)(emailprimary=%s))"
-
-sasl_ldap_filter: >
- (&(|(name=%U)(emailprimary=%U))(class=account)
- (memberOf=cn=mail,{{ ldap_search_base }}))
+ldap_query_filter_domain: "(mail=*@%s)"
+ldap_query_filter_senders: "(&(class=account)(|(emailprimary=%s)(emailalternative=%s)))"
dovecot_user_filter: >
(&(class=account)(name=%u)
diff --git a/playbooks/roles/mail/templates/stacks/docker-compose.yml b/playbooks/roles/mail/templates/stacks/docker-compose.yml
index debaac1..38e63cb 100644
--- a/playbooks/roles/mail/templates/stacks/docker-compose.yml
+++ b/playbooks/roles/mail/templates/stacks/docker-compose.yml
@@ -101,10 +101,10 @@ services:
- LDAP_QUERY_FILTER_DOMAIN={{ ldap_query_filter_domain }}
- LDAP_QUERY_FILTER_SENDERS={{ ldap_query_filter_senders }}
- - POSTMASTER_ADDRESS={{ postmaster_email }}
+ - SASLAUTHD_MECHANISMS=rimap
+ - SASLAUTHD_MECH_OPTIONS=127.0.0.1
- - SASLAUTHD_MECHANISMS=ldap
- - SASLAUTHD_LDAP_FILTER={{ sasl_ldap_filter }}
+ - DOVECOT_USER_FILTER={{ dovecot_user_filter }}
- ENABLE_OAUTH2=1
- OAUTH2_INTROSPECTION_URL={{ roundcube_oauth2_user_uri }}
@@ -113,6 +113,8 @@ services:
- RELAY_USER={{ relay_user }}
- RELAY_PASSWORD={{ relay_password }}
+ - POSTMASTER_ADDRESS={{ postmaster_email }}
+
networks:
roundcube:
proxy:
diff --git a/playbooks/roles/mail/templates/volumes/data/dms/config/dovecot-ldap.conf b/playbooks/roles/mail/templates/volumes/data/dms/config/dovecot-ldap.conf
index 956942c..6a14553 100644
--- a/playbooks/roles/mail/templates/volumes/data/dms/config/dovecot-ldap.conf
+++ b/playbooks/roles/mail/templates/volumes/data/dms/config/dovecot-ldap.conf
@@ -8,4 +8,3 @@ dnpass = {{ email_ldap_api_token }}
auth_bind = yes
auth_bind_userdn = {{ dovecot_auth_bind_userdn }}
-user_filter = {{ dovecot_user_filter }}
diff --git a/playbooks/roles/mail/templates/volumes/data/dms/config/user-patches.sh b/playbooks/roles/mail/templates/volumes/data/dms/config/user-patches.sh
index 1749499..f03bc81 100755
--- a/playbooks/roles/mail/templates/volumes/data/dms/config/user-patches.sh
+++ b/playbooks/roles/mail/templates/volumes/data/dms/config/user-patches.sh
@@ -26,6 +26,9 @@ sed -i 's/result_attribute = mail/result_attribute = emailprimary/' /etc/postfix
sed -i 's/result_attribute = mail/result_attribute = emailprimary/' /etc/postfix/ldap-domains.cf
sed -i 's/result_attribute = mail/result_attribute = emailprimary/' /etc/postfix/ldap-users.cf
+grep -q '^leaf_result_attribute = mail$' /etc/postfix/ldap-groups.cf || echo "leaf_result_attribute = mail" >> /etc/postfix/ldap-groups.cf
+grep -q '^special_result_attribute = member$' /etc/postfix/ldap-groups.cf || echo "special_result_attribute = member" >> /etc/postfix/ldap-groups.cf
+
echo 'auth_username_format = %Ln' >> /etc/dovecot/conf.d/10-auth.conf
echo 'username_format = %Ln' >> /etc/dovecot/dovecot-oauth2.conf.ext
@@ -37,6 +40,12 @@ echo "passdb {
userdb {
driver = static
- args = username_format=%u uid=docker gid=docker home=/var/mail/%d/%u
- default_fields = uid=docker gid=docker home=/var/mail/%d/%u
+ args = username_format=%u uid=5000 gid=5000 home=/var/mail/%u
+ default_fields = uid=5000 gid=5000 home=/var/mail/%u
}" > /etc/dovecot/conf.d/auth-ldap.conf.ext
+
+postconf -e 'virtual_uid_maps = static:5000'
+postconf -e 'virtual_gid_maps = static:5000'
+postconf -e 'virtual_minimum_uid = 5000'
+
+chown -R 5000:5000 /var/mail/*
diff --git a/playbooks/roles/src/templates/volumes/data/hooks/update b/playbooks/roles/src/templates/volumes/data/hooks/update
index a11d3e5..5723dc5 100755
--- a/playbooks/roles/src/templates/volumes/data/hooks/update
+++ b/playbooks/roles/src/templates/volumes/data/hooks/update
@@ -28,7 +28,7 @@ else
fi
echo "Hi from Soft Serve update hook!"
-echo
+echo "$GITDIR"
echo "RefName: $refname"
echo "Change Type: $newrev_type"
echo "Old SHA1: $oldrev"