Call for Testers: Roundcube 1.7-beta & Updated Mail Templates

Yup, that is how I check too, I mean all functionalities etc. After that I comment here, all working or not. :slight_smile:

Everything updated wonderfully on several servers.
I wish there was a script like this for updating phpMyAdmin to the latest version.

Thanks!

curl -fsSL https://7j.gg/upgpma | sudo bash -s --

@sahsanu when updating HestiaCP to 1.9.5 the roundcube version got downgraded to 1.6.15 (used your script to update to v1.7.x)

[ ! ] Upgrading Roundcube to version 1.6.15…

Your script has changed the mail templates etc. - is this “downgrade” ok?

When I now go to a webmail.xy.com adress of my server I only get the SUCCESS index page (not roundcube anymore).

And can we now again choose to use that 1.6.15 version or use your roundcube script again to upgrade to v1.7.x now is still ok (again)?

Update: When using your script again now, it only detects already the newest v1.7.1

USE THIS SCRIPT ONLY IN A TEST SYSTEM !!!

Do you want to continue? [y/N]: y
[ ! ] Error: New version 1.7.1 is minor or equal to current version 1.7.1

Use this to reinstall 1.7.1 and update the mail templates:

sed -i 's/1\.7\.1/1.7.0/' /var/lib/roundcube/program/include/iniset.php
curl -fsSLm15 https://7j.gg/updrc17 | sudo bash -s --

thanks, your script run without any errors.

What is really strange now is that every webmail.xy.com adress of my used domains ends in an net::ERR_CERT_COMMON_NAME_INVALID error now :thinking: (the original domain without webmail subdomain still works as it should)… and I didn’t change any DNS entries. Any idea?

Rebuilding the mail domains is removing the nginx.ssl.conf file. I don’t know the reason yet, I’m checking it now.

I’ve found the bug. Try this fix and let me know whether it solves the issue before I open a PR.

sed -i.ori 's/"\$WEBMAIL")/"WEBMAIL")/' /usr/local/hestia/bin/v-rebuild-mail-domain
for user in $(/usr/local/hestia/bin/v-list-users plain | cut -f1); do if [[ "$("/usr/local/hestia/bin/v-list-user" "$user" json | jq -r '.[]|.U_MAIL_DOMAINS')" -ge 1 ]]; then echo "${B}[ + ]${N} Rebuilding mail domains for user $user"; /usr/local/hestia/bin/v-rebuild-mail-domains "$user";fi;done

Getting syntax error. -bash: syntax error near unexpected token ;'`

That’s because you use bash and I use zsh:

Use this:

sed -i.ori 's/"\$WEBMAIL")/"WEBMAIL")/' /usr/local/hestia/bin/v-rebuild-mail-domain
for user in $(/usr/local/hestia/bin/v-list-users plain | cut -f1); do if [[ "$("/usr/local/hestia/bin/v-list-user" "$user" json | jq -r '.[]|.U_MAIL_DOMAINS')" -ge 1 ]]; then echo "${B}[ + ]${N} Rebuilding mail domains for user $user"; /usr/local/hestia/bin/v-rebuild-mail-domains "$user";fi;done

That one worked here too :+1:

Thanks @sahsanu

I’ve created this PR to fix the issue with Hestia 1.9.5 and webmail ssl conf:

Hi,

Only just updated Roundcube to 1.7.1 on my server using the given script. But I’m only getting a “Oops… something went wrong!” error when trying to access it.

In the nginx logs, the only related entry I find says server error 500 426.

Any suggestion on where else to look for the issue at hand would be very welcome.

Thanks
Stefan

Show the entire line of the log.

Show your versions:

curl -fsSLm15 https://7j.gg/hcpver | bash -s --

Also, show the output of the rebuild, if your user is stefan and the domain is example.net.

v-rebuild-mail-domain stefan example.net
systemctl restart nginx apache2

Also.

cat /etc/nginx/conf.d/domains/webmail.example.net.conf
cat /etc/nginx/conf.d/domains/webmail.example.net.ssl.conf

Sure. I replaced the domain-names and ips, though.

Log:

[30/May/2026:14:30:23 +0200] "GET / HTTP/2.0" 500 426 "https://my.maindomain.tld:8083/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36"

Notice that this is the main domain of my server, not the domain I call RoundCube on. I tried webmail on my main domain, which resulted in the same log entry and error on screen.

Versions:

Software                 Version
--------                 -------
OS            Ubuntu 24.04.4 LTS
Hestia                     1.9.6
Hestia-nginx              1.30.2
Hestia-php                8.4.21
FileGator                 7.14.3
Nginx                     1.31.1
Apache2                   2.4.58
PHP8.4                    8.4.21
PHP8.3                    8.3.31
Awstats                      7.9
Exim4                       4.97
Dovecot                   2.3.21
Spamassassin               4.0.0
Clamav                     1.4.4
Roundcube                  1.7.1
Vsftpd                     3.0.5
Bind9                    9.18.39
Mariadb                  11.4.12
phpMyAdmin                 5.2.3
Fail2ban                   1.0.2

