Mailarchivierung mit Piler

Ab dem 1.1.2017 gibt es eine allgemeine Pflicht für Betriebe auch die E-Mail elektronisch zu archivieren. Ich weiß zwar nicht wie das alle Betriebe in Deutschland hin bekommen sollen aber egal. Für unseren kleinen Shop brauche ich eine Lösung.

Die Bitkom hat in 10 Merksätzen die wesentlichen Punkte zusammengefasst. Auch diese Studie scheint mir hilfreich zu sein.

Jetzt bin ich kein Rechtsanwalt aber für mich liest sich das nach: Das beste ist es, wenn alle Mails separat und unverändert archiviert werden.

In verschiedenen Artikel (z.B.Linux Magazin 2013) wird Piler als eine sinnvolle Lösung beschrieben. Es gibt keinerlei Aussagen zur eine rechtlichen Zertifizierung aber alle Nachrichten der relevanten Mailadressen werden verschlüsselt, signiert und Nutzer können keine Nachrichten löschen. Damit sind für mich erst mal die technischen Anforderungen erfüllt bis ich etwas anderes höre.

Um die Administration und die Risiken, die durch einen solchen zusätzlichen Dienst entstehen, zu minimieren soll im ersten Schritt ein reines Archiv ohne Zugriff für Endanwender auf einem separaten kleinen Server eingerichtet werden. Wenn mal irgendwann jemand da rein schauen will mache ich dazu weitere Gedanken.

Das bedeutet:

  • kein genereller Zugriff auf eine Weboberfläche um Angriffe im Keim zu unterbinden.
  • nur ein definierten Server ist für die Ablage von Nachrichten erlaubt. (ich möchte ja kein offenes SPAM Archiv aufbauen)

In einem späteren Schritt kann man dann noch SPAM Nachrichten ausschließen oder Zugriffe auf andere Anwender ermöglichen.

Installation der Voraussetzungen.

Da der Startpunkt ein Debian “minimal install” war ist es etwas mehr. In dem meisten Fällen dürfte das meiste schon bereits installiert sein

apt-get install openssl mysql-server-5.5 libapache2-mod-php5 libmysqlclient-dev php5-gd php5-memcache php5-mysql php5-xcache libtre-dev libzip2 sysstat catdoc poppler-utils unrtf  tnef memcached  clamav-daemon clamav-freshclam libodbc1 libpq5 gcc libwrap0-dev libssl-dev make

Bei Debian ist zwar eine sphinxsearch dabei aber die Doku von piler empfiehlt die neueste Version zu nehmen. Da dies im Startprogramm von piler mit aufgerufen wird soll man den Start mit dem Server ausschalten:

wget http://sphinxsearch.com/files/sphinxsearch_2.2.11-release-1~jessie_amd64.deb
dpkg -i sphinxsearch_2.2.11-release-1~jessie_amd64.deb 
service sphinxsearch stop
vi /etc/default/sphinxsearch
   START=no

Installation von Mail Piler

Den notwendigen Nutzer für die Archivsoftware einrichten, die Software downloaden, prüfen extrahieren und kompilieren

 groupadd piler
 useradd -g piler -m -s /bin/sh -d /var/piler piler
 usermod -L piler
 chmod 755 /var/piler
 wget https://bitbucket.org/jsuto/piler/downloads/piler-1.2.0.tar.gz
 sha256sum piler-1.2.0.tar.gz 
 tar xzvf piler-1.2.0.tar.gz 
 cd piler-1.2.0/
 ./configure --localstatedir=/var --with-database=mysql --enable-starttls --enable-tcpwrappers
make
make install
make postinstall

In dem Postinstall Script muss man auf Debian eigentlich nur www-data für den Apache2 User angeben. Der Rest sind die Standardwerte.

Nach einem einmaligen ldconfig kann man die Services dann auch starten

 ldconfig
 /etc/init.d/rc.piler start
 /etc/init.d/rc.searchd start

Automatisches starten beim boot:

 update-rc.d rc.piler defaults
 update-rc.d rc.searchd defaults

Nacharbeiten Apache Webserver

Die Webserverkonfiguration ist noch nicht fertig.

  1. Site Konfiguration

Da auf diesem Server nur das Archiv laufen soll habe ich einfach die Default Konfiguration angepasst

vi /etc/apache2/sites-enabled/000-default.conf 
 <VirtualHost *:80>
       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/piler
       <Directory /var/www/piler>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
        </Directory>
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
   </VirtualHost>
a2enmod rewrite
/etc/init.d/apache2 restart
  1. Apache auf “localhost only” umstellen

Ich möchte nicht, das der Webserver über das Internet erreichbar ist.

 vi ports.conf
  Listen 127.0.0.1:80

Für den administrativen Zugriff kann ich die Seite jetzt über eine SSH Portweiterleitung erreichen

 ssh -L 9000:localhost:80 piler.yourdomain.tld 
 http://localhost:9000/

Weiterleitung der Nachrichten in das Archiv einrichten

Ich möchte, dass nur ein Server Nachrichten an das Archiv senden kann. Da ich über keine feste IP Adresse verfüge und weiter über SSH auf den Server zugreifen möchte habe ich den Zugriff auf den SMTP Port über IP Tables eingeschränkt.

  iptables -A INPUT --source ip.des.mailservers -p tcp --dport 25 -j ACCEPT
  iptables -A INPUT --source localhost -p tcp --dport 25 -j ACCEPT
  iptables -A INPUT -p tcp --dport 25 -j DROP

Auf dem Mailserver habe ich es so eingerichtet das nicht alle Nachrichten archiviert werden sondern nur die Nachrichten an bestimmte Mailadressen.

cd /etc/postfix
vi recipient_bcc 
  user1@yourmail.tld archiv@your.mailpiler.tld
vi sender_bcc
  user1@yourmail.tld archiv@your.mailpiler.tld
postmap recipient_bcc
postmap sender_bcc

vi /main.cf
   recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
   sender_bcc_maps = hash:/etc/postfix/sender_bcc

Die Transportverschlüsselung wurde automatisch eingerichtet. Im Maillog kann man sehen das eine verschlüsselte Kommunikation mit dem Archivserver statt findet.

Der Rest geschieht wie in der Online Dokumentation beschrieben. Ich habe erst mal nur geprüft ob die Nachrichten ankommen und ob man danach suchen kann. Weitere Verfeinerungen sind noch möglich.

Jetzt geht es in eine kurze Testphase.

Damit hoffe ich, dass ich den gesetzlichen Anforderungen technisch genüge tue.

Verbesserungsvorschläge werden gerne entgegengenommen.