# MailPiler-Installation

## **<span class="fontstyle0">Schritt-für-Schritt-Anleitung</span>**

<span class="fontstyle0">Mail Piler ist eine Open-Source Software zur Archivierung von E-Mails. Im Business Umfeld muss zum Beispiel jede E-Mail für 10 Jahre archiviert werden. In der folgenden Anleitung werde ich die Installation unter Rocky Linux 9 vornehmen. Da Rocky von RedHat abstammt, bietet es einen sehr langen Support und eignet sich hervorragend für Archivierungsanwendungen. Die Distro bietet noch offiziellen Support bis 2032.</span><span class="fontstyle0"> </span>**<span class="fontstyle0">  
</span>**

### **<span class="fontstyle0">Installation des OS</span>**

<span class="fontstyle0">Als erstes wird eine [Installations ISO](https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.1-x86_64-minimal.iso) benötigt. Ich habe meiner VM 2 Kerne, 2GB RAM und 32GB Speicher zugewiesen, diese Ressourcen können aber auch jederzeit angepasst werden. Unter Proxmox ( auf einem anderen Hypervisor habe ich es noch nicht getestet ) funktioniert die Installation nur, wenn der CPU Typ auf Host gestellt ist. Nachdem der Installer gebootet ist, müssen folgende Einstellungen festgelegt werden:</span>

- <span class="fontstyle0">Sprache Tastaturlayout (en entfernen, DE hinzufügen)</span>
- <span class="fontstyle0">root Passwort</span><span class="fontstyle0">  
    </span>
- <span class="fontstyle0">Software Selection =&gt; Minimal Install  
    </span>
- <span class="fontstyle0">Zielfestplatte   
    </span>

<span class="fontstyle0">Nun kann das Betriebssystem installiert werden. Nach dem ersten Starten muss das System noch auf den aktuellsten Stand gebracht werden.  
</span><span class="fontstyle0">Dies geschieht mit dem folgenden Befehl:   
</span>

`<span class="fontstyle0">dnf update</span>`

<span class="fontstyle0">Nun müssen die extra Packages für RHEL aktiviert werden.  
Dies geschieht mit dem folgenden Befehl:</span>

`<span class="fontstyle0">dnf -y install epel-release</span>`

<span class="fontstyle0">Nachdem wir die extra Pakete installiert haben, geht es mit ein paar allgemeinen Tools, die auf jedem System meiner Meinung nach installiert werden sollten, weiter:</span>

`<span class="fontstyle0">dnf install htop wget nano git tar</span>`

<span class="fontstyle0">Nachdem dies erledigt ist, müssen wir der VM noch einen Hostnamen geben. Dazu die Datei </span><span class="fontstyle2">`/etc/hostname` </span><span class="fontstyle0">bearbeiten und den Namen eintragen (bspw. mit nano). Abschließend muss zum Übernehmen des Namens noch die VM neugestartet werden.</span>

### <span class="fontstyle0">**Abhängigkeiten installieren**   
</span>

<span class="fontstyle0">Nachdem das Betriebssystem nun aufgesetzt ist, kann mit der eigentlichen Installation begonnen werden. Ein Teil der Abhängigkeiten kann direkt als Paket heruntergeladen werden, der Rest muss so auf dem System installiert werden.   
</span>

