install_update_dovecot-2.4.sh: intermediate version.

This commit is contained in:
2025-07-14 01:41:53 +02:00
parent 845325eac8
commit e00ba6f4ce

View File

@ -329,21 +329,29 @@ fi
_log_dir=${_src_base_dir}/log-dovecot-$_version
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Version Number of Pigeonhole to install"
echo ""
echo ""
_pigeonhole=
while [ "X$_pigeonhole" = "X" ]
do
if [[ $dovecot_major_version -eq 2 ]] && [[ $dovecot_minor_version -lt 4 ]] ; then
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Version Number of Pigeonhole to install"
echo ""
echo ""
_pigeonhole=
while [ "X$_pigeonhole" = "X" ]
do
echononl "Pigeonhole Version: "
read _pigeonhole
if [ "X$_pigeonhole" = "X" ]; then
echo -e "\n\t\033[33m\033[1mA version number is required!\033[m\n"
fi
done
done
else
_pigeonhole=${_version}
fi
echo ""
@ -452,7 +460,7 @@ echo ""
echo -e "\tCertificat base directory.....: $cert_base_dir"
echo -e "\tServer certificate............: $server_cert"
echo -e "\tServer key....................: $server_key"
if [[ $dovecot_major_version -ge 3 ]] \
if [[ $dovecot_major_version -gt 2 ]] \
|| ( [[ $dovecot_major_version -eq 2 ]] && [[ $dovecot_minor_version -ge 3 ]] ); then
echo -e "\tDH Parameters file............: $dh_pem_file"
fi
@ -476,6 +484,186 @@ echo ""
echo -e "\tInstall Plugin 'expire'.......: $plugin_expire"
echo ""
INSTALL_UPDATE_ENVIRONMENT_FILE="${_src_base_dir}/conf/install_update_dovecot-2.4..env"
cat <<EOF > ${INSTALL_UPDATE_ENVIRONMENT_FILE}
#!/usr/bin/env bash
EOF
echo "_version=\"${_version}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
cat <<EOF >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
log_file="${log_file}"
backup_date="${backup_date}"
_backup_crontab_file="${_backup_crontab_file}"
rc_done="${rc_done}"
rc_failed="${rc_failed}"
rc_skipped="${rc_skipped}"
rc_wait="${rc_wait}"
clean_up() {
if [[ -f "\$_backup_crontab_file" ]]; then
echononl "(Re)Install previously saved crontab from '\$_backup_crontab_file'.."
crontab \$_backup_crontab_file >> \$log_file 2>&1
if [[ \$? -eq 0 ]]; then
echo -e "\$rc_done"
else
echo -e "\$rc_failed"
error "\$(cat \$log_file)"
fi
fi
# Perform program exit housekeeping
rm -f $log_file
blank_line
exit $1
}
echononl(){
echo X\\c > /tmp/shprompt\$\$
if [ \`wc -c /tmp/shprompt\$\$ | awk '{print \$1}'\` -eq 1 ]; then
echo -e "\$*\\c" 1>&2
else
echo -en "\$*" 1>&2
fi
rm /tmp/shprompt\$\$
}
fatal(){
echo ""
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
clean_up 1
}
error(){
echo ""
echo -e "\t[ \033[31m\033[1mError\033[m ]: \$*"
echo ""
}
warn(){
echo ""
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: \$*"
echo ""
}
info(){
echo ""
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: \$*"
echo ""
}
blank_line() {
echo ""
}
echo_ok() {
echo -e "\033[71G[ \033[32mok\033[m ]"
}
echo_failed(){
echo -e "\033[71G[ \033[1;31mfailed\033[m ]"
}
echo_skipped() {
echo -e "\033[71G[ \033[33m\033[1mskipped\033[m ]"
}
EOF
echo "dovecot_main_version=${dovecot_main_version}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dovecot_major_version=${dovecot_major_version}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dovecot_minor_version=${dovecot_minor_version}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dovecot_patch_level=${dovecot_patch_level}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dovecot_minor_patch_level=${dovecot_minor_patch_level}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "_pigeonhole=\"${_pigeonhole}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "postmaster_address=\"${postmaster_address}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "systemd_support=${systemd_support}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "_src_base_dir=\"${_src_base_dir}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "postfix_main_cf=\"${postfix_main_cf}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "hostname=\"${hostname}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "ipv4=\"${ipv4}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "ipv6"=\"${ipv6}\" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "imap_listener_adresses=\"${imap_listener_adresses}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "imaps_listener_adresses=\"${imaps_listener_adresses}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "pop_listener_adresses=\"${pop_listener_adresses}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "pops_listener_adresses=\"${pops_listener_adresses}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "xmpp_listener=${xmpp_listener}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
if $xmpp_listener ; then
echo "xmpp_listener_addresses=\"${xmpp_listener_addresses}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "xmpp_listener_port=\"${xmpp_listener_port}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
fi
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "database=\"${database}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dbhost=\"${dbhost}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dbname=\"${dbuser}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dbuser=\"${dbuser}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "dbpassword=\"${dbpassword}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "PGPASSWORD=\"${dbpassword}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "MYSQL_CREDENTIALS=\"${DEFAULT_MYSQL_CREDENTIALS}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "default_pass_scheme=\"${default_pass_scheme}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "cert_base_dir=\"${cert_base_dir}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "server_cert=\"${server_cert}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "server_key=\"${server_key}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
if [[ $dovecot_major_version -ge 3 ]] \
|| ( [[ $dovecot_major_version -eq 2 ]] && [[ $dovecot_minor_version -ge 3 ]] ); then
echo "dh_pem_file=\"${dh_pem_file}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
fi
echo "imap_cert=\"${imap_cert}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "imap_key=\"${imap_key}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "pop_cert=\"${pop_cert}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "pop_key=\"${pop_key}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "spam_folder=\"${spam_folder}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "max_userip_connections"=${max_userip_connections} >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
echo "plugin_expire=${plugin_expire}" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
#echo "" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
if ! $update ;then
if [[ "$database" = "psql" ]] || [[ "$database" = "postgres" ]]; then
warn "Take care, your PostgreSQL configuration (pg_hba.conf) contains the following line:\n\n\t pg_hba.conf:\n\t \033[1mlocal all postfix trust\033[m"
@ -563,53 +751,10 @@ if $_new ; then
echo ""
echo ""
# echo ""
# echo "--"
# echo ""
# echo "Gib den Benutzernamen des/eines MySQL root user an.."
# echo ""
# _MYSQL_ROOT_USER=root
# MYSQL_ROOT_USER=
# while [ "X$MYSQL_ROOT_USER" = "X" ]
# do
# echononl "MySQL-User [${_MYSQL_ROOT_USER}]: "
# read MYSQL_ROOT_USER
# if [ "X$MYSQL_ROOT_USER" = "X" ]; then
# MYSQL_ROOT_USER=$_MYSQL_ROOT_USER
# fi
# done
#
#
# echo ""
# echo "--"
# echo ""
# echo "Gib ein Passwort für den root user an.."
# echo ""
# _MYSQL_ROOT_PW_1="X"
# _MYSQL_ROOT_PW_2="Y"
# while [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ]
# do
# echononl "Passworteingabe: "
# read -s _MYSQL_ROOT_PW_1
# echo
# if [ "X$_MYSQL_ROOT_PW_1" = "X" ]; then
# echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
# continue
# fi
# echononl "Passwortwiederholung: "
# read -s _MYSQL_ROOT_PW_2
# echo
# if [ "X$_MYSQL_ROOT_PW_2" = "X" ]; then
# echo -e "\n\t\033[33m\033[1mPasswortwiederholung erforderlich!\033[m\n"
# continue
# fi
# if [ "$_MYSQL_ROOT_PW_1" != "$_MYSQL_ROOT_PW_2" ];then
# echo -e "\n\t\033[33m\033[1mPassworteingaben sind nicht identisch!\033[m\n"
# else
# MYSQL_ROOT_PW=$_MYSQL_ROOT_PW_1
# fi
# done
# MYSQL_CREDENTIALS="-u ${MYSQL_ROOT_USER} -p${MYSQL_ROOT_PW}"
if [[ "${MYSQL_CREDENTIALS}" != "${DEFAULT_MYSQL_CREDENTIALS}" ]] ; then
echo "MYSQL_CREDENTIALS=\"${MYSQL_CREDENTIALS}\"" >> ${INSTALL_UPDATE_ENVIRONMENT_FILE}
fi
fi
fi
@ -1102,7 +1247,7 @@ fi
cd ${_src_base_dir}
echo ""
echononl "\tExtracting dovecot-${dovecot_main_version}-pigeonhole-${_pigeonhole}.tar.gz.."
echononl "\tExtracting ${dovecot_pigeonhole_archiv}.."
gunzip < ${_src_base_dir}/${dovecot_pigeonhole_archiv} | tar -C ${_src_base_dir} -xf -
if [ "$?" = 0 ]; then
echo -e "$rc_done"
@ -1146,16 +1291,42 @@ fi
## -----------------
## --- Configure dovecot services
_failed=false
echo ""
echo -e "\033[1mConfigure Dovecot\033[m.."
#echo ""
#echo -e "\033[1mConfigure Dovecot\033[m.."
blank_line
## - Copy example config files to the config directory
## -
cp -r /usr/local/dovecot-${_version}/share/doc/dovecot/example-config/* \
/usr/local/dovecot-${_version}/etc/dovecot/
echononl "Copy example config files to the config directory.."
if [[ ${dovecot_major_version} -eq 2 ]] && [[ ${dovecot_minor_version} -lt 4 ]] ; then
cp -r /usr/local/dovecot-${_version}/share/doc/dovecot/example-config/* \
/usr/local/dovecot-${_version}/etc/dovecot/ > /dev/null 2>&1
if [ "$?" = 0 ]; then
echo -e "$rc_done"
else
echo -e "$rc_failed"
error Compiling Pigeonhole ManageSieve failed
fi
else
echo -e "$rc_skipped"
fi
echononl "Backup main configuration file 'dovecot.conf'.."
if [[ -f "/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf" ]] ; then
cp -a /usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf.ORIG > /dev/null 2>&1
if [ "$?" = 0 ]; then
echo -e "$rc_done"
else
echo -e "$rc_failed"
error Compiling Pigeonhole ManageSieve failed
fi
else
echo -e "$rc_skipped"
fi
blank_line
@ -1173,50 +1344,238 @@ done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
_failed=false
if [[ $dovecot_major_version -gt 2 ]] \
|| ( [[ $dovecot_major_version -eq 2 ]] && [[ $dovecot_minor_version -gt 3 ]] ); then
# - edit /usr/local/dovecot/etc/dovecot/dovecot.conf
# -
# - protocols {
# - imap = yes
# - lmtp = yes
# - pop3 = yes
# - sieve = yes
# - }
# -
# - base_dir = /run/dovecot
# - state_dir = /run/dovecot
# -
# - listen = $ipv4 $ipv6
# -
# - mail_home = /var/vmail/%{user | domain}/%{user | username}
# - mail_path = ~/Maildir
# - mail_driver = Maildir
# -
# - shutdown_clients = no
# -
_conf_file="/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf"
## - edit /usr/local/dovecot/etc/dovecot/dovecot.conf
## -
## - protocols = imap pop3 sieve
## - listen = $ipv4 $ipv6
## - base_dir =/run/dovecot/
## - state_dir = /run/dovecot
## - shutdown_clients = no
## -
## - dict {
## - expire = $db_driver:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext
## - }
## -
echononl "\tAdjust file dovecot.conf.."
if [[ -n "$ipv6" ]]; then
_protocols_block="protocols {\n imap = yes\n lmtp = yes\n pop3 = yes\n sieve = yes\n}"
if [[ -n "$ipv6" ]]; then
_listen="$ipv4 $ipv6"
else
_listen="$ipv4"
fi
_base_dir="/run/dovecot"
_state_dir="/run/dovecot"
_mail_home="/var/vmail/%{user | domain}/%{user | username}"
_mail_driver="Maildir"
_mail_path="~/Maildir"
_shutdown_clients="no"
echononl "\tAdjust file dovecot.conf.."
# # Delete all lines that begin with !include and also delete the following line
# # if it is empty or contains only whitespace.
# #
# sed -i '/^!include/ {
# N
# /^\(!include.*\n[[:space:]]*\)$/d
# /^!include.*/d
# }' "${_conf_file}" || _failed=true
# Delete all lines beginning with !include, together with all comment lines
# directly preceding it (#...) - even several in a row, and also the line
# following it if it is empty or only contains whitespace.
#
awk '
{
zeile[NR] = $0
typ[NR] = "keep"
if ($0 ~ /^[[:space:]]*#/) typ[NR] = "comment"
if ($0 ~ /^[[:space:]]*$/) typ[NR] = "empty"
if ($0 ~ /^[[:space:]]*!include/) typ[NR] = "include"
}
END {
for (i = 1; i <= NR; i++) {
if (typ[i] == "include") {
# Vorherige Kommentarzeilen löschen
j = i - 1
while (j > 0 && typ[j] == "comment") {
typ[j] = "delete"
j--
}
# Include-Zeile löschen
typ[i] = "delete"
# Nachfolgende Leerzeile löschen (falls vorhanden)
if (typ[i+1] == "empty") {
typ[i+1] = "delete"
}
}
}
for (i = 1; i <= NR; i++) {
if (typ[i] != "delete") print zeile[i]
}
}
' "${_conf_file}" > "${_conf_file}.tmp" && mv "${_conf_file}.tmp" "${_conf_file}"
if grep -qE '^\s*protocols\s*{' "${_conf_file}"; then
sed -i "/^\s*protocols\s*{/,/^}/c\
${_protocols_block}" ${_conf_file} || _failed=true
else
echo -e "\n${_protocols_block}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*listen\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(listen\ ?=.*)#listen = ${_listen}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nlisten = ${_listen}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*base_dir\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(base_dir\ ?=.*)#base_dir = ${_base_dir}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nbase_dir = ${_base_dir}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*state_dir\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(state_dir\ ?=.*)#state_dir = ${_state_dir}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nstate_dir = ${_state_dir}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*mail_home\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(mail_home\ ?=.*)#mail_home = ${_mail_home}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nmail_home = ${_mail_home}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*mail_path\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(mail_path\ ?=.*)#mail_path = ${_mail_path}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nmail_path = ${_mail_driver}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*mail_driver\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(mail_driver\ ?=.*)#mail_driver = ${_mail_driver}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nmail_driver = ${_mail_driver}" >> "${_conf_file}" || _failed=true
fi
if grep -qE '^\s*shutdown_clients\s*=' "${_conf_file}"; then
perl -i -n -p -e "s#^(\s*)\#?\ ?(shutdown_clients\ ?=.*)#shutdown_clients = ${_shutdown_clients}#g" \
"${_conf_file}" || _failed=true
else
echo -e "\nshutdown_clients = ${_shutdown_clients}" >> "${_conf_file}" || _failed=true
fi
cat <<EOF >> "${_conf_file}"
# Most of the actual configuration gets included below. The filenames are
# first sorted by their ASCII value and parsed in that order. The 00-prefixes
# in filenames are intended to make it easier to understand the ordering.
!include_try conf.d/*.conf
# A config file can also tried to be included without giving an error if
# it's not found:
!include_try local.conf
EOF
if ! $_failed ; then
echo -e "$rc_done"
else
echo -e "$rc_failed"
error "Adjusting Adjusting file /usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf failed"
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Interupted by user"
fi
else
## - edit /usr/local/dovecot/etc/dovecot/dovecot.conf
## -
## - protocols = imap pop3 sieve
## - listen = $ipv4 $ipv6
## - base_dir =/run/dovecot/
## - state_dir = /run/dovecot
## - shutdown_clients = no
## -
## - dict {
## - expire = $db_driver:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext
## - }
## -
echononl "\tAdjust file dovecot.conf.."
if [[ -n "$ipv6" ]]; then
perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(listen\ ?=.*)#\1\#\# \2\n\1listen = $ipv4 $ipv6#g" \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true
else
else
perl -i.ORIG -n -p -e "s#^([ ]*)\#?\ ?(listen\ ?=.*)#\1\#\# \2\n\1listen = $ipv4#g" \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true
fi
perl -i -n -p -e "s#^([ ]*)\#?\ ?(protocols\ ?=.*)#\1\#\# \2\n\1protocols = imap pop3 sieve#g" \
fi
perl -i -n -p -e "s#^([ ]*)\#?\ ?(protocols\ ?=.*)#\1\#\# \2\n\1protocols = imap pop3 sieve#g" \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true
perl -i -n -p -e "s#^([ ]*)\#?\ ?(base_dir\ ?=.*)#\1\#\# \2\n\1base_dir = /run/dovecot/\n\nstate_dir = /run/dovecot#g" \
perl -i -n -p -e "s#^([ ]*)\#?\ ?(base_dir\ ?=.*)#\1\#\# \2\n\1base_dir = /run/dovecot/\n\nstate_dir = /run/dovecot#g" \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true
perl -i -n -p -e "s#^([ ]*)\#?\ ?(shutdown_clients\ ?=.*)#\1\#\# \2\n\1shutdown_clients = no#g" \
perl -i -n -p -e "s#^([ ]*)\#?\ ?(shutdown_clients\ ?=.*)#\1\#\# \2\n\1shutdown_clients = no#g" \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true
if $plugin_expire ; then
if $plugin_expire ; then
perl -i -n -p \
-e "s#^([ ]*)(dict\ +{.*)#\1\2\n\1 expire = $db_driver:/usr/local/dovecot/etc/dovecot/sql-dict.conf.ext#g" \
/usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf || _failed=true
fi
fi
if ! $_failed ; then
if ! $_failed ; then
echo -e "$rc_done"
else
else
echo -e "$rc_failed"
fatal "Adjusting Adjusting file /usr/local/dovecot-${_version}/etc/dovecot/dovecot.conf failed"
fi
fi
blank_line
echononl "Proceed instllation [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
if $_new ; then