Bug 2355049 - Upgrading to exim-4.98.1 caused exim.service to revert to disabled and exim did not then start after a reboot
Summary: Upgrading to exim-4.98.1 caused exim.service to revert to disabled and exim d...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: exim
Version: 42
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: David Woodhouse
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-03-26 13:06 UTC by Brian Morrison
Modified: 2025-11-04 18:36 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-11-04 18:36:10 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Brian Morrison 2025-03-26 13:06:29 UTC
Description of problem:

Upgrading from exim-4.98 to exim-4.98.1 caused exim.service to revert to disabled and exim did not then start after a reboot. I did not see any indication of this in the console output when the dnf upgrade was run.

Version-Release number of selected component (if applicable):

exim-4.98.1

How reproducible:

Happened once, which was enough. Did not attempt to reproduce.

Actual results:

exim daemon not running after upgrade and reboot

Expected results:

exim running normally with exim.service enabled as it was previously

Additional info:

Needed to run 'sudo systemctl enable exim' and 'sudo systemctl start exim' to return things to normal.

Comment 1 Brian Morrison 2025-03-26 14:16:07 UTC
I have just built exim-4.98.2 rpms locally (new exim CVE fix) and exactly the same change occurs where the exim.service is reset to disabled after the rpms are upgraded.

Comment 2 Brian Morrison 2025-03-26 16:11:14 UTC
And, as expected, the same with the official Fedora rpms.

Comment 3 Brian Morrison 2025-04-10 18:32:42 UTC
This is what the package scripts are for this version, it seems all of the sections have || : after the exim.service lines.

Is that right?


$ rpm -q --scripts exim
preinstall scriptlet (using /bin/sh):
# Copy TLS certs from old location to new -- don't move them, because the
# config file may be modified and may be pointing to the old location.
if [ ! -f /etc/pki/tls/certs/exim.pem -a -f /usr/share/ssl/certs/exim.pem ] ; then
   cp /usr/share/ssl/certs/exim.pem /etc/pki/tls/certs/exim.pem
   cp /usr/share/ssl/private/exim.pem /etc/pki/tls/private/exim.pem
fi

exit 0
postinstall scriptlet (using /bin/sh):

 
if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then 
    # Initial installation 
    /usr/lib/systemd/systemd-update-helper install-system-units exim.service || : 
fi 


alternatives --install /usr/bin/sendmail mta /usr/bin/sendmail.exim 10 \
	--slave /usr/bin/mailq mta-mailq /usr/bin/mailq.exim \
	--slave /usr/bin/runq mta-runq /usr/bin/runq.exim \
	--slave /usr/bin/rsmtp mta-rsmtp /usr/bin/rsmtp.exim \
	--slave /usr/bin/rmail mta-rmail /usr/bin/rmail.exim \
	--slave /etc/pam.d/smtp mta-pam /etc/pam.d/exim \
	--slave /usr/bin/newaliases mta-newaliases /usr/bin/newaliases.exim \
	--slave /usr/lib/sendmail mta-sendmail /usr/lib/sendmail.exim \
	--slave /usr/share/man/man1/mailq.1.gz mta-mailqman /usr/share/man/man8/exim.8.gz \
	--initscript exim
preuninstall scriptlet (using /bin/sh):

 
if [ $1 -eq 0 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then 
    # Package removal, not upgrade 
    /usr/lib/systemd/systemd-update-helper remove-system-units exim.service || : 
fi 

if [ $1 = 0 ]; then
	alternatives --remove mta /usr/bin/sendmail.exim
fi
postuninstall scriptlet (using /bin/sh):

 
if [ $1 -ge 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then 
    # Package upgrade, not uninstall 
    /usr/lib/systemd/systemd-update-helper mark-restart-system-units exim.service || : 
fi 

if [ $1 -ge 1 ]; then
	mta=`readlink /etc/alternatives/mta`
	if [ "$mta" == "/usr/bin/sendmail.exim" ]; then
		alternatives --set mta /usr/bin/sendmail.exim
	fi
fi

Comment 4 Zbigniew Jędrzejewski-Szmek 2025-05-13 12:33:42 UTC
> Upgrading from exim-4.98 to exim-4.98.1

PLEASE, always include the exact version. exim-4.98-1.fc40 is not the same as exim-4.98-4.fc42.
This is particularly relevant for enablement issues, since that is handled by package
scriptlets, so the release-dist part can be more important than the upstream version number.

Anyway, I don't see anything in the scriptlets which could cause the enablemement
state to be reset. As a test, I installed f40 in a chroot, ran systemctl enable exim,
and then upgraded (exim-4.97.1-5.fc40.x86_64 to exim-4.98.2-1.fc42.x86_64).
The service remains enabled…

Comment 5 Brian Morrison 2025-05-13 13:19:53 UTC
Thanks for looking at this, and apologies for not providing all the package version information. FTAOD this has only happened since I upgraded to the F42 beta and then the release.

As you say, the scriptlets don't seem to show any reason why this shouldn't work. I also found out what the || : means so it's not that.

I'm now wondering if this might be related to the sbin->bin changes in some way, I also have another strange problem with clamav-freshclam where nothing is being written to a log file that has been just fine for every Fedora release until the F42 upgrade.

Comment 6 Brian Morrison 2025-10-06 15:06:59 UTC
I note that something similar is being reported for postfix updates here:

https://bugzilla.redhat.com/show_bug.cgi?id=2363937

Could this be something similar to what I am seeing here? It is still happening, I had to reenable exim when I upgraded from F42 to F43 beta.

Comment 7 Brian Morrison 2025-11-04 18:18:08 UTC
This problem has now been resolved due to updates to chkconfig that can be linked from the bug shown in https://bugzilla.redhat.com/show_bug.cgi?id=2355049#c6


Note You need to log in before you can comment on or make changes to this bug.