Roundcube 500 herstel van de SQLite-database en Toegang na cPanel v120/v126-updates

Gewijzigd op Za, 31 Mei om 9:09 AM

Onmiddellijke Herstel voor v120/v126 Updateprobleem
Als je onlangs bent geüpdatet naar cPanel v120 of v126 en geen toegang hebt tot Roundcube vanwege een verouderd SQLite-schema, voer dan de volgende auto-reparatie-opdracht uit als root om onmiddellijk de fout te herstellen (in plaats van te wachten op de cron-taak):

/usr/local/cpanel/scripts/autorepair recoverymgmt


Stap 1. Identificeer de Roundcube-database voor één mailbox


Stap 1.1 – Vind het pad van de mailboxdatabase

Roundcube maakt een per-gebruiker SQLite-bestand aan in de homedirectory van de cPanel-gebruiker. Voor elke mailbox heet dat bestand

$EMAIL_USER.rcube.db

en bevindt zich hier:

/home/$CPANELUSER/etc/$DOMAIN/$EMAIL_USER.rcube.db
  • $CPANELUSER = cPanel-accountgebruikersnaam (bijv. johndoe)

  • $DOMAIN = het domein voor die mailbox (bijv. example.com)

  • $EMAIL_USER = het lokale deel van de mailbox (bijv. info voor info@example.com)


Stap 1.2 – Vind het pad van de systeemaccountdatabase

Roundcube houdt ook een database bij voor de cPanel-systeemlogin (zonder domein). Dat bestand heet

$CPANELUSER.rcube.db

en bevindt zich hier:

/home/$CPANELUSER/etc/$CPANELUSER.rcube.db

Vervang $CPANELUSER door de werkelijke cPanel-gebruikersnaam.


Stap 1.3 – Toon huidige en back-upbestanden

Om zowel de actieve databases als eventuele automatisch aangemaakte back-ups voor een mailbox en de systeemaccount te controleren, voer je uit:

ls -l /home/$CPANELUSER/etc/"$DOMAIN"/"$EMAIL_USER".rcube.db* /home/$CPANELUSER/etc/"$CPANELUSER".rcube.db*

Voorbeelduitvoer:

-rw------- 1 johndoe johndoe  512000 Jan 21 19:52 info.rcube.db
-rw------- 1 johndoe johndoe  466944 Jul 31  2024 info.rcube.db.1722461863
-rw------- 1 johndoe johndoe  491520 Oct 31  2024 info.rcube.db.1730428585
-rw------- 1 johndoe johndoe  505856 Jan 10  2025 info.rcube.db.1731234567
-rw------- 1 johndoe johndoe  490000 Feb 15  2025 johndoe.rcube.db
-rw------- 1 johndoe johndoe  480000 Dec 10  2024 johndoe.rcube.db.1734200000
  • Bestanden eindigend op *.rcube.db (zonder tijdstempel) zijn actieve databases.

  • Bestanden eindigend op *.rcube.db.TIMESTAMP zijn automatische back-ups (met Unix-epoch-suffixen).


Stap 2. Back-up/Hernoem de huidige (mogelijk corrupte) database


Waarschuwing: Maak altijd een back-up (hernoemen) van het “huidige” databasebestand voordat je het overschrijft of verwijdert.


Stap 2.1 – SSH naar de server als root

ssh root@jouw-cpanel-server

Stap 2.2 – Navigeer naar de Roundcube-directory van de mailbox

cd /home/"$CPANELUSER"/etc/"$DOMAIN"/

Stap 2.3 – Toon bestaande Roundcube-databasebestanden voor die mailbox

ls -l "$EMAIL_USER".rcube.db*

Voorbeelduitvoer:

-rw------- 1 johndoe johndoe 512000 Jan 21 19:52 info.rcube.db
-rw------- 1 johndoe johndoe 466944 Jul 31  2024 info.rcube.db.1722461863
-rw------- 1 johndoe johndoe 491520 Oct 31  2024 info.rcube.db.1730428585
-rw------- 1 johndoe johndoe 505856 Jan 10  2025 info.rcube.db.1731234567

Stap 2.4 – Hernoem (verplaats) de huidige database naar een bestand met datum

Voeg vandaag’s datum toe (in YYYYMMDD-formaat) om het als back-up te bewaren:

mv "$EMAIL_USER.rcube.db" "$EMAIL_USER.rcube.db.$(date +%Y%m%d)" -v

Verwachte uitvoer (verbose):

'info.rcube.db' -> 'info.rcube.db.20250531'

Na deze hernoeming blijven alleen de bestanden met de suffix .rcube.db.TIMESTAMP in die directory staan.


Stap 2.5 – Herhaal voor de systeemaccountdatabase

Ga naar de map etc zonder domeinvermelding en hernoem het systeemaccountbestand:

cd /home/"$CPANELUSER"/etc/ mv "$CPANELUSER.rcube.db" "$CPANELUSER.rcube.db.$(date +%Y%m%d)" -v

Verwachte uitvoer:

'johndoe.rcube.db' -> 'johndoe.rcube.db.20250531'

Stap 3. Zoek & herstel een geldige back-up


Roundcube slaat automatisch oudere versies van elke SQLite-database op als *.rcube.db.TIMESTAMP. Volg de onderstaande substappen om er een te herstellen.


Stap 3.1 – Toon beschikbare back-ups voor de mailbox