Rebuild:

There I got no output whatsoever.

Webmail Conf:

server {
        listen      my.ip.addr:80;
        server_name letterman.mydomain.net mail.mydomain.net;
        root        /var/lib/roundcube/public_html;
        index       index.php index.html index.htm;
        access_log  /var/log/nginx/domains/letterman.mydomain.net.log combined;
        error_log   /var/log/nginx/domains/letterman.mydomain.net.error.log error;

        include /home/mydomain/conf/mail/mydomain.net/nginx.forcessl.conf*;

        location ~ /\.(?!well-known\/) {
                deny all;
                return 404;
        }

        location ~ ^/(README.md|config|temp|logs|bin|SQL|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
                deny all;
                return 404;
        }

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header SCRIPT_NAME "";
                proxy_set_header PATH_INFO $request_uri;
                proxy_pass http://my.ip.addr:8080;
        }

        location @fallback {
                proxy_pass http://my.ip.addr:8080;
        }

        location /error/ {
                alias /var/www/document_errors/;
        }

        include /home/mydomain/conf/mail/mydomain.net/nginx.conf_*;
}

Webmail SSL Conf:

server {
        listen      my.ip.addr:443 ssl;
        server_name letterman.mydomain.net mail.mydomain.net;
        root        /var/lib/roundcube/public_html;
        index       index.php index.html index.htm;
        access_log  /var/log/nginx/domains/letterman.mydomain.net.log combined;
        error_log   /var/log/nginx/domains/letterman.mydomain.net.error.log error;

        ssl_certificate     /home/mydomain/conf/mail/mydomain.net/ssl/mydomain.net.pem;
        ssl_certificate_key /home/mydomain/conf/mail/mydomain.net/ssl/mydomain.net.key;
        #Commented out ssl_stapling directives due to Lets Encrypt ending OCSP support in 2025
        #ssl_stapling        on;
        #ssl_stapling_verify on;

        # TLS 1.3 0-RTT anti-replay
        if ($anti_replay = 307) { return 307 https://$host$request_uri; }
        if ($anti_replay = 425) { return 425; }

        location ~ /\.(?!well-known\/) {
                deny all;
                return 404;
        }

        location ~ ^/(README.md|config|temp|logs|bin|SQL|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
                deny all;
                return 404;
        }

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header SCRIPT_NAME "";
                proxy_set_header PATH_INFO $request_uri;
                proxy_ssl_server_name on;
                proxy_ssl_name $host;
                proxy_pass https://my.ip.addr:8443;
        }

        location @fallback {
                proxy_ssl_server_name on;
                proxy_ssl_name $host;
                proxy_pass https://my.ip.addr:8443;
        }

        location /error/ {
                alias /var/www/document_errors/;
        }

        proxy_hide_header Upgrade;

        include /home/mydomain/conf/mail/mydomain.net/nginx.ssl.conf_*;
}

Thanks
Stefan

But that’s what you get in log web visiting letterman.maindomain.tld?

I need to see the log:

cat /var/log/nginx/domains/letterman.maindomain.tld.error.log

Did you restart nginx and apache?

systemctl restart nginx apache2

Yes.

I also checked the error.log for both domains. They are empty.

And, yes, I definitely restarted nginx and apache2.

I do get a second line in the logs, though:

[30/May/2026:16:52:45 +0200] "GET /favicon.ico HTTP/2.0" 404 315 "https://letterman.maingdomain.tld/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36"

For now I thought this unrelated. :thinking:

Thanks,
Stefan

About @stefan issue.

In /var/log/apache2/error.log we could see this error:

[Sat May 30 17:46:30.420373 2026] [php:error] [pid 1346843] [client 203.0.113.13:0] PHP Fatal error:  Uncaught Error: Call to undefined function mb_internal_encoding() in /var/lib/roundcube/program/lib/Roundcube/bootstrap.php:82\nStack trace:\n#0 /var/lib/roundcube/program/include/iniset.php(71): require_once()\n#1 /var/lib/roundcube/public_html/index.php(40): require_once('...')\n#2 {main}\n  thrown in /var/lib/roundcube/program/lib/Roundcube/bootstrap.php on line 82

That means that php module mbstring is not installed, but it is installed (php8.4-mbstring). Checking the Apache2 conf we saw that it is not using mpm_event, instead it is using mpm_prefork and the apache php module:

root@shed:~# dpkg -l | grep apache2-mod-php
ii  libapache2-mod-php8.5                 8.5.6-3+ubuntu24.04.1+deb.sury.org+1             amd64        server-side, HTML-embedded scripting language (Apache 2 module)

To solve it and use the default php-fpm installed by Hestia and with mpm_event:

a2dismod php8.5
a2dismod mpm_prefork
a2enmod mpm_event 
systemctl restart apache2

That fixed the issue.

Hello. Version 1.7.1 has become stable. Should I include it in the update instead of sticking with 1.6.16?

You should use 1.6.x until Hestia adds support for 1.7.x