I can’t get Dovecote to appear anywhere but unused modules. I installed it from Webmin, it is set to run at startup and the config file is properly linked to webmin. I tried restarting webmin, deleting it’s modules cache and restarting / refreshing.
The problem was… or at least the fix. Was that I was only using Webmin. When you add Virtualmin it works as intended, and that is what I wanted anyway.
It does not need the service running. Every module has its own way of checking, defined by the module itself, in the file install_check.pl, but it’s usually some config file in the Webmin core modules. It does not require it to be running, because that would mean any newly installed service would be hidden and not easy to find to configure and start it.
In the case of Dovecot, it checks for the existence of the dovecot command and the config file configured in the module configuration:
# install_check.pl
do 'dovecot-lib.pl';
# is_installed(mode)
# For mode 1, returns 2 if the server is installed and configured for use by
# Webmin, 1 if installed but not configured, or 0 otherwise.
# For mode 0, returns 1 if installed, 0 if not
sub is_installed
{
return 0 if (!&has_command($config{'dovecot'}) ||
!&get_config_file());
return $_[0] ? 2 : 1;
}