I've seen this today on both Centos 7 and 8.
When going to a domain -> server configuration -> SSL certificates -> copy to Dovecot then Virtualmin doesn't apply/restart Dovecot properly.
For some reason Virtualmin does not use the systemd to start/stop/restart, instead it seems to be doing something else, not clear.
In Webmin/Dovecot module config I see it needs a "init script name". I placed a dummy script in init.d, merely redirecting to systemd calls, this seems to have sort of fixed it, but not quite. Systemd would still not "see" Dovecot as running though there would be some processes running.
Even with the dummy init script in place "Copy cert to dovecot" would still not complete properly alas, unsure why.
The last thing I tried that seems to have remedied it (I think!..) is to modify dovecot/dovecot-lib.pl and replaced line 363 (of start_dovecot function) with:
&system_logged("service dovecot restart 2>&1 </dev/null &");
What could be done to fix this situation? All it needs to do is call systemd or "service dovecot start/stop/restart"
Other modules config ask for start/stop command, but the config for Dovecot module is very lacking.