99 lines
3.3 KiB
Bash
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
|