ls -l /home/"$CPANELUSER"/etc/"$DOMAIN"/*".rcube.db."*

Voorbeelduitvoer:

-rw------- 1 johndoe johndoe 466944 Jul 31  2024 info.rcube.db.1722461863
-rw------- 1 johndoe johndoe 491520 Oct 31  2024 info.rcube.db.1730428585
-rw------- 1 johndoe johndoe 505856 Jan 10  2025 info.rcube.db.1731234567
-rw------- 1 johndoe johndoe 502784 May  1  2025 info.rcube.db.1735803200

Identificeer de back-up met de meest recente timestamp of het grootste bestandsgrootte—dit is waarschijnlijk de gezondste kopie.


Stap 3.2 – Kopieer de gekozen back-up naar de actieve bestandsnaam

Stel dat je de back-up van 1 mei 2025 kiest (suffix 1735803200):

cp -p "info.rcube.db.1735803200" "info.rcube.db"

Met cp -p behoud je eigenaar en tijdstempels.


Stap 3.3 – Herstel eigendom en bestandsrechten

chown "$CPANELUSER":"$CPANELUSER" "info.rcube.db" chmod 600 "info.rcube.db"

Controleer met:

ls -l "info.rcube.db"

Verwachte uitvoer:

-rw------- 1 johndoe johndoe 502784 May  1 12:00 info.rcube.db

Stap 3.4 – Herstel de systeemaccountdatabase (indien nodig)

Ga naar /home/$CPANELUSER/etc en kopieer de meest recente back-up:

cd /home/"$CPANELUSER"/etc/ cp -p "johndoe.rcube.db.1734200000" "johndoe.rcube.db" chown johndoe:johndoe "johndoe.rcube.db" chmod 600 "johndoe.rcube.db"

Stap 3.5 – Controleer of Roundcube werkt

Stap 3.5.1 – Mailboxlogin

Log in op Webmail en selecteer Roundcube voor de mailbox. De foutmelding “no such table: carddav_accounts” zou verdwenen moeten zijn.


Stap 3.5.2 – Systeemaccountlogin

Log in als het cPanel-systeemaccount (zonder domein). Roundcube zou moeten laden met de herstelde systeemaccountdatabase.


Stap 4. Terugvaloptie: Verwijder & laat Roundcube de database opnieuw aanmaken


Als er geen geldige back-up bestaat of het herstellen nog steeds mislukt, verwijder dan het bestaande SQLite-bestand zodat Roundcube bij de volgende login een nieuwe kan aanmaken.


Stap 4.1 – Verwijder het corrupte mailboxdatabasebestand

rm /home/"$CPANELUSER"/etc/"$DOMAIN"/"$EMAIL_USER".rcube.db

Stap 4.2 – Verwijder het corrupte systeemaccountdatabasebestand (indien aanwezig)

rm /home/"$CPANELUSER"/etc/"$CPANELUSER".rcube.db

Stap 4.3 – Zorg voor juist eigendom van de bovenliggende mappen

chown -R "$CPANELUSER":"$CPANELUSER" /home/"$CPANELUSER"/etc/"$DOMAIN"/ chmod 700 /home/"$CPANELUSER"/etc/"$DOMAIN"/ 
chown -R "$CPANELUSER":"$CPANELUSER" /home/"$CPANELUSER"/etc/ chmod 700 /home/"$CPANELUSER"/etc/

Stap 4.4 – Laat de gebruiker inloggen op Roundcube

Stap 4.4.1 – Mailboxlogin

Wanneer de mailboxgebruiker inlogt via Webmail, zal Roundcube automatisch een nieuwe info.rcube.db aanmaken.


Stap 4.4.2 – Systeemaccountlogin

Wanneer het systeemaccount inlogt (zonder domein), zal Roundcube automatisch een nieuwe johndoe.rcube.db aanmaken.

Daarna moeten gebruikers eventuele aangepaste mappen, adresboeken en voorkeuren opnieuw instellen.


Stap 5. Lijst elk aangetast cPanel-gebruikersnaam precies één keer


Om alle cPanel-gebruikers te vinden waarvan de Roundcube-log het bericht “no such table: carddav_accounts” bevat, voer je uit:

grep -l "no such table: carddav_accounts" /home/*/logs/roundcube/errors.log \  | sed -E 's#^/home/([^/]+)/logs/roundcube/errors.log$#\1#'
  • Dit geeft elke overeenkomende bestandsnaam één keer weer (-l laat grep alleen bestandsnamen tonen).

  • Vervolgens gebruikt sed een reguliere expressie om alleen de gebruikersnaam uit elk pad te halen en weer te geven.


Als je de volledige overeenkomende regels (gedetailleerd) voor een specifieke gebruiker nodig hebt, laat je de vlag -l weg:

grep "no such table: carddav_accounts" /home/elzisnl/logs/roundcube/errors.log

Gerelateerde Bronnen


How-To Restore a RoundCube SQLite Database backup

https://support.cpanel.net/hc/en-us/articles/360051956994-How-To-Restore-a-RoundCube-SQLite-Database-backup


v120/v126: Unable to access Roundcube after updates

https://support.cpanel.net/hc/en-us/articles/25294429672599-v120-v126-Unable-to-access-Roundcube-after-updates

Was dit artikel nuttig?

Dat is fantastisch!

Hartelijk dank voor uw beoordeling

Sorry dat we u niet konden helpen

Hartelijk dank voor uw beoordeling

Laat ons weten hoe we dit artikel kunnen verbeteren!

Selecteer tenminste een van de redenen
CAPTCHA-verificatie is vereist.

Feedback verzonden

We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren