Hi, I had the same problem (mails were not displayed in the mail client any more after upgrading from Bullseye to Bookworm).
What worked in the end for me was this: - restored /var/lib/cyrus/ and /var/spool/cyrus/ from backup, to the old state from before the Debian upgrade. - built Cyrus 3.4.6, and installed and started it temporarily. The mails were now visible in the mail client again. - upgraded to the normal Cyrus version from Bookworm. The mails were still visible in the mail client. And since I had already kept the server running for some hours with the broken mail archive, I then also restored the getmail6 status files (/var/lib/getmail) to the state from before the Debian upgrade. This caused getmail to re-fetch the mails that were missing. I don't know how to detect whether the mail archive was really migrated successfully; but since Cyrus 3.6.1 is now running and Thunderbird can connect and sees all mails, I suppose the migration was successful? Regarding the build of Cyrus 3.4.6, in the end I built it using the existing Debian packaging data, and using the "debocker" tool to build inside a clean Docker container. Unfortunately debocker will always run the "lintian" tool to check the package, which failed for me with error "E: cyrus-common: depends-on-obsolete-package Depends: lsb-base". I didn't know how to fix this error or how to correctly disable the lintian step; so I edited the debocker files to disable this check. Very ugly, but it worked. So from my notes, these must have been the steps that I did for building the Cyrus 3.4.6 Debian package: - installed "debocker" and "devscripts" packages: `sudo apt install debocker devscripts` - downloaded the Debian cyrus-imapd packaging info: `debcheckout cyrus-imapd` - downloaded the original source package: `wget https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-3.4.6/cyrus-imapd-3.4.6.tar.gz` - renamed the source package so it would be found in the next steps: `mv cyrus-imapd-3.4.6.tar.gz cyrus-imapd_3.4.6.orig.tar.gz` - `cd cyrus-imapd/` - started new Git branch at the state of Cyrus 3.4.3-4: `git checkout -b cyrus-3.4.6 debian/3.4.3-4` - added changelog entry: `dch -v '3.4.6-1.1' "use new upstream version 3.4.6"` - the warning about missing DEBEMAIL can be ignored - committed change: `git commit debian/changelog -m 'update changelog'` - modified the "debocker" template files to disable the lintian step: `sudo nano /usr/share/debocker/bundle-files/steps/05-build` and then commented out the line for "lintian --pedantic --display-info *.changes" - created build bundle: `debocker bundle --image debian:bookworm -f "-b -us -uc"` - did the actual build: `sudo debocker build-bundle ../cyrus-imapd_3.4.6-1.1_bundle.tar` - whether the "sudo" is necessary depends on your local Docker setup - the build took a while (half an hour or more?); and then there was a message like "LOG Build successful", and there were lots of Cyrus packages in the current directory. I then copied cyrus-clients_3.4.6-1.1_amd64.deb, cyrus-common_3.4.6-1.1_amd64.deb and cyrus-imapd_3.4.6-1.1_amd64.deb to the server and installed them. Remember to undo the change to the debocker file (/usr/share/debocker/bundle-files/steps/05-build) after the build. Kind regards, Oliver