From ff121e85622e43b1d01919fca0fc03d35f7432ab Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 30 Apr 2018 18:30:47 +0200 Subject: [PATCH] Adjust schleuder install documentation --- .../install_schleuder3_debian_package.txt | 256 ++++++++++++++++++ DOC/schleuder3/install_schleuder3_maually.txt | 2 +- 2 files changed, 257 insertions(+), 1 deletion(-) diff --git a/DOC/schleuder3/install_schleuder3_debian_package.txt b/DOC/schleuder3/install_schleuder3_debian_package.txt index 3db964e..11f4952 100644 --- a/DOC/schleuder3/install_schleuder3_debian_package.txt +++ b/DOC/schleuder3/install_schleuder3_debian_package.txt @@ -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 <> /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@, +## - abuse@, +## - MAILER-DAEMON@, +## - root@ +## - 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 diff --git a/DOC/schleuder3/install_schleuder3_maually.txt b/DOC/schleuder3/install_schleuder3_maually.txt index af5b0c9..16212a6 100644 --- a/DOC/schleuder3/install_schleuder3_maually.txt +++ b/DOC/schleuder3/install_schleuder3_maually.txt @@ -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