Adjust schleuder install documentation

This commit is contained in:
Christoph 2018-04-30 18:30:47 +02:00
parent cc193c7339
commit ff121e8562
2 changed files with 257 additions and 1 deletions

View File

@ -120,4 +120,260 @@ systemctl restart schleuder-api-daemon
# - Add Postfix support
# ---
schleuder_script="$(which schleuder)"
backup_date="$(date +%Y-%m-%d-%H%M)"
schleuder_domains="il-schleuder.de cryptolists.interventionistische-linke.org"
cp -a "/etc/postfix/main.cf" "/etc/postfix/main.cf.$backup_date"
# -
# - /etc/postfix/master.cf
# -
# - Add transport options to file /etc/postfix/master.cf
# -
if ! grep -q -E "^\s*schleuder" /etc/postfix/master.cf 2>/dev/null ; then
# - Backup file /etc/postfix/master.cf
# -
cp -a "/etc/postfix/master.cf" "/etc/postfix/master.cf.$backup_date"
cat <<EOF >> /etc/postfix/master.cf
schleuder unix - n n - - pipe
flags=DRhu user=schleuder argv=${schleuder_script} work \${recipient}
EOF
fi
# -
# - virtual_schleuder_domains_file
# -
virtual_schleuder_domains_file="/etc/postfix/schleuder_domains_sqlite.cf"
if [[ -f "$virtual_schleuder_domains_file" ]] ; then
# - Backup file $virtual_schleuder_domains_file
# -
cp -a "$virtual_schleuder_domains_file" "${virtual_schleuder_domains_file}.$backup_date"
fi
# - Create new file '$virtual_schleuder_domains_file'
# -
cat << EOF > $virtual_schleuder_domains_file
dbpath = /var/lib/schleuder/db.sqlite
query = select distinct substr(email, instr(email, '@') + 1) from lists
where email like '%%%s'
EOF
# - Add 'sqlite:$virtual_schleuder_domains_file' to virtual_mailbox_domains
# -
if ! $(grep -q -e "sqlite:$virtual_schleuder_domains_file" "/etc/postfix/main.cf") ; then
perl -i -n -p \
-e "s#^\s*(virtual_mailbox_domains\s*=.*$)#\1\n \#\# - Schleuder domains\n sqlite:${virtual_schleuder_domains_file}#" \
/etc/postfix/main.cf > $log_file 2>&1
fi
# - Delete backuped file '$virtual_schleuder_domains_file' if nothing changed
# -
if [[ -f "${virtual_schleuder_domains_file}.$backup_date" ]]; then
if $(diff "$virtual_schleuder_domains_file" "${virtual_schleuder_domains_file}.$backup_date" > /dev/null 2>&1); then
rm "${virtual_schleuder_domains_file}.$backup_date"
fi
fi
# -
# - virtual_schleuder_lists_file
# -
virtual_schleuder_lists_file="/etc/postfix/schleuder_lists_sqlite.cf"
if [[ -f "$virtual_schleuder_lists_file" ]] ; then
# - Backup file $virtual_schleuder_lists_file
# -
cp -a "$virtual_schleuder_lists_file" "${virtual_schleuder_lists_file}.$backup_date"
fi
# - Create new file '$virtual_schleuder_lists_file'
# -
cat << EOF > $virtual_schleuder_lists_file
# Use this as a table for postfix to select addresses that schleuder
# thinks belong to it. This is useful when
# smtpd_reject_unlisted_recipient = yes (which is the default for
# modern Postfix)
# For example, you might dedicate Postfix's "virtual" domains to
# schleuder with the following set of configs in main.cf:
#
# virtual_domains = lists.example.org
# virtual_transport = schleuder
# virtual_alias_maps = hash:/etc/postfix/virtual_aliases
# virtual_mailbox_maps = sqlite:/etc/postfix/schleuder_sqlite.cf
# schleuder_destination_recipient_limit = 1
# it is not recommended to use this table for more powerful
# configuration options (e.g. transport_maps) because it could give
# the schleuder user (which can write the given sqlite database) the
# power to change settings for for other mail handled by this Postfix
# instance.
dbpath = /var/lib/schleuder/db.sqlite
query = select 'present' from lists
where email = '%s'
or email = replace('%s', '-bounce@', '@')
or email = replace('%s', '-owner@', '@')
or email = replace('%s', '-request@', '@')
or email = replace('%s', '-sendkey@', '@')
EOF
# - Add 'sqlite:$virtual_schleuder_lists_file' to virtual_mailbox_maps
# -
if ! $(grep -q -e "sqlite:$virtual_schleuder_lists_file" "/etc/postfix/main.cf") ; then
perl -i -n -p \
-e "s#^\s*(virtual_mailbox_maps\s*=.*$)#\1\n \#\# - Schleuder lists\n sqlite:${virtual_schleuder_lists_file}#" \
/etc/postfix/main.cf > $log_file 2>&1
fi
# - Delete backuped file '$virtual_schleuder_lists_file' if nothing changed
# -
if [[ -f "${virtual_schleuder_lists_file}.$backup_date" ]]; then
if $(diff "$virtual_schleuder_lists_file" "${virtual_schleuder_lists_file}.$backup_date" > /dev/null 2>&1); then
rm "${virtual_schleuder_lists_file}.$backup_date"
fi
fi
# -
# - transport_schleuder_file
# -
transport_schleuder_file="/etc/postfix/transport_schleuder"
if [[ -f "$transport_schleuder_file" ]] ; then
# - Backup file '$transport_schleuder_file'
# -
cp -a "$transport_schleuder_file" "${transport_schleuder_file}.$backup_date"
fi
# - Create new file '$transport_schleuder_file'
# -
> $transport_schleuder_file
for _domain in $schleuder_domains ; do
cat << EOF >> $transport_schleuder_file
$_domain schleuder:
EOF
done
# - Create db-file '${transport_schleuder_file}.db'
# -
postmap btree:${transport_schleuder_file}
# - Add 'btree:${transport_schleuder_file}' to parameter transport_maps in /etc/postfix/main.cf
# -
if ! $(grep -q "btree:${transport_schleuder_file}" "/etc/postfix/main.cf") ; then
perl -i -n -p \
-e "s#^(transport_maps\s+=.*)#\1\n btree:${transport_schleuder_file}#" \
/etc/postfix/main.cf > $log_file 2>&1
fi
# - Add 'btree:${transport_schleuder_file}' to parameter transport_maps in /etc/postfix/main.cf
# -
if ! $(grep -q "btree:${transport_schleuder_file}" "/etc/postfix/main.cf") ; then
perl -i -n -p \
-e "s#^(transport_maps\s+=.*)#\1\n btree:${transport_schleuder_file}#" \
/etc/postfix/main.cf > $log_file 2>&1
fi
# - Delete backuped file '$transport_schleuder_file' if nothing changed
# -
if [[ -f "${transport_schleuder_file}.$backup_date" ]]; then
if $(diff "$transport_schleuder_file" "${transport_schleuder_file}.$backup_date" > /dev/null 2>&1); then
rm "${transport_schleuder_file}.$backup_date"
fi
fi
# -
# - virtual_schleuder_aliases_file
# -
virtual_schleuder_aliases_file="/etc/postfix/virtual_schleuder_aliases"
if [[ -f "$virtual_schleuder_aliases_file" ]] ; then
# - Backup file '$virtual_schleuder_aliases_file'
# -
cp -a "$virtual_schleuder_aliases_file" "${virtual_schleuder_aliases_file}.$backup_date"
fi
# - Create new file '$virtual_schleuder_aliases_file'
# -
cat << EOF > $virtual_schleuder_aliases_file
## - For schleuder domain, prevent e-mail addresse
## - postmaster@<schleuder-domain>,
## - abuse@<schleuder-domain>,
## - MAILER-DAEMON@<schleuder-domain>,
## - root@<schleuder-domain>
## - sending to schleuder list manager
## -
EOF
for _domain in $schleuder_domains ; do
cat << EOF >> $virtual_schleuder_aliases_file
postmaster@$_domain postmaster@interventionistische-linke.org
abuse@$_domain postmaster@interventionistische-linke.org
MAILER-DAEMON@$_domain root@localhost
root@$_domain root@localhost
EOF
done
# - Create db-file '${virtual_schleuder_aliases_file}.db'
# -
postmap btree:${virtual_schleuder_aliases_file}
# - Add 'btree:${virtual_schleuder_aliases_file}' to parameter virtual_alias_maps in /etc/postfix/main.cf
# -
if ! $(grep -q "btree:${virtual_schleuder_aliases_file}" "/etc/postfix/main.cf") ; then
perl -i -n -p \
-e "s#^(virtual_alias_maps\s+=.*)#\1\n \#\# - Schleuder\n btree:${virtual_schleuder_aliases_file}#" \
/etc/postfix/main.cf > $log_file 2>&1
fi
# - Delete backuped file '$virtual_schleuder_aliases_file' if nothing changed
# -
if [[ -f "${virtual_schleuder_aliases_file}.$backup_date" ]]; then
if $(diff "$virtual_schleuder_aliases_file" "${virtual_schleuder_aliases_file}.$backup_date" > /dev/null 2>&1); then
rm "${virtual_schleuder_aliases_file}.$backup_date"
fi
fi
# -
# - main.cf: new Parameter 'schleuder_destination_recipient_limit'
# -
# - Add and set parameter 'schleuder_destination_recipient_limit = 1'
# -
if ! $(grep -q -E "^\s*schleuder_destination_recipient_limit" "/etc/postfix/main.cf") ; then
perl -i -n -p \
-e "s#^\s*(virtual_transport\s*=.*$)#schleuder_destination_recipient_limit = 1\n\n\1#" \
/etc/postfix/main.cf > $log_file 2>&1
fi
# ---
if [[ -f "/etc/postfix/main.cf.$backup_date" ]]; then
if $(diff "/etc/postfix/main.cf" "/etc/postfix/main.cf.$backup_date" > /dev/null 2>&1); then
rm "/etc/postfix/main.cf.$backup_date"
fi
fi
systemctl restart postfix

View File

@ -116,7 +116,7 @@ fi
groupadd -r schleuder
useradd -r -M -d /noexistent -s /bin/false -g schleuder schleuder
useradd -r -d /var/lib/schleuder -s /bin/false -g schleuder schleuder
chown -R schleuder:schleuder /var/lib/schleuder /etc/schleuder
systemctl stop postfix