diff --git a/setup/webmail.sh b/setup/webmail.sh index db7e31aa..0be0e1f8 100755 --- a/setup/webmail.sh +++ b/setup/webmail.sh @@ -23,7 +23,8 @@ echo "Installing Roundcube (webmail)..." apt_install \ dbconfig-common \ php${PHP_VER}-cli php${PHP_VER}-sqlite3 php${PHP_VER}-intl php${PHP_VER}-common php${PHP_VER}-curl php${PHP_VER}-imap \ - php${PHP_VER}-gd php${PHP_VER}-pspell php${PHP_VER}-mbstring libjs-jquery libjs-jquery-mousewheel libmagic1 + php${PHP_VER}-gd php${PHP_VER}-pspell php${PHP_VER}-mbstring libjs-jquery libjs-jquery-mousewheel libmagic1 \ + sqlite3 # Install Roundcube from source if it is not already present or if it is out of date. # Combine the Roundcube version number with the commit hash of plugins to track @@ -134,7 +135,7 @@ cat > $RCM_CONFIG < ~256 bits for AES-256, see above -\$config['plugins'] = array('html5_notifier', 'archive', 'zipdownload', 'managesieve', 'jqueryui', 'persistent_login', 'carddav'); +\$config['plugins'] = array('html5_notifier', 'archive', 'zipdownload', 'password', 'managesieve', 'jqueryui', 'persistent_login', 'carddav'); \$config['skin'] = 'elastic'; \$config['login_autocomplete'] = 2; \$config['login_username_filter'] = 'email'; @@ -184,10 +185,9 @@ cp ${RCM_PLUGIN_DIR}/password/config.inc.php.dist \ tools/editconf.py ${RCM_PLUGIN_DIR}/password/config.inc.php \ "\$config['password_minimum_length']=8;" \ "\$config['password_db_dsn']='sqlite:///$STORAGE_ROOT/mail/users.sqlite';" \ - "\$config['password_query']='UPDATE users SET password=%D WHERE email=%u';" \ - "\$config['password_dovecotpw']='/usr/bin/doveadm pw';" \ - "\$config['password_dovecotpw_method']='SHA512-CRYPT';" \ - "\$config['password_dovecotpw_with_method']=true;" + "\$config['password_query']='UPDATE users SET password=%P WHERE email=%u';" \ + "\$config['password_algorithm']='sha512-crypt';" \ + "\$config['password_algorithm_prefix']='{SHA512-CRYPT}';" # so PHP can use doveadm, for the password changing plugin usermod -a -G dovecot www-data @@ -209,6 +209,16 @@ php$PHP_VER ${RCM_DIR}/bin/updatedb.sh --dir ${RCM_DIR}/SQL --package roundcube chown www-data:www-data $STORAGE_ROOT/mail/roundcube/roundcube.sqlite chmod 664 $STORAGE_ROOT/mail/roundcube/roundcube.sqlite +# Patch the Roundcube code to eliminate an issue that causes postfix to reject our sqlite +# user database (see https://github.com/mail-in-a-box/mailinabox/issues/2185) +sed -i.miabold 's/^[^#]\+.\+PRAGMA journal_mode = WAL.\+$/#&/' \ +/usr/local/lib/roundcubemail/program/lib/Roundcube/db/sqlite.php + +# Because Roundcube wants to set the PRAGMA we just deleted from the source, we apply it here +# to the roundcube database (see https://github.com/roundcube/roundcubemail/issues/8035) +# Database should exist, created by migration script +sqlite3 $STORAGE_ROOT/mail/roundcube/roundcube.sqlite 'PRAGMA journal_mode=WAL;' + # Enable PHP modules. phpenmod -v $PHP_VER imap restart_service php$PHP_VER-fpm