All in all, it was easy. Just one big caveat regarding apache2. Can’t say if it was PEBKAC any more. But read below.
1. Check for obsolete packages
As stated in the official Upgrade Guide: Do an audit!
# dpkg --audit
Really, do it! And fix the non-compliant packages.
2. Install the Distribution Kernel
Again, really do it. Otherwise the dist-upgrade will fail on udev, if your custom kernel doesn’t have CONFIG_SIGNALFD, CONFIG_FHANDLE and whatnot built in. You can override it, but then it won’t boot. So better be safe.
3. Update and dist-upgrade
Change /etc/apt/sources.list to use jessie. Then
# apt-get update
# apt-get dist-upgrade
Carefully watch for configfile-conflicts. Esp. Apache and cyrus! Keep the config for:
- /etc/cyrus.conf
- /etc/imapd.conf
Don’t overwrite them! We’ll fix them later!
4. Reboot
Reboot into the new system, get systemd running. Again, don’t even think to go on without a reboot
5. Fix cyrus and postfix
The command for cyr_* has changed. Now it’s so cyrus <*>, so move the old config out of the way and replace it with .dpkg-dist. Then diff it and change the relevant line(s). That would be especially:
lmtpunix cmd="lmtpd" \
listen="/var/spool/postfix/cyrus-socket/lmtp" \
prefork=0 maxchild=20
with
lmtp cmd="lmtpd -a" listen="localhost:lmtp" prefork=0 maxchild=20
So don’t listen on an AF_UNIX socket any more but on a network socket. For this to work you need to add this line to /etc/services:
lmtp 24/tcp
LMTP doesn’t seem to be a well known port, whatever…
Now for postfix: Change /etc/postfix/main.cf accordingly:
mailbox_transport = lmtp:inet:localhost
I.e. listen on a network socket instead of AF_UNIX. This way you don’t have to bother with permissions on the socket file, and it’s IPv6-enabled as a bonus 🙂
6. Fix apache2
Make sure all your files in sites-available end in *.conf! Otherwise they won’t be loaded! I learned the hard way, wondering why SSL-Connections failed because there was no SSL. Check what VHosts are loaded with:
# apache2ctl -t -D DUMP_VHOSTS
If that shows no Vhosts, you don’t have any! Fix it. BTW, NameVirtualHost is obsolete. Remove it. So seems to be gnutls…
Create an IPv6-enabled-VHost like this:
<VirtualHost _default_:443>
...
</VirtualHost>