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.
- 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
- 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.