Inhaltsverzeichnis

Amazon S3 AWS Storage Backend

Amazon AWS bzw. der Amazon S3 Storage kann (ebenso wie S3-kompatible Storagesysteme) zur Ablage der archivierten E-Mails verwendet werden. Die E-Mails im Repo sollten hier verschlüsselt gespeichert werden.


Rechtliche Hinweise zur GoBD-konformen Archivierung und S3-Storagelösungen

Sollen E-Mails rechtssicher nach deutschem Recht (insbes. GoBD usw.) archiviert werden, impliziert die Nutzung von Amazon S3 AWS als externe Cloud-Storagetechnologie (also das Ablegen der archivieren E-Mails in Amazon AWS) rechtliche Aspekte, die mit Amazon zwingend auf vertraglicher Basis geklärt und festgelegt werden müssen. Hier ist besonders der physische Speicherort der archivierten E-Mails vertraglich mit Amazon festzulegen, da GoBD-konform nur archiviert werden kann, wenn die abgelegten Mails innerhalb des Hoheitsgebiets der Bundesrepublik Deutschland gespeichert werden. Abweichende Nutzungen sollten nicht ohne ausdrückliche Genehmigung der Finanzverwaltung bzw. des zuständigen Finanzamts angestrebt werden.

Werden S3-kompatible Storagelösungen bei anderen Cloud-Dienstleistern verwendet, gilt dies selbstverständlich entsprechend. Selbiges gilt für Storagelösungen mit S3-Schnittstelle im Eigenbetrieb, sofern sie außerhalb des eigenen Unternehmens in der Cloud verwendet werden.

Die vorgenannten rechtlichen Hinweise stellen keine Rechtsberatung dar. Die dienen lediglich zur allgemeinen Information. Wir übernehmen keine Gewähr für die Richtigkeit oder Vollständigkeit der Angaben. Jegliche Haftung ist ausgeschlossen.


Installation und Einrichtung des Benno MailArchiv S3 Storage Backends

Um die E-Mails des Repos in S3 zu speichern wird das Paket benno-storage-s3 benötigt.

apt install benno-storage-s3


Konfiguration

Die Konfiguration wird pro Mandant (Container) in der Konfigurationsdatei /etc/benno/benno.xml eingetragen.

<!-- Mandant 1 ######################################################## -->
<simplecontainer>
  <identifier>Mandant1</identifier>
  <conditions>
    <or>
      <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant1.de</domain>
      <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant1.com</domain>
    </or>
  </conditions>
  <luceneindex version="LUCENE_36">
    <directory>/srv/benno/mandant1/index</directory>
  </luceneindex>
  <boxgenerator rotation="YEARLY">
    <directory>/srv/benno/mandant1/repo</directory>
    <boxtemplate>
      <compression>gzip</compression>
      <journal rotation="MONTHLY"/>
      <storage driver="s3">
        <identifier>Bucket1</identifier>
        <!-- AWS-spezifische Konfiguration -->
        <region>eu-central-1</region>
        <!-- Alternativ zu AWS: die Endpoint-Konfiguration -->
        <!-- <endpoint>https://gos3.io</endpoint> -->
        <authentication>
          <authKeyId>YOUR_S3_AUTH_KEY_ID</authKeyId>
          <authKey>YOUR_S3_AUTH_KEY</authKey>
        </authentication>
      </storage>
    </boxtemplate>
  </boxgenerator>
</simplecontainer>


Bezeichner

Container bzw. Mandant

Der Container wird bei der Suche über den Container-Identifier angesprochen. Dieser sollte ein sprechender Name für den Mandant sein.

<simplecontainer>
  <identifier>Mandant1</identifier>

Adressfilter

Im Tag <conditions /> unterhalb von <simplecontainer /> wird festgelegt, welche Sender- und Empfängeradressen der E-Mails in diesem Container gespeichert werden.

<simplecontainer>
  <conditions>
    <or>
      <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant1.de</domain>
      <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant1.com</domain>
    </or>
  </conditions>

Index-Directory

<simplecontainer>
  <luceneindex version="LUCENE_36">
    <directory>/srv/benno/mandant1/index</directory>
  </luceneindex>

Der Suchindex muss im Filesytem des Benno MailArchiv Servers gespeichert werden (= wird nicht im S3-Storage abgelegt). Hier wird der Pfad zum Index festgelegt. Das Verzeichnis wird beim Start des Archvierungs-Daemons automatisch erzeugt.

Metadaten des Storage-Backends

Die Metadaten des Repos (u.a. das Journal über die archivierten E-Mails) werden im Filesystem gespeichert. Der hier angegebene Pfad muss für jeden Container unterschiedlich sein. Dieser Pfad ist gleichzeitig das Prefix bei der Speicherung in S3.

Dieser Pfad wird im <directory />-Tag innerhalb vom <boxgenerator /> konfiguriert.

<boxgenerator rotation="YEARLY">
  <directory>/srv/benno/mandant1/repo</directory>

S3 Storage-Backend

Die Konfiguration des S3-Storage-Backends kann wahlweise per „AWS Region“ erfolgen (bei Amazon AWS S3 Storage) oder alternativ über eine „Endpoint URL“.

AWS Region

Die Konfiguration eines AWS Storage erfolgt über die „Access Key Id“ (<authKey />) und „Secret Access Key“ (<authKey />) und der Region (<region />).

<storage driver="s3">
  <identifier>Bucket1</identifier>
  <region>eu-central-1</region>
  <authentication>
    <authKeyId>YOUR_S3_AUTH_KEY_ID</authKeyId>
    <authKey>YOUR_S3_AUTH_KEY</authKey>
  </authentication>
</storage>

Endpoint URL

Der Zugriff auf Buckets in einem S3-kompatiblen Storage kann per Endpoint-URL (<endpoint />) konfiguriert werden.

<storage driver="s3">
  <identifier>Bucket1</identifier>
  <endpoint>https://gos3.io</endpoint>
  <authentication>
    <authKeyId>YOUR_S3_AUTH_KEY_ID</authKeyId>
    <authKey>YOUR_S3_AUTH_KEY</authKey>
  </authentication>
</storage>

Bucket-Id

Der Identifier unterhalb von <storage /> legt fest, in welchem Bucket die Objekte gespeichert werden. Die Bucket-Id kann dabei mehrfach vergeben werden.

Innerhalb des Buckets werden die Objekte mit einem dem Container zugeordneten Prefix abgelegt.

Ist kein Bucket mit diesem Namen vorhanden, wird er angelegt.

<storage driver="s3">
  <identifier>Bucket1</identifier>

SSL-Zertifikate

Zertifikats-Import

Falls das Zertifikat des S3 Storage-Backends nicht korrekt validiert werden kann, wird der Zugriff abgebrochen.

In diesem Fall wird das CA-Zertifikat in den lokalen Java-Keystore importiert:

keytool -cacerts -import -storepass "changeit" -file /tmp/ca.pem -alias "MyCertName"

Das Passwort für den CA-Store ist bei einer Standard Java-Installation immer „changeit“.

Validierung deaktivieren

Die Validierung der Zertifikate kann im benno-archive oder benno-rest Daemon global deaktiviert werden. Hierfür wird in der Datei /etc/default/benno-<archive|rest> die Zeile JAVA_OPTIONS=' -server … mit -Dcom.amazonaws.sdk.disableCertChecking erweitert.