Preinstallation tasks

September 3, 2023 by Roberto Puzzanghera 0 comments

Before we start let's see how to prepare our machine for the installation. What follows is mostly a collection of hints that I extracted from the comments, so feel free to contribute.

On Debian 11, you may have to install at least these packages:

apt install build-essential autoconf automake libmariadb-dev default-libmysqlclient-dev libidn2-dev

You can decide to install a wider set of packages, if your installation doesn't provide the webserver and the database:

apt install sudo git autoconf automake build-essential libssl-dev \
libmariadb-dev default-libmysqlclient-dev mariadb-server \
libev-dev unzip help2man net-tools apache2 python-dev-is-python3 fcgiwrap \
apache2-utils libnet-ssleay-perl php php-fpm php-zip libidn2-dev

This is the list of packages to install on Ubuntu 22.04:

apt install build-essential autoconf automake libmariadb-dev libmariadb-dev-compat wget man help2man unzip psmisc libexpat-dev libidn2-dev

rc.local or systemd?

Maybe you are wondering if it is convenient to let systemd handle the boot of the daemontools, dovecot, spamassassin and so on. I strongly advise against using systemd, especially for daemontools or start/stop then by means of dedicated scripts (qmailctl for instance). Keep in mind that, if you let systemd manage daemontools and the other programs, you will not be able to use other control scripts like qmailctl and dovecotctl to manage the start and stop of services and that you will diverge from what is reported here. Therefore, expecially if you are a newby, I suggest to strictly follow this guide. The comments on this blog have many requests for help from users who have systemd supervising everything and then use qmailctl boot/stop/start causing overlaps and processes that fail due to the inability to acquire the supervise/lock files.

Installing rc.local as a systemd service

In the following guide, our services (not only qmail) will be launched at boot time via rc.local, which is dismissed on a systemd OS. So let's create a new rc.local executable and define it as a systemd service.

Create rc.local and make it executable:

cat > /etc/rc.local << __EOF__ 
#!/bin/bash -e 

__EOF__
chmod +x /etc/rc.local

Create the systemd service:

cat > /etc/systemd/system/rc-local.service << __EOF__ 
[Unit] 
Description=/etc/rc.local 
ConditionPathExists=/etc/rc.local 

[Service] 
Type=forking 
ExecStart=/etc/rc.local 
TimeoutSec=0 
StandardOutput=tty 
RemainAfterExit=yes 

[Install] 
WantedBy=multi-user.target 
__EOF__

Enable and start:

systemctl enable rc-local 
systemctl start  rc-local

Add a comment

Recent comments
Recent posts

RSS feeds