From 6fd0270745bf99ddfaae95ef36b1dcb3f24c08cd Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 27 Feb 2017 19:01:19 +0100 Subject: [PATCH] Konfiguration now in directory 'conf' --- .gitignore | 3 + conf/install_update_dovecot.conf.sample | 109 ++++++ install_update_dovecot.sh | 437 ++++++++---------------- 3 files changed, 256 insertions(+), 293 deletions(-) create mode 100644 .gitignore create mode 100644 conf/install_update_dovecot.conf.sample diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..23b3b9b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.conf +dovecot* +log* diff --git a/conf/install_update_dovecot.conf.sample b/conf/install_update_dovecot.conf.sample new file mode 100644 index 0000000..007a88c --- /dev/null +++ b/conf/install_update_dovecot.conf.sample @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +## =================================================================== +## - Configuration File: Install/Update Dovecot Server +## =================================================================== + +# --- +# --- Configure Settings for your Server here.. +# --- + +# - Set update=false if that is a new installation +# - +_update=false + + +# - Version dovecot +# - +_version=2.2.28 + + +# - Version Pigeonhole +# - +_pigeonhole=dovecot-2.2-pigeonhole-0.4.16 + + +# - postmaster_address +# - +# - Example: +# - postmaster_address="admin\@warenform.net" +# - +postmaster_address="" + + +# - hostname +# - +hostname="" + + +# - IPv4 / IPv6 Addressen +# - +ipv4="" +ipv6="" + + +# - Listener configuration +# - +imap_listener_adresses="127.0.0.1 $ipv4 $ipv6" +imaps_listener_adresses="$ipv4 $ipv6" + +pop_listener_adresses="$ipv4 $ipv6" +pops_listener_adresses="$ipv4 $ipv6" + +xmpp_listener=false +xmpp_listener_address="127.0.0.1" +xmpp_listener_port="4444" + + +# - Database settings +# - +# - Possible values for parameter database are only 'mysql' and 'postgres' +# - +# - +database=postgres +#database=mysql + +dbname=postfix +dbuser=postfix +dbpassword=i"" +dbhost=/var/run/postgresql + +default_pass_scheme=PLAIN + + +# - Cert/Key configurations +# - +cert_base_dir="/etc/postfix/ssl" +server_cert=${cert_base_dir}/mailserver.crt +server_key=${cert_base_dir}/mailserver.key + +imap_cert=${cert_base_dir}/mailserver.crt +imap_key=${cert_base_dir}/mailserver.key + +pop_cert=${cert_base_dir}/mailserver.crt +pop_key=${cert_base_dir}/mailserver.key + + +# - Other settings +# - +spam_folder=Spam + +max_userip_connections=24 +#auth_mechanisms="plain login digest-md5 cram-md5" +auth_mechanisms="plain login digest-md5 cram-md5 apop" + +# - Settings for quota warning sript +# - +from_address="warenform gbr " +reply_to="hilfe@kunden.warenform.net" +webmailer="https:\\webmail.initiativenserver.de" +salutation="Das WARENFORM-Team +# +#-- +#WARENFORM | Phone: +49 30 / 61 65 17 52 -0 +#Dresdner Str. 11 | Fax: +49 30 / 61 65 17 52 -66 +#D-10999 Berlin | http://www.warenform.net" + +# --- +# --- End server-specific Settings +# --- diff --git a/install_update_dovecot.sh b/install_update_dovecot.sh index 015d7cc..77e5d4f 100755 --- a/install_update_dovecot.sh +++ b/install_update_dovecot.sh @@ -1,291 +1,40 @@ #!/usr/bin/env bash -## ------------------------------------------------------------------- +## =================================================================== ## - Install/Update Dovecot Server +## =================================================================== -## *************************************************** ## -## - rage.so36.net - ## -## - -# -### - Set update=false if that is a new installation -#_update=true -# -#_version=2.2.18 -#_pigeonhole=dovecot-2.2-pigeonhole-0.4.8 -# -#_src_base_dir=/usr/local/src/mailsystem -#_log_dir=${_src_base_dir}/log-dovecot-$_version -# -#postmaster_address="roots\@so36.net" -#hostname="rage.so36.net" -# -#ipv4="83.223.73.211" -#ipv6="2a01:30:1fff:fd00::211" -# -#imap_listener_adresses="127.0.0.1 $ipv4 $ipv6" -#imaps_listener_adresses="127.0.0.1 $ipv4 $ipv6" -# -#pop_listener_adresses="$ipv4 $ipv6" -#pops_listener_adresses="127.0.0.1 $ipv4 $ipv6" -# -#database=postgres -##database=mysql -# -#dbname=postfix -#dbuser=postfix -#dbpassword=9jKqFHNGrgFb -#dbhost=/var/run/postgresql -# -#default_pass_scheme=CRYPT -# -#cert_base_dir="/etc/postfix/ssl" -#server_cert=${cert_base_dir}/mailserver.crt -#server_key=${cert_base_dir}/mailserver.key -# -#imap_cert=${cert_base_dir}/imap.crt -#imap_key=${cert_base_dir}/imap.key -# -#pop_cert=${cert_base_dir}/pop.crt -#pop_key=${cert_base_dir}/pop.key -# -#spam_folder=Spam -# -#xmpp_listener=true -#xmpp_listener_address="127.0.0.1" -#xmpp_listener_port="4444" -# -#max_userip_connections=24 -##auth_mechanisms="plain login digest-md5 cram-md5" -#auth_mechanisms="plain login" -# -## quota warning sript -#from_address="so36.net " -#reply_to="support@so36.net" -#webmailer="https:\\webmail.so36.net" -#salutation="so36.NET" -## - -## - rage.so36.net - ## -## *************************************************** ## - -## *************************************************** ## -## - a.mx.oopen.de - ## -## - - -## - Set update=false if that is a new installation -#_update=true -# -#_version=2.2.18 -#_pigeonhole=dovecot-2.2-pigeonhole-0.4.8 -# -#_src_base_dir=/usr/local/src/mailsystem -#_log_dir=${_src_base_dir}/log-dovecot-$_version -# -#postmaster_address="admin\@oopen.de" -#hostname="a.mx.oopen.de" -# -#ipv4="83.223.85.164" -#ipv6="2a01:30:1fff:9::164" -# -#imap_listener_adresses="127.0.0.1 $ipv4 $ipv6" -#imaps_listener_adresses="$ipv4 $ipv6" -# -#pop_listener_adresses="$ipv4 $ipv6" -#pops_listener_adresses="$ipv4 $ipv6" -# -#database=postgres -##database=mysql -# -#dbname=postfix -#dbuser=postfix -#dbpassword=FKt4z55FxMZp -#dbhost=/var/run/postgresql -# -#default_pass_scheme=PLAIN -# -#cert_base_dir="/etc/postfix/ssl" -#server_cert=${cert_base_dir}/mailserver.crt -#server_key=${cert_base_dir}/mailserver.key -# -#imap_cert=${cert_base_dir}/imap.crt -#imap_key=${cert_base_dir}/imap.key -# -#pop_cert=${cert_base_dir}/pop.crt -#pop_key=${cert_base_dir}/pop.key -# -#spam_folder=Spam -# -#xmpp_listener=false -#xmpp_listener_address="127.0.0.1" -#xmpp_listener_port="4444" -# -#max_userip_connections=24 -##auth_mechanisms="plain login digest-md5 cram-md5" -#auth_mechanisms="plain login digest-md5 cram-md5 apop" -# -## quota warning sript -#from_address="o.open " -#reply_to="oo@oopen.de" -#webmailer="https:\\webmail.oopen.de" -#salutation="O.OPEN -# -#-- -#O.OPEN | Phone: +49 30 / 290 484 91 -#Erkelenzdamm 21 | Fax: +49 30 / 290 484 99 -#D-10999 Berlin | http://oopen.de" -## - -## - a.mx.oopen.de - ## -## *************************************************** ## - -## *************************************************** ## -## - c.mx.oopen.de - ## -## - - -## - Set update=false if that is a new installation -#_update=true -# -#_version=2.2.18 -#_pigeonhole=dovecot-2.2-pigeonhole-0.4.8 -# -#_src_base_dir=/usr/local/src/mailsystem -#_log_dir=${_src_base_dir}/log-dovecot-$_version -# -#postmaster_address="admin\@oopen.de" -#hostname="c.mx.oopen.de" -# -#ipv4="83.223.85.101" -#ipv6="2a01:30:1fff:3::101" -# -#imap_listener_adresses="127.0.0.1 $ipv4 $ipv6" -#imaps_listener_adresses="$ipv4 $ipv6" -# -#pop_listener_adresses="$ipv4 $ipv6" -#pops_listener_adresses="$ipv4 $ipv6" -# -##database=postgres -#database=mysql -# -#dbname=postfix -#dbuser=postfix -#dbpassword=AeB4kohyie5rahJ7 -#dbhost=/tmp/mysqld.sock -# -#default_pass_scheme=PLAIN -# -#cert_base_dir="/etc/postfix/ssl" -#server_cert=${cert_base_dir}/mail.initiativenserver.crt -#server_key=${cert_base_dir}/mail.initiativenserver.key -# -#imap_cert=${cert_base_dir}/mail.initiativenserver.crt -#imap_key=${cert_base_dir}/mail.initiativenserver.key -# -#pop_cert=${cert_base_dir}/mail.initiativenserver.crt -#pop_key=${cert_base_dir}/mail.initiativenserver.key -# -#spam_folder=Junk -# -#xmpp_listener=false -#xmpp_listener_address="127.0.0.1" -#xmpp_listener_port="4444" -# -#max_userip_connections=24 -##auth_mechanisms="plain login digest-md5 cram-md5" -#auth_mechanisms="plain login digest-md5 cram-md5 apop" -# -## quota warning sript -#from_address="Initiativenserver " -#reply_to="kontakt@initiativenserver.de" -#webmailer="https:\\webmail.initiativenserver.de" -#salutation="Aktionsbündnis gegen Gewalt, Rechtsextremismus und Fremdenfeindlichkeit -# -#-- -#Initiativenserver | phone: 0331 505824-28 -#Mittelstraße 38/39 | fax: 0331 505824-29 -#14467 Potsdam | email: kontakt@initiativenserver.de" -## - -## - c.mx.oopen.de - ## -## *************************************************** ## - -## *************************************************** ## -## - mx.warenform.de - ## -## - - -## - Set update=false if that is a new installation -#_update=true -# -#_version=2.2.13 -#_pigeonhole=dovecot-2.2-pigeonhole-0.4.3 -# -#_src_base_dir=/usr/local/src/mailsystem -#_log_dir=${_src_base_dir}/log-dovecot-$_version -# -#postmaster_address="admin\@warenform.net" -#hostname="mx.warenform.de" -# -#ipv4="83.223.85.151" -#ipv6="2a01:30:1fff:6::151" -# -#imap_listener_adresses="127.0.0.1 $ipv4 $ipv6" -#imaps_listener_adresses="$ipv4 $ipv6" -# -#pop_listener_adresses="$ipv4 $ipv6" -#pops_listener_adresses="$ipv4 $ipv6" -# -#database=postgres -##database=mysql -# -#dbname=postfix -#dbuser=postfix -#dbpassword=CbX8vg347Vvm -#dbhost=/var/run/postgresql -# -#default_pass_scheme=PLAIN -# -#cert_base_dir="/etc/postfix/ssl" -#server_cert=${cert_base_dir}/servercert.pem -#server_key=${cert_base_dir}/servercert.pem -# -#imap_cert=${cert_base_dir}/imap_warenform_de.crt -#imap_key=${cert_base_dir}/imap_warenform_de.key -# -#pop_cert=${cert_base_dir}/pop_warenform_de.crt -#pop_key=${cert_base_dir}/pop_warenform_de.key -# -#spam_folder=Spam -# -#xmpp_listener=false -#xmpp_listener_address="127.0.0.1" -#xmpp_listener_port="4444" -# -#max_userip_connections=24 -##auth_mechanisms="plain login digest-md5 cram-md5" -#auth_mechanisms="plain login digest-md5 cram-md5 apop" -# -## quota warning sript -#from_address="warenform gbr " -#reply_to="hilfe@kunden.warenform.net" -#webmailer="https:\\webmail.initiativenserver.de" -#salutation="Das WARENFORM-Team -# -#-- -#WARENFORM | Phone: +49 30 / 61 65 17 52 -0 -#Dresdner Str. 11 | Fax: +49 30 / 61 65 17 52 -66 -#D-10999 Berlin | http://www.warenform.net" -## - -## - mx.warenform.de - ## -## *************************************************** ## +## ----------------------------------------------------------------- +## ---------------------------------------------------------------- +## --- +## --- For configurations see file conf/install_update_dovecot.conf +## --- +## --- Dont make changes here! +## --- +## ----------------------------------------------------------------- +## ----------------------------------------------------------------- +# ------------- +# - Settings +# ------------- +_src_base_dir="$(realpath $(dirname $0))" +conf_file="${_src_base_dir}/conf/install_update_dovecot.conf" curdir=`pwd` + +log_file="$(mktemp)" + + rc_done="\033[71G[ \033[32mdone\033[m ]" rc_failed="\033[71G[ \033[31m\033[1mfailed\033[m ]" rc_skipped="\033[71G[ \033[33m\033[1mskipped\033[m ]" +# ------------- +# - Functions an Variable +# ------------- -## *************************************************** ## -## - functions - ## -## - echononl(){ echo X\\c > /tmp/shprompt$$ if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then @@ -298,13 +47,37 @@ echononl(){ fatal(){ echo "" - echo Fehler: $* - echo -e "\n\t\033[31m\033[1mSkript wird abgebrochen\033[m\033[m\n" + echo -e "\t[ \033[31m\033[1mFatal\033[m ]: \033[37m\033[1m$*\033[m" + echo "" + echo -e "\t\033[31m\033[1m Skript wird abgebrochen\033[m\033[m\n" + rm -f $log_file exit 1 } -## - -## - Ende: functions - ## -## *************************************************** ## + +error(){ + echo "" + echo -e "\t[ \033[31m\033[1mError\033[m ]: $*" + echo "" +} + +echo +echononl "\tInclude Configuration file.." +if [[ ! -f $conf_file ]]; then + echo -e "$rc_failed" + fatal "Missing configuration file '$conf_file'" +else + source $conf_file + echo -e "$rc_done" +fi + +_log_dir=${_src_base_dir}/log-dovecot-$_version + + + +# ------------- +# - List Script Configurations +# ------------- + clear; @@ -371,7 +144,13 @@ do read OK done -[ $OK = "Yes" -o $OK = "yes" -o "$OK" = "ja" -o "$OK" = "Ja" ] || fatal Edit basename $0 and correct variables +[ $OK = "Yes" -o $OK = "yes" -o "$OK" = "ja" -o "$OK" = "Ja" ] || fatal "Edit '$(basename $conf_file)' and correct variables" + + + +# ------------- +# - Begin Install/Update +# ------------- echo "" @@ -446,14 +225,15 @@ mkdir -p $_log_dir ## ----------------- ## --- Download -cd ${_src_base_dir}/tarballs +cd ${_src_base_dir} echo "Download sources.." ## - Downloud Dovecot 2.2.x ## - echononl "\tDownload dovecot-${_version}.tar.gz" -if [ ! -f "${_src_base_dir}/tarballs/dovecot-${_version}.tar.gz" ]; then +#if [ ! -f "${_src_base_dir}/tarballs/dovecot-${_version}.tar.gz" ]; then +if [ ! -f "${_src_base_dir}/dovecot-${_version}.tar.gz" ]; then wget http://www.dovecot.org/releases/2.2/dovecot-${_version}.tar.gz > /dev/null 2>&1 if [ "$?" = 0 ]; then echo -e "$rc_done" @@ -469,7 +249,8 @@ fi ## - Download Pigeonhole for Dovecot v2.2 ## - echononl "\tDownload ${_pigeonhole}.tar.gz.." -if [ ! -f "${_src_base_dir}/tarballs/${_pigeonhole}.tar.gz" ]; then +#if [ ! -f "${_src_base_dir}/tarballs/${_pigeonhole}.tar.gz" ]; then +if [ ! -f "${_src_base_dir}/${_pigeonhole}.tar.gz" ]; then wget http://pigeonhole.dovecot.org/releases/2.2/${_pigeonhole}.tar.gz > /dev/null 2>&1 if [ "$?" = 0 ]; then echo -e "$rc_done" @@ -584,7 +365,8 @@ echo "Installing Base System.." cd ${_src_base_dir} echononl "\tUnpack dovecot-${_version}.tar.gz.." -tar -xzf tarballs/dovecot-${_version}.tar.gz > /dev/null +#tar -xzf tarballs/dovecot-${_version}.tar.gz > /dev/null +tar -xzf dovecot-${_version}.tar.gz > /dev/null if [ "$?" = 0 ]; then echo -e "$rc_done" else @@ -669,7 +451,8 @@ fi cd ${_src_base_dir} echo "" echononl "\tExtracting ${_pigeonhole}.tar.gz.." -gunzip < tarballs/${_pigeonhole}.tar.gz | tar -xf - +#gunzip < tarballs/${_pigeonhole}.tar.gz | tar -xf - +gunzip < ${_pigeonhole}.tar.gz | tar -xf - if [ "$?" = 0 ]; then echo -e "$rc_done" else @@ -989,6 +772,8 @@ fi ## - default_process_limit = 200 ## - default_client_limit = 2000 ## - +## - default_vsz_limit = 512M +## - ## - !! Bemerkung ## - Das Hochsetzen des default_client_limit Parameters auf einen Wert größer ## - als 1024 geht nur dann wenn auch die Anzahl der zulässigen "open files" @@ -1059,6 +844,7 @@ fi ## - } ## - } ## - +_failed=false echononl "\tAdjusting file 10-master.conf.." perl -i.ORIG -n -p -e "s#^([ ]*)(unix_listener\ +auth-userdb.*)#\1\2\n\1 mode = 0666\n\1 user = dovecot\n\1 group = dovecot#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-master.conf || _failed=true @@ -1087,6 +873,10 @@ perl -i -n -p -e "s#^([ ]*\#?[ ]*)(default_process_limit.*)#\1\2\ndefault_proces perl -i -n -p -e "s#^([ ]*\#?[ ]*)(default_client_limit.*)#\1\2\ndefault_client_limit = 2000#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-master.conf || _failed=true + +perl -i -n -p -e "s#^([ ]*\#?[ ]*)(default_vsz_limit.*)#\1\2\ndefault_vsz_limit = 512M#g" \ + /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-master.conf || _failed=true + if ! $_failed ; then echo -e "$rc_done" else @@ -1120,6 +910,7 @@ fi ## - # ssl_key = <$pop_key ## - #} ## - +_failed=false echononl "\tAdjusting file 10-ssl.conf.." perl -i.ORIG -n -p -e "s#^([ ]*)(ssl_cert\ ?=.*)#\1\#\# \2\n\1ssl_cert = <$server_cert#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-ssl.conf || _failed=true @@ -1160,6 +951,7 @@ fi ## - auth_socket_path = /var/run/dovecot/auth-userdb ## - mail_plugins = quota expire ## - +_failed=false echononl "\tAdjusting file 10-mail.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(mail_location\ +=.*)#\1\#\# \2\n\1mail_location = maildir:/var/vmail/%d/%n/Maildir#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true @@ -1191,12 +983,51 @@ perl -i -n -p -e "s#^([ ]*)\#?\ ?(mail_plugins\ +=.*)#\1\#\# \2\n\1mail_plugins ## - .. ## - } ## - -perl -i -n -p -e "s#^([ ]*)(namespace\ +inbox\ +{\ *)#\1\#\#\ \2#g" \ - /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true -perl -i -n -p -e "s#^([ ]*)(inbox\ +=\ +yes\ *)#\1\#\#\ \2#g" \ - /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true -perl -i -n -p -e "s#^([ ]*)(}\ *)#\1\#\#\ \2#g" \ - /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true +_failed=false +_found=false +_tmp_file="$(mktemp)" +> $_tmp_file +while IFS='' read -r _line || [[ -n $_line ]] ; do + + if echo "$_line" | grep -i -E "^\s*namespace\s+inbox\s+" > /dev/null 2>&1 ; then +echo "found!" + echo "## $_line" >> $_tmp_file + _found=true + continue + fi + + if $_found && echo "$_line" | grep -i -E "^\s*}" > /dev/null 2>&1 ; then + echo "## $_line" >> $_tmp_file + _found=false + continue + fi + + if $_found ; then + echo "## $_line" >> $_tmp_file + else + echo "$_line" >> $_tmp_file + fi +done < "/usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf" +if [[ "$?" != "0" ]] ; then + _failed=true +fi +mv /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf \ + /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf.ORIG +if [[ "$?" != "0" ]] ; then + _failed=true +fi +mv $_tmp_file /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf +if [[ "$?" != "0" ]] ; then + _failed=true +fi + + +#perl -i -n -p -e "s#^([ ]*)(namespace\ +inbox\ +{\ *)#\1\#\#\ \2#g" \ +# /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true +#perl -i -n -p -e "s#^([ ]*)(inbox\ +=\ +yes\ *)#\1\#\#\ \2#g" \ +# /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true +#perl -i -n -p -e "s#^([ ]*)(}\ *)#\1\#\#\ \2#g" \ +# /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true if ! $_failed ; then echo -e "$rc_done" @@ -1295,6 +1126,7 @@ fi ## - special_use = \Junk ## - } ## - +_failed=false echononl "\tAdjusting file 15-mailboxes.conf" if [ "$spam_folder" != "Junk" ]; then perl -i.ORIG -n -p -e "s#^([ ]*)(mailbox\ +Junk\ +{.*)#\1mailbox $spam_folder {\n\1 auto = subscribe\n\1 special_use = \\\Junk\n\1}\n\1\2#g" \ @@ -1325,6 +1157,7 @@ fi ## - !include auth-sql.conf.ext # comment all other includes ## - auth_username_translation = "%@" ## - +_failed=false echononl "\tAdjusting file 10-auth.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(disable_plaintext_auth\ +=.*)#\1\#\# \2\n\1disable_plaintext_auth = no#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-auth.conf || _failed=true @@ -1460,6 +1293,7 @@ fi ## - :msg,contains,"stored mail into mailbox"\ ## - -/var/log/dovecot.lmtp ## - +_failed=false echononl "\tAdjusting file 10-logging.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(log_path\ ?=.*)#\1\#\# \2\n\1log_path = syslog#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-logging.conf || _failed=true @@ -1555,6 +1389,7 @@ fi ## - lda_mailbox_autocreate = no ## - mail_plugins = $mail_plugins sieve ## - +_failed=false echononl "\tAdjusting file 15-lda.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(postmaster_address\ +=.*)#\1\#\# \2\n\1postmaster_address = $postmaster_address#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/15-lda.conf || _failed=true @@ -1579,6 +1414,7 @@ fi ## - lmtp_save_to_detail_mailbox = no ## - mail_plugins = $mail_plugins sieve ## - +_failed=false echononl "\tAdjusting file 20-lmtp.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(lmtp_save_to_detail_mailbox\ +=.*)#\1\#\# \2\n\1lmtp_save_to_detail_mailbox = no#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/20-lmtp.conf || _failed=true @@ -1601,6 +1437,7 @@ fi ## - mail_plugins = $mail_plugins imap_quota ## - imap_client_workarounds = delay-newmail ## - +_failed=false echononl "\tAdjusting file 20-imap.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(protocol imap {)#\1\2\n\n\1 ssl_cert = <$imap_cert\n\1 ssl_key = <$imap_key\n#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/20-imap.conf || _failed=true @@ -1626,6 +1463,7 @@ fi ## - mail_max_userip_connections = 10 ## - pop3_client_workarounds = outlook-no-nuls oe-ns-eoh ## - +_failed=false echononl "\tAdjusting file 20-pop3.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(protocol pop3 {)#\1\2\n\n\1 ssl_cert = <$pop_cert\n\1 ssl_key = <$pop_key\n#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/20-pop3.conf || _failed=true @@ -1660,6 +1498,7 @@ fi ## - expire2 = Trash.* ## - expire3 = $spam_folder ## - +_failed=false echononl "\tAdjusting file 90-plugin.conf" perl -i.ORIG -n -p -e "s#^([ ]*)(\#?\ ?setting_name\ +=.*)#\1\2\n\n\1autocreate = $spam_folder\n\1autocreate2 = Sent\n\1autocreate3 = Trash\n\1autocreate4 = Drafts\n\n\1autosubscribe = $spam_folder\n\1autosubscribe2 = Sent\n\1autosubscribe3 = Trash\n\1autosubscribe4 = Drafts\n\n\1expire_dict = proxy::expire\n\n\1expire = Trash\n\1expire2 = Trash.*\n\1expire3 = $spam_folder\n#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/90-plugin.conf || _failed=true @@ -1681,6 +1520,7 @@ fi ## - sieve_global = /usr/local/dovecot/etc/dovecot/sieve/global/ ## - recipient_delimiter = ## - +_failed=false echononl "\tAdjusting file 90-sieve.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(sieve\ ?=.*)#\1\#\# \2\n\1sieve = ~/.dovecot.sieve#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/90-sieve.conf || _failed=true @@ -1728,13 +1568,13 @@ fi echononl "\tPrecompile global sieve script" cd /usr/local/dovecot-${_version}/etc/dovecot/sieve/ /usr/local/dovecot-${_version}/bin/sievec \ - /usr/local/dovecot-${_version}/etc/dovecot/sieve/move-spam.sieve > /dev/null 2>&1 + /usr/local/dovecot-${_version}/etc/dovecot/sieve/move-spam.sieve > $log_file 2>&1 if [ "$?" = 0 ]; then echo -e "$rc_done" else echo -e "$rc_failed" - fatal "Precompiling sieve script failed" + error "$(cat $log_file)" fi @@ -2002,6 +1842,7 @@ EOF ## - ## - permit_sasl_authenticated, ## - + _failed=false echononl "\tAdjust /etc/postfix/main.cf" perl -i.`date +%Y-%m-%d-%H%M` -n -p -e "s#^(\s*)(virtual_transport\ *=.*)#\1\#\2\n\1virtual_transport = dovecot\ndovecot_destination_recipient_limit = 1#" \ /etc/postfix/main.cf || _failed=true @@ -2049,6 +1890,7 @@ echo -e "Change (from lda) to lmtp-service" ## - ## - add "lmtp" to protocols ## - +_failed=false echononl "\tAdd lmtp to protocols (dovecot.conf)" perl -i -n -p -e "s#^([ ]*)(protocols\ +=\ +.*)#\1\2 lmtp#" \ /usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true @@ -2089,6 +1931,7 @@ if $_new ; then ## - ## - add: ## - virtual_transport = lmtp:unix:private/dovecot-lmtp + _failed=false echononl "\tAdjust /etc/postfix/main.cf" perl -i -n -p -e "s#^(\s*)(virtual_transport\ *=.*)#\1\#\2\n\1virtual_transport = lmtp:unix:private/dovecot-lmtp#" \ /etc/postfix/main.cf || _failed=true @@ -2149,6 +1992,7 @@ echo -e "Configure quota support for dovecot" ## - } ## - } ## - +_failed=false echononl "\tConfigure dict service (10-master.conf)" perl -i -n -p -e "s#^([ ]*)(unix_listener\ +dict.*)#\1\2\n\1 mode = 0600\n\1 user = vmail#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-master.conf || _failed=true @@ -2166,6 +2010,7 @@ fi ## - dict { ## - quota = $db_driver:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext ## - } +_failed=false echononl "\tAdjust file dovecot.conf for (dict) quota service" perl -i -n -p -e "s#^([ ]*)(dict\ +{.*)#\1\2\n\1 quota = $db_driver:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext#g" \ /usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true @@ -2695,6 +2540,7 @@ fi ## - ## - mail_plugins = $mail_plugins imap_quota imap_acl ## - +_failed=false echononl "\tAdd mail_plugin imap_acl to 20-imap.conf" perl -i -n -p -e "s#^([ ]*)\#?\ ?(mail_plugins\ +=.*)#\1\#\# \2\n\1mail_plugins = \\\$mail_plugins imap_quota imap_acl#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/20-imap.conf || _failed=true @@ -2709,6 +2555,7 @@ fi ## - ## - mail_plugins = quota expire acl ## - +_failed=false echononl "\tAdd mail_plugin acl to 10-mail.conf" perl -i -n -p -e "s#^([ ]*)\#?\ ?(mail_plugins\ +=.*)#\1\#\# \2\n\1mail_plugins = quota expire acl#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/10-mail.conf || _failed=true @@ -2774,6 +2621,7 @@ fi ## - acl_shared_dict = proxy::acl ## - } ## - +_failed=false echononl "\tConfigure acl (90-acl.conf)" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(acl\ +=.*)#\1\#\# \2\n\n\1\# Without global ACLs:\n\1acl = vfile\n\n\1\# With global ACLs in /etc/dovecot/acls/ directory:\n\1\#acl = vfile:/etc/dovecot/acls\n\1\#acl = vfile:/etc/dovecot/acls:cache_secs=300#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/90-acl.conf || _failed=true @@ -2793,6 +2641,7 @@ fi ## - ... ## - } ## - +_failed=false echononl "\tAdjust file dovecot.conf for (dict) acl service" perl -i -n -p -e "s#^([ ]*)(dict\ +{.*)#\1\2\n\1 acl = $db_driver:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext#g" \ /usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true @@ -3163,6 +3012,7 @@ fi ## - .. ## - } ## - +_failed=false echononl "\tConfigure managesieve 20-managesieve.conf" perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(service managesieve-login\ +{.*)#\1service managesieve-login {#g" \ /usr/local/dovecot-${_version}/etc/dovecot/conf.d/20-managesieve.conf || _failed=true @@ -3243,4 +3093,5 @@ VServer Root System: " echo "" +rm -f "$log_file" exit