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

Reply via email to