On 19:36 Wed 17 Feb , Jaldhar H. Vyas wrote:
> On Wed, 17 Feb 2016, Apollon Oikonomopoulos wrote:
>
> >Package: dovecot-core
> >Version: 1:2.2.18-2+b1
> >Severity: normal
> >
> >Dear Maintainer,
> >
> >dovecot-core currently ships and enables (via dh_systemd_enable) two
> >units: dovecot.socket and dovecot.service. However, enabling
> >dovecot.socket by default is a bit problematic in this case, for the
> >following reasons:
> >
> >- dovecot.socket makes assumptions about the listening sockets; it
> > assumes an IMAP-only setup with dovecot listening on TCP ports 143
> > and 993, which may or may not be the case. Note that this is done
> > even if dovecot-imapd is not installed in the system.
> >
> >- invoke-rc.d, as used in the maintainer scripts, does not handle
> > socket units at all. This may cause unpredictable behavior during
> > package upgrades on busy servers, since dovecot.service is stopped in
> > prerm, but may be (re-)started anytime before the new packages have
> > been (fully) unpacked if it is triggered by the socket unit.
> >
> >- dh_systemd_start also does not start the socket unit by default,
> > while the socket unit will be started on the next boot,
> > differentiating boot-time and installation-time behavior.
> >
> >- dovecot.service is enabled and started anyway during boot, so using
> > socket activation for dovecot in this case seems to be redundant.
> >
> >IMHO, it is okay for dovecot.socket to be shipped with the package, but
> >it should not be enabled by default. Instead it should be left inactive
> >and up to the admin to decide whether to explicitly enable it or not.
> >
>
> I must admit I am not up to speed on how systemd works. I didn't know it
> was enabled. :-) What is the best way to install it but leave it inactive?
> Comment it out? Move it somewhere? Or something else?
Since dovecot.socket has been shipped since 2.2.17-1, I guess we should
continue shipping it. However, it can be excluded from enabling it
automatically by overriding dh_systemd_enable:
override_dh_systemd_enable:
dh_systemd_enable -pdovecot-core dovecot.service
dh_systemd_enable -pdovecot-core --no-enable dovecot.socket
Additionally, dovecot-core.postinst could disable dovecot.socket on
upgrade if both it and dovecot.service are enabled.
I can commit a fix for this in the repository, after doing some tests
for the latter part.
Regards,
Apollon