If you are in a search for an email archiving solution, MailPiler is a recommend solutions.

If you didn't heard about MailPiler, check out the comparison with MailArchiva for a full list of features.

Unfortunately, install documentation is missing some details for specific Debian versions, so here is our updated guide.

This document is targeted at advanced users, so it might miss some obvious bits and pieces for a daily SysAdmin.

Note: There are some missing packages on Debian 9.x Stretch, so we recommend Debian Jessie instead.

It might work with Ubuntu or other Debian derivatives.

In the following guide, we'll use mailarchive.example.com as the FQDN of the email archiving server.

You should replace it with your own hostname and your own domain. Make sure you have a public DNS record pointing to the server.

The web application will be available on port 8080 instead of 80.

Note: Make sure you are familiar with install documentation.

Step 1: OS and Preparation

  • Install Debian 8.x Jessie
  • Setup a large disk space for /var
  • Select only SSH Server and optionally, standard system utilities packages
  • Make sure the hostname matches your FQDN:
cat /etc/hostname
cat /etc/hostname   localhost   mailarchive.example.com mailarchive
cat /etc/mailname

Step 2: Initial Setup

# Optional: Set APT to not recommended packages
echo -e "APT
\tInstall-Recommends "false";
" > /etc/apt/apt.conf.d/20norecommends
# Removing default packages
apt -y purge bind9 eject manpages-de manpages-es manpages-fr manpages-it manpages-pl manpages-pt vim vim-common vim-runtime vim-tiny exim4-base exim4-config exim4-daemon-light
# Setting up repository: Debian Jessie
echo -e "deb http://ftp.debian.org/debian jessie main contrib non-free
deb http://ftp.debian.org/debian/ jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free" > /etc/apt/sources.list
# Setting up repository: Debian Jessie Backports
echo "deb http://http.debian.net/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list
# Updating system
apt -y update && apt -y upgrade
# Installing some tools and utilities
apt -y install sudo curl htop mc ntp ntpdate locate unzip file lftp figlet mtr-tiny dialog dnsutils lsb-release ca-certificates bash-completion

Step 3: Pre-install

See install documentation for details.

apt -V install apache2 apache2-utils build-essential catdoc checkinstall gettext libapache2-mod-php5 libltdl7 libmysqlclient-dev libmysqlclient18 libodbc1 libpq5 libpst4 libssl-dev libtre-dev libtre5 libwrap0-dev libzip2 memcached mysql-client mysql-common mysql-server openssl php5-curl php5-gd php5-ldap php5-memcache php5-mysql poppler-utils sysstat tnef unrtf

Step 4: Add piler user

groupadd piler
useradd -g piler -m -s /bin/sh -d /var/piler piler
usermod -L piler
chmod 755 /var/piler

Step 5: Setup Apache2

We'll remove the default-site and default ports, and setup a single virtual host on port 8080.

mkdir -p ~/config-backup/apache2
mv /etc/apache2/ports.conf ~/config-backup/apache2
touch /etc/apache2/ports.conf

a2dissite 000-default
a2enmod rewrite

AllowOverride for /var/piler/www

cat /etc/apache2/conf-available/piler-override.conf
<Directory /var/piler/www/>
        Options Indexes FollowSymLinks
        AllowOverride All 
        Require all granted
a2enconf piler-override

Add Apache2 site configuration, see /contrib/webserver/piler-apache-2.x.conf

cat /etc/apache2/sites-available/piler.conf
NameVirtualHost *:8080
Listen 8080

<VirtualHost *:8080>
    ServerName mailarchive.example.com

    DocumentRoot "/var/piler/www"

    <Directory /var/piler/www>
        Require all granted
        AllowOverride all

    ErrorLog ${APACHE_LOG_DIR}/mailarchive.example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/mailarchive.example.com_access.log combined
a2ensite piler

Do not restart Apache2 yet.

Step 6: Get and unpack the installation archive

wget --no-check-certificate https://bitbucket.org/jsuto/piler/downloads/piler-1.3.4.tar.gz
tar zxvf piler-1.3.4.tar.gz
cd piler-1.3.4

Step 7: Start cooking

./configure --localstatedir=/var --with-database=mysql --enable-tcpwrappers

It seems there is an error on postinstall.sh, so you should replace @sh with @bash.

sed -i "s|@sh |@bash |g" Makefile
su -c 'make install'

Step 8: Start postinstall

Do not forget your MySQL root password and generate a password for MySQL piler user.

make postinstall

Use www-data as webserver group.

Make sure the process finish without errors.

Step 9: (Auto)start services

cd init.d
make install
update-rc.d rc.piler defaults
update-rc.d rc.searchd defaults

Optionally, set SMTP banner id hostid:

sed -i "s|hostid=piler.yourdomain.com|hostid=mailarchive.example.com|g" /usr/local/etc/piler/piler.conf

Start services

service rc.searchd start
service rc.piler start

Step 10: Starting web application

If you have an error about ${prefix}/etc/piler/config-site.php replace in/var/piler/www/config.php`:

require_once '${prefix}/etc/piler/config-site.php';


require_once dirname(__FILE__) . '/config-site.php';

Update your web application config:

cat /var/piler/www/config-site.php

$config['SITE_NAME'] = 'mailarchive.example.com';
$config['SITE_URL'] = 'http://' . $config['SITE_NAME'] . ':8080';
$config['DIR_BASE'] = '/var/piler/www/';

$config['SMTP_DOMAIN'] = 'mailarchive.example.com';
$config['SMTP_FROMADDR'] = 'no-reply@mailarchive.example.com';
$config['ADMIN_EMAIL'] = 'admin@mailarchive.example.com';

$config['DB_USERNAME'] = 'piler';
$config['DB_DATABASE'] = 'piler';
$config['DB_PASSWORD'] = '';

$config['TIMEZONE'] = 'Europe/Bucharest';

You can check default values in /var/piler/www/config.php.

Give permission to the webserver to write the tmp/ directory (Do not confuse it with the system /tmp directory!)

chown www-data:www-data /var/piler/www/tmp

Restart Apache2

service apache2 restart

Switch to your browser and navigate to http://mailarchive.example.com:8080.

Default login is admin@local:pilerrocks.

Step 11: Configure your Postfix mail server to forward a copy of each email it receives or sends

Note: As a security guideline, make sure your firewall accepts incoming connections on port 25 only from desired Postfix instances.

On Postfix, setup always_bcc to your mailarchive.example.com:

nano /etc/postfix/main.cf
always_bcc = archive@mailarchive.example.com

Don't forget to check syslog on both servers for any possible errors :)

Also, if you're need our support, you can contact us.