In panel migrations, two recurring incidents usually come together: mailbox quota mismatch and outbound failures with SMTPUTF8 used when not advertised.
This runbook documents the exact steps used to restore stable operation.
1) Quota mismatch diagnosis
Measure real Maildir usage:
du -h --max-depth=1 /home/user/mail/domain.com/ | sort -h
Check Dovecot quota state:
doveadm quota get -u mailbox@domain.com
Large mismatch usually indicates stale maildirsize indexes.
2) Quota remediation workflow
Backup index list:
find /home/user/mail/domain.com/ -name "maildirsize" -print > /root/maildirsize-backup-list.txt
Remove stale indexes:
find /home/user/mail/domain.com/ -name "maildirsize" -exec rm -f {} \;
Recalculate quota:
doveadm quota recalc -u mailbox@domain.com
Refresh cPanel cache:
/scripts/update_db_cache
Validate result:
doveadm quota get -u mailbox@domain.com
du -sh /home/user/mail/domain.com/mailbox/
3) SMTPUTF8 failure root cause
Error:
SMTPUTF8 used when not advertised
Cause: destination does not advertise SMTPUTF8 but sender path negotiates UTF-8 requirements.
Find affected events:
grep -i "smtputf8" /var/log/exim_mainlog | tail -n 200
4) Exim-side compatibility adjustment
Review smtputf8_advertise_hosts in WHM Exim Advanced Editor.
When broad legacy interoperability is required, keep it empty and restart Exim:
exim -bV | head -n 40
systemctl restart exim
Queue cleanup for old stuck items:
exim -bp | grep -i "smtputf8" | awk '{print $3}' | xargs -r exim -Mrm
5) Post-migration security/audit step
Bulk-admin audit with WP-CLI:
#!/bin/bash
OUTPUT="admins-audit.csv"
echo "Domain,User,Email,Role" > "$OUTPUT"
for user in $(ls /var/cpanel/users/); do
PUBLIC_HTML="/home/$user/public_html"
if [ -d "$PUBLIC_HTML" ] && [ -f "$PUBLIC_HTML/wp-config.php" ]; then
DOMAIN=$(grep "^DNS=" /var/cpanel/users/"$user" | cut -d= -f2)
sudo -u "$user" -i -- wp user list --role=administrator --format=csv --path="$PUBLIC_HTML" >> "$OUTPUT"
fi
done
6) Acceptance checklist
duanddoveadm quotavalues aligned.- no quota errors in panel/mail flow.
- no new SMTPUTF8 delivery failures.
- Exim queue stable.
- legacy destination interoperability restored.
Quota mismatch and SMTPUTF8 are distinct classes of issues, but both are common in migration windows. Handling them together reduces recurrence and speeds up service stabilization.
This post is licensed under CC BY-NC.
Comments
Join the discussion below.
Comments are not configured yet. Add Cusdis settings in /assets/json/config/blog-comments-config.json.