6
0
Fork 0
This repository has been archived on 2022-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
cdist-recycledcloud/type/__recycledcloud_lists/manifest

99 lines
3.3 KiB
Bash

#!/bin/sh
os=$(cat "${__global:?}/explorer/os")
if [ "$os" != "debian" ]; then
echo "This type does not support $os. Exiting." >&2
exit 1
fi
DOMAIN=$(cat "${__object:?}/parameter/domain")
export DOMAIN
__nginx "$DOMAIN" \
--config - <<- EOF
location / {
uwsgi_pass unix:/run/mailman3-web/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
location /mailman3/static {
alias /var/lib/mailman3/web/static;
}
location /mailman3/static/favicon.ico {
alias /var/lib/mailman3/web/static/postorius/img/favicon.ico;
}
EOF
# TLS is handled by proxy (nginx).
export USE_HTTPS=no
export SHOW_TRACEBACKS=no
export EMAILNAME=$DOMAIN
SITE_OWNER=$(cat "${__object:?}/parameter/site-owner")
ADMIN_PASS=$(cat "${__object:?}/parameter/mailman3-api-admin-pass")
HYPERKITTY_API_KEY=$(cat "${__object:?}/parameter/hyperkitty-api-key")
MAILMAN_ARCHIVER_FROM=$(cat "${__object:?}/parameter/archiver-from")
export ADMIN_PASS HYPERKITTY_API_KEY SITE_OWNER MAILMAN_ARCHIVER_FROM
DJANGO_SECRET=$(cat "${__object:?}/parameter/django-secret")
export DJANGO_SECRET
LDAP_SERVER_URI=$(cat "${__object:?}/parameter/ldap-server-uri")
LDAP_BIND_DN=$(cat "${__object:?}/parameter/ldap-bind-dn")
LDAP_BIND_PASSWORD=$(cat "${__object:?}/parameter/ldap-bind-pw")
LDAP_USER_BASE_DN=$(cat "${__object:?}/parameter/ldap-user-base")
LDAP_GROUP_BASE_DN=$(cat "${__object:?}/parameter/ldap-group-base")
SUPERUSER_LDAP_DN=$(cat "${__object:?}/parameter/superuser-ldap-dn")
export LDAP_SERVER_URI LDAP_BIND_DN LDAP_BIND_PASSWORD LDAP_USER_BASE_DN \
LDAP_GROUP_BASE_DN SUPERUSER_LDAP_DN
# Install mailman3 and related mail services.
__package python3-ldap
__package python3-django-auth-ldap
require="__nginx/$DOMAIN __package/python3-ldap \
__package/python3-django-auth-ldap" __package mailman3-full
# Install & configure MTA.
__package postfix
export require='__package/postfix'
__postfix_postconf inet_interfaces --value 'all'
__postfix_postconf recipient_delimiter --value '+'
__postfix_postconf unknown_local_recipient_reject_code --value '500'
__postfix_postconf owner_request_special --value 'no'
mailman_datadir=/var/lib/mailman3/data
__postfix_postconf transport_maps --value "hash:$mailman_datadir/postfix_lmtp"
__postfix_postconf local_recipient_maps --value "hash:$mailman_datadir/postfix_lmtp"
__postfix_postconf relay_domains --value "hash:$mailman_datadir/postfix_domains"
unset require
# Generate and deploy configuration.
mkdir -p "${__object:?}/files"
for file in mailman.cfg mailman-web.py mailman-hyperkitty.cfg; do
"${__type:?}/files/$file.sh" > "${__object:?}/files/$file"
done
require="__package/mailman3-full" __file /etc/mailman3/mailman.cfg \
--source "${__object:?}/files/mailman.cfg" \
--owner list \
--mode 0640 \
--onchange 'service mailman3 restart'
require="__package/mailman3-full" __file /etc/mailman3/mailman-hyperkitty.cfg \
--source "${__object:?}/files/mailman-hyperkitty.cfg" \
--owner list \
--mode 0640
require="__package/mailman3-full" __file /etc/mailman3/mailman-web.py \
--source "${__object:?}/files/mailman-web.py" \
--group www-data \
--mode 0640 \
--onchange 'service mailman3-web restart'
require="__package/mailman3-full" __file /etc/mailman3/uwsgi.ini \
--source "${__type:?}/files/uwsgi.ini" \
--mode 0644