Repair your mailboxes
- Edited
- Best Answerset by WalterH
grommunio has a tool gromox-mbck to repair the mailboxes. However, this tool is difficult to use because you have to specify the database directory for each check / repair. So I wrote a script that checks all mailboxes and repairs them with the parameter -p. It is important to know that the script does not delete anything, it only repairs the mapping in the ICS, so this repair is safe to use.
Installation:
The explanation of how to install the script is at the beginning of the script.Check and repair:
Run the script without parameters if you get similar messages like:== /var/lib/gromox/user/X/Y/exmdb/exchange.sqlite3 == ck_allocated_eids: f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23 f24 f25 f26 f27 f28 f29 [29 issues] ck_indices_present: /var/lib/gromox/user/X/Y/exmdb/exchange.sqlite3: 29 problems total
Run the script with the -p parameter and repair all mailboxes.
I hope this helps some grommunio administrators.
Disclaimer:
Use at your own risk.The script:
#!/bin/bash # # Check or repair all mailboxes with gromox-mbck # # Script to check or repair the ICS properties in all mailboxes # First, run this script without parameters, only if you see messages like: # # == /var/lib/gromox/user/X/Y/exmdb/exchange.sqlite3 == # ck_allocated_eids: f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23 f24 f25 f26 f27 f28 f29 [29 issues] # ck_indices_present: # /var/lib/gromox/user/X/Y/exmdb/exchange.sqlite3: 29 problems total # # Launch the script with the parameter -p to fix the issues. # # # (c) 2025 by Walter@Hofstaedtler.com # # 17.02.2025 WH, V 1.0, First release # # # Installation: # 1. Put this script in /scripts/manual/ as g_mbck.sh # 2. Convert the script to Linux LF with: # dos2unix /scripts/manual/g_mbck.sh # 3. Make the script executable with: # chmod +x /scripts/manual/g_mbck.sh # # Run the script and specify the required parameter, just -p. # # CYA="\033[0;36m"; YEL="\033[0;33m"; NORM="\033[0m" # MSG="Check" echo echo -e "${CYA}Check or repair all grommunio mailboxes on this system with gomox-mbck.${NORM}" echo -e "Use parameter ${YEL}-p${NORM} to start the repair, without -p the mailbox is only checked." if [ "$1" == "-p" ]; then echo -e "${YEL}-p is set, repair all mailboxes ...${NORM}" MSG="${YEL}Repair" fi echo # # Read all mailboxes in a variable mailboxes=$(grommunio-admin user query username maildir | grep "/user/" | grep "@" | awk '{print $1}') # Now iterate through all mailboxes # shellcheck disable=SC2068 for mailbox in ${mailboxes[@]}; do maildir=$(gromox-mbop -u "$mailbox" echo-maildir) if ! [ -d "$maildir" ]; then echo "Error: No Maildir/Access: $mailbox" >/dev/stderr err_dir=$((err_dir+1)) continue fi # echo -e "$MSG mailbox: ${CYA}$mailbox${NORM} ..." # shellcheck disable=SC2086 /usr/sbin/gromox-mbck "$maildir"/exmdb/exchange.sqlite3 $1 echo # done echo "Done." # # eof #