PSA apt install ssmtp will break your Virtualmin

| OS type and version | Debian 11 |
| Virtualmin version | 7.5 |

Just a small PSA for people using apt install someapp -y and maybe for those who press Y too fast without reading.

Was just looking for an alternative for bsd-mail/mailx and remembered something about ssmtp.
Tried installing it and was lucky I was not to tired or too in a hurry.
The darn ssmtp seems to hate Virtualmin, as it seems it wants to remove a lot of important apps, some of which I have no idea how would interfere with ssmtp.

# apt install ssmtp
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  awscli awstats bind9 bind9-utils clamav-testfiles db-util db5.3-util docutils-common dovecot-core dovecot-imapd dovecot-pop3d etckeeper fail2ban fcgiwrap galera-4 geoip-database jailkit libapache2-mod-fcgid libauthen-oath-perl libberkeleydb-perl libcgi-fast-perl libcgi-pm-perl libcommon-sense-perl libconfig-inifiles-perl libcrypt-openssl-bignum-perl
  libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl libdbd-mysql-perl libdbi-perl libdigest-bubblebabble-perl libexporter-tiny-perl libfcgi-bin libfcgi-dev libfcgi-perl libfcgi0ldbl libgeoip1 libhiredis0.14 libhtml-template-perl libimagequant0 libimport-into-perl libio-multiplex-perl libjson-perl libjson-xs-perl libmail-authenticationresults-perl
  libmail-dkim-perl libmail-spf-perl libmemcachedutil2 libmoo-perl libnet-cidr-perl libnet-dns-perl libnet-dns-sec-perl libnet-ip-perl libnet-rblclient-perl libnet-server-perl libnet-xwhois-perl libnetaddr-ip-perl libparse-syslog-perl libspf2-2 libstrictures-perl libterm-readkey-perl libtype-tiny-perl libtype-tiny-xs-perl libtypes-serialiser-perl
  libxml-simple-perl mariadb-client mariadb-client-10.5 mariadb-client-core-10.5 mariadb-server mariadb-server-10.5 mariadb-server-core-10.5 milter-greylist p7zip p7zip-full php-cgi php-fpm php-mbstring php-mysql php7.4-mbstring php8.2-mbstring php8.2-mysql postgrey procmail procmail-wrapper proftpd-basic proftpd-core proftpd-doc proftpd-mod-crypto
  proftpd-mod-wrap python3-authres python3-botocore python3-colorama python3-dateutil python3-dns python3-docutils python3-jmespath python3-olefile python3-pil python3-ply python3-pyasn1 python3-pygments python3-pyinotify python3-roman python3-rsa python3-s3transfer python3-spf python3-spf-engine python3-systemd python3-yaml quota re2c rsync sa-compile
  sasl2-bin socat spamassassin spamc
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libgnutls-openssl27
The following packages will be REMOVED:
  postfix postfix-pcre postfix-policyd-spf-python virtualmin-lamp-stack
The following NEW packages will be installed:
  libgnutls-openssl27 ssmtp
0 upgraded, 2 newly installed, 4 to remove and 0 not upgraded.
Need to get 448 kB of archives.
After this operation, 4,346 kB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
1 Like

You’d be surprised how many programs I’d remove on my home Debian if they didn’t want to wipe out Gnome-core. I use KDE but it really irks me. :wink: Debian and some others are now starting to look at flatpak as a default package management. Not thrilled with that either but might be an end to the buggy dependency chains that seem to go unchecked.

Why? You have Postfix and Virtualmin needs Postfix. ssmtp sounds like it want to replace your current smtp server.

That may have literally nothing to do with ssmtp… but instead with packages no longer properly marked as needed by the system. That’s my situation right now… after I did an OS upgrade.

Here’s how to see what currently “wants” to be autoremoved:

apt --dry-run autoremove

or, for a clean list:

apt --dry-run autoremove | grep -Po 'Remv \K[^ ]+'

…and if you just want a count, tack a word count to the end: |wc

That’s not it.