`dnf install <a href="https://repo.manticoresearch.com/manticore-repo.noarch.rpm">https://repo.manticoresearch.com/manticore-repo.noarch.rpm</a>`  
`dnf install openssl mariadb mariadb-server php php-ldap php-gd php-memcache php-pdo php-mysqli`  
`php-curl php-zip nginx manticore manticore-extra tre-devel sysstat python3 gcc poppler libytnefdevel memcached tcp_wrappers-libs openssl-devel zlib-devel mariadb-connector-c-devel`  
`systemctl enable --now sysstat`  
`wget http://ftp.wagner.pp.ru/pub/catdoc/catdoc-0.95.tar.gz tar`  
`-xzf catdoc-0.95.tar.gz`  
`cd catdoc-0.95`  
`./configure`  
`make`  
`make install`  
`cd ..`  
rm catdoc-0.95 -Rf  
`dnf install <a href="http://repo.iotti.biz/CentOS/9/x86_64/unrtf-0.21.9-17.el9.lux.x86_64.rpm">http://repo.iotti.biz/CentOS/9/x86_64/unrtf-0.21.9-17.el9.lux.x86_64.rpm</a>`  
[http://repo.iotti.biz/CentOS/7/x86\_64/xlhtml-0.5-19.el7.lux.x86\_64.rpm](http://repo.iotti.biz/CentOS/7/x86_64/xlhtml-0.5-19.el7.lux.x86_64.rpm)  
`https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/tcp_wrappers-devel-7.6-`  
`77.el7.x86_64.rpm`  
`https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/tcp_wrappers-libs-7.6-`  
`77.el7.x86_64.rpm https://dl.rockylinux.org/pub/rocky/9/CRB/x86_64/os/Packages/l/libzip-devel-`  
`1.7.3-7.el9.x86_64.rpm`  
`systemctl start mariadb`  
`systemctl enable mariadb`  
`systemctl start nginx`  
`systemctl enable nginx`  
`systemctl disable manticore`  
`systemctl stop manticore`  
`chown nginx:nginx /var/lib/php/session -R`

### **<span class="fontstyle0">SELinux deaktivieren</span>**

<span class="fontstyle0">`nano /etc/sysconfig/selinux`  
`SELINUX=disabled`  
`/etc/selinux/config`  
`SELINUX=disabled`</span>

### <span class="fontstyle0">**Firewall Ports öffnen**</span>

<span class="fontstyle0">`firewall-cmd --zone=public --permanent --add-port=80/tcp`  
`firewall-cmd --zone=public --permanent --add-port=25/tcp`  
  
</span>

<span class="fontstyle0">Nun muss noch in <span class="fontstyle2">`/etc/php-fpm.d/www.conf` </span>der <span class="fontstyle2">`user` </span>und der <span class="fontstyle2">`group` </span>Parameter auf <span class="fontstyle2">`nginx` </span>geändert</span><span class="fontstyle0">werden. Anschließend den PHP-FPM Prozess mit <span class="fontstyle2">`systemctl restart php-fpm` </span>neu starten.   
</span>

### <span class="fontstyle0">**Piler installieren**   
</span>

<span class="fontstyle0">Nun sollten alle Abhängigkeiten auf dem System installiert sein und wir können mit der Installation des Pilers an sich weitermachen.  
</span>Dazu muss als Erstes ein neuer Nutzer angelegt werden:  
  
`groupadd piler`  
`useradd -g piler -m -s /bin/bash -d /var/piler piler`  
`usermod -L piler`  
`chmod 755 /var/piler`  
  
Nachdem der Nutzer angelegt ist, können wir weiterhin als root Piler bauen und installieren:  
  
`wget https://bitbucket.org/jsuto/piler/downloads/piler-1.4.1.tar.gz`  
`tar -xzf piler-1.4.1.tar.gz`  
`cd piler-1.4.1`  
`./configure --localstatedir=/var --with-database=mariadb`  
`make`  
`make install`  
`echo "/usr/local/lib" >> /etc/ld.so.conf`  
`ldconfig`  
  
Nun ist Mail Piler auf dem System installiert. Zur initialen Konfiguration müssen wir nun mit  
`OPENSSL_ENABLE_SHA1_SIGNATURES=1 make postinstall` den Konfigurationsassistenten durchlaufen.  
Dabei müssen die folgenden Optionen eingegeben werden:  
  
WebServer Gruppe: nginx  
MySQL Hostname: localhost  
MySQL Socket: /var/lib/mysql/mysql.sock  
MySQL Database: bestätigen  
MySQL Nutzername: bestätigen  
MySQL Piler Passwort: Zufallspasswort generieren  
MySQL Root Passwort: egal was, da socket Authentifizierung verwendet wird  
SMTP Relay Host: öffentlicher Domain des Mail Piler  
SMTP Port: 25  
2x mit y bestätigen  
  
Das Script sollte nun erfolgreich durchlaufen und zum Abschluss die Meldung `Done post`  
`installation tasks.` bringen. Nachdem der eigentliche Piler jetzt läuft, müssen wir den WebServer  
konfigurieren. Dazu habe ich eine fertige Konfiguration, welche wir nur einspielen müssen und  
anschließend den Nginx neustarten:  
  
`rm /etc/nginx/nginx.conf`  
`wget -O /etc/nginx/nginx.conf https://jonasled.de/download/mailpiler-nginx.conf`  
`systemctl restart nginx`  
  
Wenn alles gut gelaufen ist, sollte nun das Login über den Web Browser erreichbar sein.  
Auf der Oberflöche können wir uns nun mit `admin@local` als Nutzername und `pilerrocks` als  
Passwort anmelden. Falls es nach dem Login zu einem Redirect auf eine falsche Domain kommt,muss in der Datei `/usr/local/etc/piler/config-site.php` der `SITE_NAME` geändert werden. Hier wird  
aber noch nicht viel funktionieren, da die Dienste noch nicht funktionieren. Dazu müssen zuerst die  
Services und einige Dateien an der richtigen Stelle verlinkt werden und danach die Services  
gestartet werden:  
  
`ln -s /usr/local/sbin/piler /usr/sbin/piler`  
`ln -s /usr/local/sbin/piler-smtp /usr/sbin/piler-smtp`  
`ln -s /usr/local/etc/piler /etc/piler`  
`ln -s /usr/local/etc/piler/manticore.conf /usr/local/etc/piler/sphinx.conf`  
`ln -s /usr/local/libexec/piler/pilersearch.service /etc/systemd/system/pilersearch.service`  
`ln -s /usr/local/libexec/piler/piler.service /etc/systemd/system/piler.service`  
`ln -s /usr/local/libexec/piler/piler-smtp.service /etc/systemd/system/piler-smtp.service`  
`systemctl daemon-reload`  
`systemctl enable --now piler`  
`systemctl enable --now pilersearch`  
`systemctl enable --now piler-smtp`  
  
Nachdem die Dienste laufen, sollte nun auch die Administrator Oberfläche funktionieren.  
Hier kann auch unter administration =&gt; users ein Passwort für den auditor Nutzer festgelegt  
werden. Dieser darf alle E-Mails sehen. Um den Piler zu testen, können wir nun testweise eine EMail an diesen schicken. Die Empfängeradresse ist hierbei egal.  
  
Da der Piler nicht dauerhaft die E-Mails aktualisiert, kann dies nun bis zu einer Stunde dauern, bis  
die Test E-Mail in der Oberfläche auftaucht.  
Um dies zu beschleunigen, kann man auch die entsprechenden Befehle als Piler Nutzer ausführen:  
  
`# Als Piler Nutzer anmelden`  
`su piler`  
  
`/usr/bin/indexer --quiet tag1 --rotate --config /usr/local/etc/piler/manticore.conf`  
`/usr/bin/indexer --quiet note1 --rotate --config /usr/local/etc/piler/manticore.conf`  
`/usr/local/libexec/piler/indexer.delta.sh`  
  
Danach sollte in der Oberfläche, wenn man als Auditor Nutzer angemeldet ist, eine E-Mail  
erscheinen.

### **<span class="fontstyle0">Login via IMAP</span>**   


Damit sich auch Besitzer einer Mailbox am Piler anmelden können und auch E-Mails aus dem Piler  
wiederherstellen können, kann sich der Piler gegen einen IMAP Server authentifizieren. Dazu muss  
in der Datei `/usr/local/etc/piler/config-site.php` folgender Inhalt hinzugefügt und entsprechend  
angepasst werden:  
  
`$config['ENABLE_IMAP_AUTH'] = 1;`  
`$config['RESTORE_OVER_IMAP'] = 1;`  
`$config['IMAP_RESTORE_FOLDER_INBOX'] = 'INBOX';`  
`$config['IMAP_RESTORE_FOLDER_SENT'] = 'Sent';`  
`Login via IMAP$config['IMAP_HOST'] = '<HOST DES E-MAIL SERVERS>';`