Installing mailcow mail server suite

So, Mailcow seems to be a new kid on the block of mail servers. In this post, I’ll attempt to perform an installation of a freshly installed DigitalOcean droplet. (Digitalocean provides resizable VPSes that are useful to perform development and hobbyist work like this. )

Step 1:
Create a Dogital Ocean droplet. I’ll try the minimum size of droplet.

Step 2:
Login to the VPS as root. I’ll assume that you’ve installed your favorite text editor. I’ll be using emacs.

wget -O – https://github.com/andryyy/mailcow/archive/v0.11.tar.gz | tar xfz –
Substitute 0.11 with the latest release number from https://github.com/andryyy/mailcow/releases/latest

emacs mailcow.config

Edit it with your own values. It’s a piece of cake.

After running the install, I got an error:

+ DEBIAN_FRONTEND=noninteractive
+ apt-get --force-yes -y install zip jq dnsutils python-setuptools libmail-spf-perl libmail-dkim-pertp php-net-socket php-net-url php-pear php-soap php5 php5-cli php5-common php5-curl php5-fpm php5-gdent mysql-server nginx-extras mailutils pyzor razor postfix-mysql postfix-pcre spamassassin spamc surl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogger-syslog-perl bsd-mailx
E: Unable to correct problems, you have held broken packages.
+ '[' 100 -ne 0 ']'
++ redb '[ERR]'
+++ tput bold
+++ tput setaf 1
+++ tput sgr0
++ echo '[ERR]'
+ echo '[ERR] - Package installation failed'
[ERR] - Package installation failed
+ exit 1

I tried running the command manually:

apt-get --force-yes -y install zip jq dnsutils python-setp-mail-mimedecode php-net-dime php-net-smtp php-net-socket php-net-url php-pear php-soap php5 php5-c5-sqlite libawl-php php5-xmlrpc mysql-client mysql-server nginx-extras mailutils pyzor razor postfixtchmail liblockfile-simple-perl libdbi-perl libmime-base64-urlsafe-perl libtest-tempdir-perl liblogg
Reading package lists... Done
Building dependency tree
Reading state information... Done
bzip2 is already the newest version.
curl is already the newest version.
curl set to manually installed.
libdbi-perl is already the newest version.
libdbi-perl set to manually installed.
mysql-client is already the newest version.
openssl is already the newest version.
openssl set to manually installed.
python-setuptools is already the newest version.
python-setuptools set to manually installed.
unzip is already the newest version.
unzip set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 postfix-mysql : Depends: postfix (= 2.11.3-1) but it is not going to be installed
 postfix-pcre : Depends: postfix (= 2.11.3-1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

So I determined the problematic line:

$grep -inr 'install zip jq dnsutils' *
includes/functions.sh:245:DEBIAN_FRONTEND=noninteractive apt-get --force-yes -y install zip jq dnsut

Edited the line to add postfix to the installation list, and reran installation:

[[email protected]] ~/build/mailcow-0.11 $emacs includes/functions.sh
[[email protected]] ~/build/mailcow-0.11 $./install.sh

You are reading this post on Joel G Mathew’s tech blog. Joel's personal blog is the Eyrie, hosted here.