# apt --dry-run autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# apt install ssmtp
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  awscli awstats bind9 bind9-utils clamav-testfiles db-util db5.3-util docutils-common dovecot-core dovecot-imapd dovecot-pop3d etckeeper fail2ban fcgiwrap galera-4 geoip-database jailkit libapache2-mod-fcgid libauthen-oath-perl libberkeleydb-perl libcgi-fast-perl libcgi-pm-perl libcommon-sense-perl libconfig-inifiles-perl libcrypt-openssl-bignum-perl
  libcrypt-openssl-random-perl libcrypt-openssl-rsa-perl libdbd-mysql-perl libdbi-perl libdigest-bubblebabble-perl libexporter-tiny-perl libfcgi-bin libfcgi-dev libfcgi-perl libfcgi0ldbl libgeoip1 libhiredis0.14 libhtml-template-perl libimagequant0 libimport-into-perl libio-multiplex-perl libjson-perl libjson-xs-perl libmail-authenticationresults-perl
  libmail-dkim-perl libmail-spf-perl libmemcachedutil2 libmoo-perl libnet-cidr-perl libnet-dns-perl libnet-dns-sec-perl libnet-ip-perl libnet-rblclient-perl libnet-server-perl libnet-xwhois-perl libnetaddr-ip-perl libparse-syslog-perl libspf2-2 libstrictures-perl libterm-readkey-perl libtype-tiny-perl libtype-tiny-xs-perl libtypes-serialiser-perl
  libxml-simple-perl mariadb-client mariadb-client-10.5 mariadb-client-core-10.5 mariadb-server mariadb-server-10.5 mariadb-server-core-10.5 milter-greylist p7zip p7zip-full php-cgi php-fpm php-mbstring php-mysql php7.4-mbstring php8.2-mbstring php8.2-mysql postgrey procmail procmail-wrapper proftpd-basic proftpd-core proftpd-doc proftpd-mod-crypto
  proftpd-mod-wrap python3-authres python3-botocore python3-colorama python3-dateutil python3-dns python3-docutils python3-jmespath python3-olefile python3-pil python3-ply python3-pyasn1 python3-pygments python3-pyinotify python3-roman python3-rsa python3-s3transfer python3-spf python3-spf-engine python3-systemd python3-yaml quota re2c rsync sa-compile
  sasl2-bin socat spamassassin spamc
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libgnutls-openssl27
The following packages will be REMOVED:
  postfix postfix-pcre postfix-policyd-spf-python virtualmin-lamp-stack
The following NEW packages will be installed:
  libgnutls-openssl27 ssmtp
0 upgraded, 2 newly installed, 4 to remove and 0 not upgraded.
Need to get 448 kB of archives.
After this operation, 4,346 kB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.

I can understand Postfix.
But why spamassassin, proftpd, mariadb,bind, etc etc

No idea, this has nothing to do with virtualmin but whoever packaged ssmtp. Still I have no idea why you would do this. Virtualmin I don’t think would know how to work with it, your just trying to break the system.

Where did you see me stating it is Virtualmin’s fault?
This is a PSA for other noobs like me to take their time when trying to install stuff.
If you know the reason why ssmtp breaks so many packages, please contribute.
If you just want to increase your count post, continue.

1 Like

I gave the answer as explained to me above. Sloppy package management. Just because one package needs another it doesn’t mean the reverse is true. Gnome Widget X may need Gnome core but that doesn’t mean that Gnome core needs Gnome Widget X. It ran just fine before installing the widget. So having Gnome Widget X uninstall Gnome Core is just bad package management from the folks that packaged Gnome Widget X.

WOW.

A “wonderful” example of how badly things can be misconfigured.

This feels like more than sloppy package management.

Consider for a moment: what does ssmtp have to do with awstats, which is web server stuff?

virtualmin-lamp-stack is why all of the packages in a Virtualmin system are installed; it depends on everything in the Virtualmin “stack”. It’s right in the name.

Postfix is a dependency of Virtualmin; even if you won’t be hosting mail locally, you still need an MTA for stuff like notifications to work. By installing a mail server that conflicts with Postfix, you’re forcing virtualmin-lamp-stack to be removed.

Once virtualmin-lamp-stack is removed, everything that was installed as part of the Virtualmin installation is no longer “needed”, since you’ve uninstalled the package that “needed” them. They will be eligible for removal via an autoremove at that point.

So…don’t do that. ssmtp is not conflicting with awstats or bind9, etc. or forcing its removal. It is just removing the one package that caused it to be “needed” as far as apt and dpkg are concerned (because of the dependency on postfix in virtualmin-lamp-stack).

I recommend y’all get familiar with your package manager. It can have very dramatic effects if you use it without care. apt and dpkg is more…surprising than dnf and rpm.

1 Like

those other packages were installed as virtualmin-lamp-stack dependencies. since you’re removing virtualmin-lamp-stack (because of postfix confilict with ssmtp), package manager correctly marks those as autoremoved as well. so you have to inform package manager, these are still used and not to be marked as “autoremove” packages. a very simple solution to this, is :
install whatever package you need (iirc, ssmtp is unmaintained for years, better use msmtp-mta),
let it remove conflicting package, and
then do apt install proftpd awstats bind9 mariadb-client etc for packages you need, so package manager knows these are needed. (so, now = manually installed)
those won’t be on autoremove list again.

2c.

This topic was automatically closed 8 days after the last reply. New replies are no longer allowed.