From c209b9321138acac986eeb22fdb93d38c4f9d2e9 Mon Sep 17 00:00:00 2001
From: Jan Ulrich Hasecke <jan.ulrich@hasecke.com>
Date: Mon, 25 Jul 2022 11:19:28 +0200
Subject: [PATCH] no output files in git

---
 /dev/null  |    0 
 .gitignore |    3 +++
 2 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9c0a850..679ce1d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -127,3 +127,6 @@
 *.xref
 *.xyc
 .DS_Store
+managed-operations-platform.html
+managed-operations-platform.pdf
+
diff --git a/source/managed-operations-platform/managed-operations-platform.html b/source/managed-operations-platform/managed-operations-platform.html
deleted file mode 100644
index 7f2e4ab..0000000
--- a/source/managed-operations-platform/managed-operations-platform.html
+++ /dev/null
@@ -1,5305 +0,0 @@
-<!DOCTYPE html>
-<html lang="de"><head>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <meta name="description" content="<p>Dieses Handbuch richtet sich an
-Anwender, welche ihre Internetprojekte bei der Hostsharing eG betreiben
-möchten. Es bietet einen Überblick über die Infrastruktur, eine
-Einführung in deren Nutzung sowie eine Beschreibung typischer
-Prozesse.</p>">
-    <meta name="DC.description" content="<p>Dieses Handbuch richtet sich
-an Anwender, welche ihre Internetprojekte bei der Hostsharing eG
-betreiben möchten. Es bietet einen Überblick über die Infrastruktur,
-eine Einführung in deren Nutzung sowie eine Beschreibung typischer
-Prozesse.</p>">
-    <meta name="DC.title" content="Managed Operations Platform">
-    <meta name="author" content="">
-
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-
-    <meta name="twitter:card" content="summary_large_image">
-<meta name="twitter:image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
-
-<meta name="twitter:title" content="Managed Operations Platform">
-<meta name="twitter:description" content="<p>Dieses Handbuch richtet
-sich an Anwender, welche ihre Internetprojekte bei der Hostsharing eG
-betreiben möchten. Es bietet einen Überblick über die Infrastruktur,
-eine Einführung in deren Nutzung sowie eine Beschreibung typischer
-Prozesse.</p>">
-<meta property="og:title" content="Managed Operations Platform">
-<meta property="og:description" content="<p>Dieses Handbuch richtet sich
-an Anwender, welche ihre Internetprojekte bei der Hostsharing eG
-betreiben möchten. Es bietet einen Überblick über die Infrastruktur,
-eine Einführung in deren Nutzung sowie eine Beschreibung typischer
-Prozesse.</p>">
-<meta property="og:type" content="article">
-<meta property="og:url" content="">
-<meta property="og:image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
-<meta itemprop="name" content="Managed Operations Platform">
-<meta itemprop="description" content="<p>Dieses Handbuch richtet sich an
-Anwender, welche ihre Internetprojekte bei der Hostsharing eG betreiben
-möchten. Es bietet einen Überblick über die Infrastruktur, eine
-Einführung in deren Nutzung sowie eine Beschreibung typischer
-Prozesse.</p>">
-<meta itemprop="image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
-<meta itemprop="image" content="https://www.hostsharing.net/images/hostsharing-logo.jpg">
-<meta itemprop="keywords" content="">
-<title>Managed Operations Platform</title>
-<link rel="icon" href="https://www.hostsharing.net/hs-theme/hostsharing/img/favicon.ico">
-<link rel="shortcut icon" href="https://www.hostsharing.net/hs-theme/hostsharing/img/favicon.ico">
-<link rel="stylesheet" href="https://www.hostsharing.net/hs-theme/optimized/optimized.min.css">
-<link href="https://www.hostsharing.net/optimized/optimized.min.css" rel="stylesheet">
-</head>
-<body class="documentation">
-<nav class="navbar navbar-expand-xl navbar-light fixed-top">
- <div class="container">
-    <a class="navbar-brand" href="https://www.hostsharing.net/"><img src="https://www.hostsharing.net/hs-theme/hostsharing/img/logo.svg" alt="Hostsharing eG – Genossenschaftliches Webhosting"></a>
-    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Navigation umschalten">
-      <span class="navbar-toggler-icon"></span>
-    </button>
-    <div class="collapse navbar-collapse" id="navbarSupportedContent">
-      <ul class="navbar-nav ml-auto">
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-ccc" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Cooperative Community Cloud</a>
-          <div class="dropdown-menu" aria-labelledby="navbarDropdown-ccc">
-            <a class="dropdown-item" href="https://www.hostsharing.net/ziele/">Ziele</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/vorteile/">Vorteile</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/features/">Plattform</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/hosting/">Lösungen</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/genossenschaft">Genossenschaft</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/referenzen">Mitglieder</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/team">Team</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/genossenschaft/mitgliedschaft">Mitglied werden</a>
-          </div>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-hosting" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Hosting</a>
-          <div class="dropdown-menu" aria-labelledby="navbarDropdown-hosting">
-            <a class="dropdown-item" href="https://www.hostsharing.net/angebote/">Übersicht</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/angebote/managed-webspace">Managed Webspace</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/angebote/managed-server/">Managed Server</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/angebote/cloud-server/">Cloud Server</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/angebote/domains">Domains</a>
-          </div>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-service" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Service</a>
-          <div class="dropdown-menu" aria-labelledby="navbarDropdown-service">
-            <a class="dropdown-item" href="https://www.hostsharing.net/service/">Übersicht</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/service/sla-service-level-agreements/">Service Level Agreements</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/service/webmaster-as-a-service/">Webmaster as a Service</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/service/webmaster-on-demand/">Webmaster on Demand</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/service/installationsservice/">Installationsservice</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/service/umzugsservice/">Umzugsservice</a>
-          </div>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-bbb" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">BigBlueButton</a>
-          <div class="dropdown-menu" aria-labelledby="navbarDropdown-bbb">
-            <a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/">Übersicht</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/bbb-meeting/">BBB Meeting</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/bbb-conference/">BBB Conference</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/bigbluebutton/bbb-server/">BBB Server</a>
-          </div>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-aktuell" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">News</a>
-          <div class="dropdown-menu" aria-labelledby="navbarDropdown-aktuell">
-            <a class="dropdown-item" href="https://www.hostsharing.net/blog/">Blog</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/termine/">Termine</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/newsletter/">Newsletter</a>
-          </div>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-kontakt" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Kontakt</a>
-          <div class="dropdown-menu" aria-labelledby="navbarDropdown-kontakt">
-            <a class="dropdown-item" href="https://www.hostsharing.net/webform/contact">Kontakt</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/datenschutz-webangebot/">Datenschutz Web-Angebot</a>
-            <a class="dropdown-item" href="https://www.hostsharing.net/datenschutz-social-media/">Datenschutz Social Media</a>
-            <div class="dropdown-divider"></div>
-            <a class="dropdown-item" href="https://www.hostsharing.net/impressum/">Impressum</a>
-          </div>
-        </li>
-        <li class="nav-item">
-          <a class="nav-link" href="https://www.hostsharing.net/intern/"><i class="fas fa-portrait fa-lg" aria-label="Login zum Mitgliederbereich"></i></a>
-        </li>
-      </ul>
-      <form method="get" action="https://search.hostsharing.net/search" role="search" class="form-inline">
-        <div class="input-group ml-2">
-          <input name="q" class="form-control" type="search" placeholder="Suchen…" aria-label="Suchen">
-          <div class="input-group-append">
-            <button type="submit" class="btn btn-secondary">
-              <i class="fa fa-search" aria-label="Suchen"></i>
-            </button>
-          </div>
-        </div>
-      </form>
-    </div>
-  </div>
-</nav>
-<main class="container">
-<div class="row mb-4">
-<div class="col-12 mt-5 mb-4">
-<h1 class="display-4 text-primary">Managed Operations Platform</h1>
-<h2 class="display-6 text-secondary">Handbuch für Anwender</h2>
-<p class="lead mt-4 mb-1"><p>Dieses Handbuch richtet sich an Anwender,
-welche ihre Internetprojekte bei der Hostsharing eG betreiben möchten.
-Es bietet einen Überblick über die Infrastruktur, eine Einführung in
-deren Nutzung sowie eine Beschreibung typischer
-Prozesse.</p> Unser Dank gilt allen, die zu diesem Handbuch beigetragen haben, insbesondere: Purodha
-Blissenbach, Christian Günter, Michael Hierweck, Peter Hormanns, Uwe
-Müller, Veit Schiele, Dominic Schlegel, Lars Trebing, Jan Ulrich
-Hasecke.</p>
-</div>
-</div>
-
-<div class="row">
-  <div class="col-lg-8 order-lg-1">
-    <aside class="jumbotron shadow-sm">
-  <div class="container">
-    <div class="row">
-      <div class="col-4">
-        <a href="">
-          <img
-            class="img-fluid"
-            src=""
-            alt=""
-            title=""
-        </a>
-      </div>
-      <div class="col-sm-6 col-8 align-self-end">
-        <a
-          class="btn btn-lg btn-success"
-          href="benutzerhandbuch.pdf"
-          <i class="fas fa-angle-right" aria-hidden="true">PDF herunterladen</i
-        ></a>
-      </div>
-    </div>
-  </div>
-</aside>
-    <div class="content clearfix">
-      
-  <section id="kap-einfuehrung" class="level1">
-  <h1>Einleitung</h1>
-  <div class="intro">
-  <p>Hostsharing betreibt seine Cooperative Community Cloud auf Basis
-  einer hochverfügbaren und redundant ausgelegten Cloud Infrastructure.
-  Auf dieser Infrastruktur baut die <a
-  href="https://www.hostsharing.net/features/">Managed Operations
-  Platform</a> auf, die den Betrieb von Webanwendungen durch zahlreiche
-  Features unterstützt. Das Handbuch erklärt die Nutzung dieser
-  Features.</p>
-  </div>
-  <figure>
-  <img src="images/ccc.svg" style="width:100.0%"
-  alt="Schematische Darstellung der Architektur und Leistungen" />
-  <figcaption aria-hidden="true">Schematische Darstellung der
-  Architektur und Leistungen</figcaption>
-  </figure>
-  <p>Die gesamte bereitgestellte Infrastruktur – von der Hardware über
-  Netze bis zur Softwareumgebung mit ihren administrativen Tools – wird
-  von der Hostsharing eG bereitgestellt, gewartet, aktualisiert und
-  überwacht, sodass sich die Mitglieder auf den Betrieb ihrer
-  indviduellen Internetangebote konzentrieren können. Das Angebot wird
-  durch Videokonferenzdienste ergänzt und durch passende Beratungs- und
-  Unterstützungsleistungen abgerundet.</p>
-  <section id="web-pakete" class="level2">
-  <h2>Web-Pakete</h2>
-  <p>Die Mitglieder nutzen die Managed Operations Platform in Form von
-  Web-Paketen.</p>
-  <p>Ein Web-Paket stellt einen Verbund von Benutzerkennungen, Domains,
-  E-Mail-Adressen, Postfächern, Datenbanken und weiteren Funktionen dar,
-  welchem Ressourcen wie Speicherplatz und Datentransfervolumen
-  zugeordnet sind.</p>
-  <p>Ein Web-Paket ermöglicht die Nutzung von:</p>
-  <ul>
-  <li>Web-Anwendungen</li>
-  <li>Daemons</li>
-  <li>E-Mail-Infrastruktur</li>
-  <li>Domains und Subdomains</li>
-  <li>TLS-Verschlüsselung</li>
-  <li>Datenbanken</li>
-  <li>verschiedenen Programmiersprachen</li>
-  </ul>
-  <p>Web-Pakete eignen sich zum Betrieb eines oder mehrerer
-  Internetangebote. Jedes Mitglied kann beliebig viele Web-Pakete
-  bestellen und verwalten.</p>
-  <p>Ein Web-Paket kann einzeln als <a
-  href="https://www.hostsharing.net/angebote/managed-webspace/">Managed
-  Webspace</a> gebucht werden. Auf einem <a
-  href="https://www.hostsharing.net/angebote/managed-server/">Managed
-  Server</a> können ein oder mehrere Web-Pakete betrieben werden.</p>
-  </section>
-  <section id="managed-webspace" class="level2">
-  <h2>Managed Webspace</h2>
-  <p><img src="images/icons/icon-managedwebspace.svg"
-  style="width:30.0%" /></p>
-  <p>Mit der Buchung eines Managed Webspace erhält das Mitglied ein
-  Webpaket, welches auf einem Server untergebracht ist, dessen
-  Ressourcen sich die Mitglieder teilen (Shared Hosting). Mitglieder
-  können mehrere Managed Webspaces buchen und erhalten mit jeder Buchung
-  ein weiteres Web-Paket.</p>
-  <p>Mit der Buchung von Managed Webspace erhält das Mitglied
-  Speicherplatz zugewiesen, ein Traffic-Kontingent und ein Kontingent
-  von Benutzerkonten, Datenbanken und E-Mail-Adressen. Diese Ressourcen
-  sind modular zubuchbar. CPU und RAM werden gemeinsam genutzt.</p>
-  </section>
-  <section id="managed-server" class="level2">
-  <h2>Managed Server</h2>
-  <figure>
-  <img src="images/icons/icon-managedserver.svg" style="width:30.0%"
-  alt="image" />
-  <figcaption aria-hidden="true">image</figcaption>
-  </figure>
-  <p>Mit der Buchung eines Managed Servers erhält das Mitglied
-  Speicherplatz, CPU und RAM dediziert zugewiesen sowie ein
-  Traffic-Kontingent. Diese Ressourcen sind modular zubuchbar. Das
-  Mitglied kann beliebig viele Benutzerkonten, Datenbanken und
-  E-Mail-Adressen einrichten und sie in Form von Web-Paketen
-  mandantenfähig gruppieren. Um einen Managed Server nutzen zu können,
-  werden also auf diesem wenigstens ein, bei Bedarf auch mehrere
-  Web-Pakete eingerichtet.</p>
-  <p>Verschiedene Managed Server eines Mitglieds können auf Wunsch über
-  interne Netze miteinander verbunden werden, um sichere Kommunikation
-  zwischen Komponenten eines verteilten Deployments zu realisieren.</p>
-  <p>Mehrere Mitglieder können sich einen Managed Server teilen. Ein
-  Reselling an Endkunden ist möglich.</p>
-  </section>
-  <section id="best-practice" class="level2">
-  <h2>Best Practice</h2>
-  <p>Mitglieder von Hostsharing können den Aufbau ihrer Webanwendungen
-  sehr frei gestalten, denn Hostsharing bietet ein hohes Maß an
-  Flexibilität. Dennoch ist es sinnvoll, bei der Organisation seiner
-  Webanwendungen bestimmte Verfahrensweisen zu beachten, die
-  erfahrungsgemäß die Sicherheit erhöhen. Dazu gehört vor allem die
-  Nutzung der Vorteile, die das Linux-Betriebssystem aufgrund seiner
-  Mehrbenutzerfähigkeit bietet.</p>
-  <section id="pro-anwendung-ein-benutzer" class="level3">
-  <h3>Pro Anwendung ein Benutzer</h3>
-  <p>Wenn auf einem Linux-Betriebssystem zwei Anwendungen (A und B)
-  unter verschiedenen Benutzern (<code>xyz00-a</code> und
-  <code>xyz00-b</code>) laufen, sind sie in gewisser Hinsicht
-  gegeneinander abgeschottet. Wenn es einem Angreifer gelingt, durch
-  eine Sicherheitslücke in Anwendung A die Benutzerrechte von
-  <code>xyz00-a</code> zu erlangen, kann er mit diesen Rechten im
-  Heimverzeichnis von <code>xyz00-a</code> jeden beliebigen Schaden
-  anrichten. Im Heimverzeichnis von <code>xyz00-b</code> besitzt er
-  jedoch keine Lese- und Schreibrechte, sodass er dort auch keine
-  Schäden verursachen kann.</p>
-  <p>Deshalb gilt es bei Hostsharing als Best Practice für jede Domain
-  und jede Anwendung einen eigenen Benutzer anzulegen. Hostsharing hat
-  verschiedene Benutzerrollen vorgesehen, die jeweils spezifische
-  Aufgaben übernehmen. Die Rollen werden in <code
-  class="interpreted-text" role="numref">kap-benutzerrollen</code>
-  ausführlich erklärt.</p>
-  </section>
-  </section>
-  <section id="weitere-informationsquellen" class="level2">
-  <h2>Weitere Informationsquellen</h2>
-  <p>Wenn Ihnen dieses Handbuch nicht weiterhilft, können Sie die
-  folgenden Informationsquellen nutzen.</p>
-  <dl>
-  <dt>Das Hostsharing Wiki</dt>
-  <dd>
-  <p>Das <a
-  href="https://wiki.hostsharing.net/index.php?title=Hauptseite">Hostsharing
-  Wiki</a> wird von den Mitgliedern der Hostsharing eG gepflegt. Es
-  enthält vor allem <a
-  href="https://wiki.hostsharing.net/index.php?title=Kategorie:Installationsanleitungen">Installationsanleitungen</a>
-  für die diversen Webanwendungen, die unsere Mitglieder auf der Managed
-  Operations Platform betreiben.</p>
-  </dd>
-  <dt>Die Support-Mailingliste</dt>
-  <dd>
-  <p>Die Mitglieder der Hostsharing eG helfen sich gegenseitig auf der
-  <a
-  href="https://lists.hostsharing.net/mailman/listinfo/support">Support-Mailingliste</a>.
-  Sie müssen die Mailingliste abonnieren, um Fragen zu stellen. Werfen
-  Sie einen Blick in das Mailinglisten-Archiv, bevor Sie Ihre Frage
-  stellen. Unter Umständen wurde sie schon beantwortet.</p>
-  </dd>
-  <dt>Der Hostsharing-Service</dt>
-  <dd>
-  <p>Falls Sie ein besonderes Problem mit Ihrem Web-Paket haben, können
-  Sie per E-Mail den <a
-  href="service@hostsharing.net">Hostsharing-Service</a> direkt fragen.
-  In dringenden Fällen können Sie den Service auch telefonisch unter der
-  Nummer +49 40 2093313-11 erreichen.</p>
-  </dd>
-  </dl>
-  </section>
-  </section>
-  <section id="kap-hsadmin-einstieg" class="level1">
-  <h1>Einführung in HSAdmin</h1>
-  <p>Für einen erfolgreichen Start mit Hostsharing wird hier
-  schrittweise gezeigt, wie ein Benutzer eine Domain mit E-Mail-Adresse
-  und eine Datenbank in einem neuen Web-Paket angelegt wird. Die
-  Einrichtung erfolgt mit dem Webfrontend von <code>HSAdmin</code>.
-  Freunde der Konsole können alle Schritte mit der CLI-Variante
-  <code>hsscript</code> erledigen.</p>
-  <section id="rundgang-durch-hsadmin" class="level2">
-  <h2>Rundgang durch HSAdmin</h2>
-  <video 
-      width="786" 
-      height="590" controls 
-      <source src="https://media.hostsharing.net/Erster-Rundgang-HSAdmin.webm" type="video/webm"> 
-      <source src="https://media.hostsharing.net/Erster-Rundgang-HSAdmin.mp4" type="video/webm">
-   >
-      Ihr Browser unterstützt keine Videos.
-  </video>
-  </section>
-  <section id="kap-erstes-einloggen" class="level2">
-  <h2>Erstes Einloggen und Änderung des Passworts</h2>
-  <p>Wir gehen im Folgenden davon aus, dass der Service für Sie ein
-  Web-Paket eingerichtet hat und Sie per E-Mail die Zugangsdaten
-  bekommen haben. In der Regel wird der Service Ihnen den Benutzernamen
-  des <code class="interpreted-text" role="role">Paket-Admin</code>
-  zusenden. Sie erkennen dies daran, dass der Benutzername sich aus der
-  Mitgliederkennung und einer Zahl zusammensetzt. In unserem Beispiel
-  ist das <code>xyz00</code>.</p>
-  <div class="hint">
-  <p>Sie werden auf der Hostsharing-Plattform mit verschiedenen
-  Benutzernamen arbeiten, von denen einige genau definierte Rollen auf
-  der Plattform ausüben. Ausführlich werden die Benutzerrollen im
-  Abschnitt <a href="#kap-benutzerrollen">Benutzerrollen</a>
-  beschrieben.</p>
-  </div>
-  <section id="änderung-des-passworts" class="level3">
-  <h3>Änderung des Passworts</h3>
-  <p>Zunächst sollten Sie das Passwort, das Sie vom Service erhalten
-  haben, ändern. Rufen Sie in Ihrem Browser <a
-  href="https://admin.hostsharing.net"
-  class="uri">https://admin.hostsharing.net</a> auf, um sich in
-  <code>HSAdmin</code> einzuloggen (siehe Abbildung <a
-  href="#fig-hsadmin-login-xyz00">Das Login-Fenster von
-  HSADmin</a>).</p>
-  <div id="fig-hsadmin-login-xyz00">
-  <figure>
-  <img src="images/hsadmin-login-xyz00.jpg" style="width:70.0%"
-  alt="Das Login-Fenster von HSAdmin" />
-  <figcaption aria-hidden="true">Das Login-Fenster von
-  HSAdmin</figcaption>
-  </figure>
-  </div>
-  <p>Loggen Sie sich mit den Zugangsdaten ein, die Sie vom Service
-  erhalten haben.</p>
-  <p>Nach dem Einloggen werden Sie zum Startbildschirm von HSAdmin
-  weitergeleitet (vgl. Abb. <a href="#fig-hsadmin-start-paketadmin">Der
-  Startbildschirm von HSAdmin nach dem Einloggen als Paket-Admin.</a>
-  dargestellten weitergeleitet.</p>
-  <div id="fig-hsadmin-start-paketadmin">
-  <figure>
-  <img src="images/hsadmin-start-paketadmin.jpg" style="width:100.0%"
-  alt="Der Startbildschirm von HSAdmin nach dem Einloggen als Paket-Admin." />
-  <figcaption aria-hidden="true">Der Startbildschirm von HSAdmin nach
-  dem Einloggen als Paket-Admin.</figcaption>
-  </figure>
-  </div>
-  <p>In HSAdmin gibt es zwei Bereiche zwischen denen Sie hin- und
-  hernavigieren können:</p>
-  <dl>
-  <dt>Web-Paket</dt>
-  <dd>
-  <p>Hinter diesem Menü finden Sie alle Ihre Web-Pakete. In unserem
-  Beispiel ist dies nur ein Web-Paket mit dem Namen <code>xyz00</code>.
-  In diesem Menü können Sie Benutzer, Domains, Datenbanken und
-  Datenbank-Benutzer anlegen sowie E-Mail-Aliase vergeben.</p>
-  </dd>
-  <dt>Domain</dt>
-  <dd>
-  <p>Unter diesem Menü verwalten Sie die E-Mail-Adressen in Ihren
-  Domains. Eventuell ist hier bereits eine Beispiel-Domain
-  eingerichtet.</p>
-  </dd>
-  </dl>
-  <p>Rechts oben sehen Sie einen Link mit der Bezeichnung
-  <code>xyz00</code>. Dies ist der Benutzername, mit dem Sie sich
-  eingeloggt haben. Nach einem Klick auf den Link öffnet sich das
-  Bearbeitungsmenü für den Benutzer (siehe Abb. <a
-  href="#fig-hsadmin-pa-bearbeiten">Dialog zum Ändern des
-  Passworts</a>).</p>
-  <div id="fig-hsadmin-pa-bearbeiten">
-  <figure>
-  <img src="images/hsadmin-pa-bearbeiten.jpg" style="width:100.0%"
-  alt="Dialog zum Ändern des Passworts" />
-  <figcaption aria-hidden="true">Dialog zum Ändern des
-  Passworts</figcaption>
-  </figure>
-  </div>
-  <p>Geben Sie ein neues Passwort ein und bestätigen Sie die Änderung
-  mit einem Klick auf OK.</p>
-  <video 
-      width="786" 
-      height="590" 
-      controls
-      <source src="https://media.hostsharing.net/Passwort-des-Paketbenutzers-aendern.webm" type="video/webm">
-      <source src="https://media.hostsharing.net/Passwort-des-Paketbenutzers-aendern.mp4" type="video/mp4">
-  >
-  </video>
-  </section>
-  <section id="kap-einloggen-mitglied" class="level3">
-  <h3>Einloggen mit dem Mitglieds-Account</h3>
-  <p>Eventuell hat Ihnen der Service auch die Zugangsdaten für einen
-  Benutzernamen mitgeteilt hat, der nur aus drei Buchstaben besteht. Es
-  handelt sich dabei um Ihren Mitglieds-Account. Ändern Sie auch in
-  diesem Fall sofort das Passwort, indem Sie sich mit diesem Benutzer
-  einloggen, auf die Benutzerkennung rechts oben klicken und wie im
-  letzten Abschnitt beschrieben ein neues Passwort eingeben.</p>
-  <div id="fig-hsadmin-mitglied-webpaket-benutzer">
-  <figure>
-  <img src="images/hsadmin-mitglied-start.jpg" style="width:100.0%"
-  alt="Der Begrüßungsbildschirm von HSAdmin, wenn Sie als Mitglied eingeloggt sind." />
-  <figcaption aria-hidden="true">Der Begrüßungsbildschirm von HSAdmin,
-  wenn Sie als Mitglied eingeloggt sind.</figcaption>
-  </figure>
-  </div>
-  <p>Wenn Sie als Mitglied eingeloggt sind, ist das linke
-  Navigationsmenü um einen Eintrag erweitert:</p>
-  <dl>
-  <dt>Kunde/Mitglied</dt>
-  <dd>
-  <p>In diesem Menü finden Sie Ihre Mitgliedsdaten. Sie können hier zum
-  Beispiel Ihre Anschrift oder Kontoverbindung ändern.</p>
-  </dd>
-  </dl>
-  <p>Wenn Sie als Mitglied eingeloggt sind, können Sie auch das Passwort
-  des Paket-Admin verändern. Gehen Sie dazu in den Bereich Web-Paket,
-  wählen Sie Ihr Web-Paket aus und gehen Sie im rechten Feld in das Menü
-  <code>Benutzer/Postfach</code>. Wählen Sie dort den Paket-Admin
-  <code>xyz00</code> aus.</p>
-  <div id="fig-hsadmin-mitglied-webpaket-benutzer-auswaehlen">
-  <figure>
-  <img src="images/hsadmin-mitglied-webpaket-benutzer-auswaehlen.jpg"
-  style="width:100.0%"
-  alt="Der ausgewählte Paket-Admin ist farbig hinterlegt." />
-  <figcaption aria-hidden="true">Der ausgewählte Paket-Admin ist farbig
-  hinterlegt.</figcaption>
-  </figure>
-  </div>
-  <p>Klicken Sie in der Symbolleiste auf das Bearbeitungssymbol. Es
-  öffnet sich ein Menü, in dem Sie ein neues Passwort eingeben
-  können.</p>
-  <div id="fig-hsadmin-mitglied-webpaket-benutzer-passwort-aendern">
-  <figure>
-  <img
-  src="images/hsadmin-mitglied-webpaket-benutzer-passwort-aendern.jpg"
-  style="width:100.0%"
-  alt="Das Menü zur Bearbeitung eines Benutzers." />
-  <figcaption aria-hidden="true">Das Menü zur Bearbeitung eines
-  Benutzers.</figcaption>
-  </figure>
-  </div>
-  <p>Bestätigung mit dem <code>OK</code>-Button.</p>
-  </section>
-  </section>
-  <section id="domain-benutzer-anlegen" class="level2">
-  <h2>Domain-Benutzer anlegen</h2>
-  <p>Bevor wir eine Domain aufschalten, müssen wir einen Benutzer mit
-  der Rolle <code>Domain-Admin</code> anlegen. Rufen Sie dazu das
-  Webfrontend von HSAdmin über den Link <a
-  href="https://admin.hostsharing.net"
-  class="uri">https://admin.hostsharing.net</a> auf und loggen Sie sich
-  mit der Benutzerkennung des <code>Paket-Admin</code> ein. In unserem
-  Beispiel ist das <code>xyz00</code>.</p>
-  <p>Gehen Sie in den Bereich <code>Web-Paket</code> und dort in das
-  Menü <code>Benutzer/Postfach</code>. Klicken Sie nun auf das
-  Plus-Symbol <code>Neuen Eintrag anlegen</code>. Es öffnet sich das
-  Menü zum Anlegen eines neuen Benutzers (siehe Abbildung <a
-  href="#fig-domain-admin-anlegen">Das Menü zum Anlegen eines neuen
-  Benutzers</a>).</p>
-  <figure>
-  <img src="images/hsadmin-da-anlegen-1.jpg" style="width:100.0%"
-  alt="Das Menü zum Anlegen eines neuen Benutzers." />
-  <figcaption aria-hidden="true">Das Menü zum Anlegen eines neuen
-  Benutzers.</figcaption>
-  </figure>
-  <p>Die Felder für den Benutzer und das Passwort sind rot umrandet. Das
-  zeigt an, dass Sie diese Felder bearbeiten müssen. Das Kürzel für den
-  Paket-Admin ist bereits eingetragen. Sie müssen lediglich nach dem
-  Bindestrich eine Bezeichnung eingeben, die Ihnen sinnvoll erscheint.
-  Während das Kürzel am Anfang (z.B. <code>xyz00</code>) zwingend
-  vorgegeben ist, können Sie die Bezeichnung dahinter frei wählen.
-  Denken Sie an den Zweck des Benutzers. Er verwaltet eine oder mehrere
-  Domains. Wenn Sie in Ihrem Web-Paket nur eine Domain verwalten wollen,
-  können Sie den Benutzer zum Beispiel <code>xyz00-domain</code> nennen.
-  Wenn der Benutzer mehrere Domains verwalten soll, kann sein Name zur
-  verständlichen Kennzeichung <code>xyz00-doms</code> lauten. Und wenn
-  Sie mehrere Domains mit unterschiedlichen Domain-Admins in einem Paket
-  verwalten wollen, können Sie in den Namen auch die jeweilige Domain
-  einfügen, wie zum Beispiel <code>xyz00-hs_example.de</code>. Wir
-  empfehlen aus Sicherheitsgründen für jede Domain einen eigenen
-  Domain-Admin anzulegen. Im Abschnitt <a
-  href="#kap-hsscript-skript">HSADmin über Skripte steuern</a> erfahren
-  Sie, wie Sie mit Hilfe eines Skripts die Anlage neuer Domains und
-  neuer Domain-Admins vereinfachen können.</p>
-  <div class="admonition">
-  <p>Beachten Sie die Namenskonvention</p>
-  <p>Alle Benutzernamen beginnen mit dem Kürzel für das Paket, in
-  unserem Beispiel <code>xyz00</code>. Ergänzungen können mit einem
-  Bindestrich abgetrennt werden wie zum Beispiel in dem Benutzernamen
-  für den Domain-Admin <code>xyz00-doms</code>. Es ist nur ein
-  Bindestrich zulässig. Weitere gültige Trennzeichen zur Verbesserung
-  der Lesbarkeit sind ein Punkt und der Unterstrich. Es sind also
-  folgende Benutzernamen für Domain-Benutzer möglich:
-  <code>xyz00-example_de</code>, <code>xyz00-example.de</code> oder
-  <code>xyz00-hs_example.de</code>.</p>
-  </div>
-  <p>Durch die Anlage eines Domain-Admins erzeugen Sie einen
-  Unix-Benutzer mit einer eigenen Verzeichnisstruktur in Ihrem Webpaket.
-  Die Arbeit mit verschiedenen Benutzern dient der Sicherheit. Falls
-  durch eine Sicherheitslücke in einer Website jemand Zugang zum
-  Verzeichnis des Domain-Admins erhält, kann er nur dort Schaden
-  anrichten und nicht im gesamten Web-Paket, das von dem Paket-Admin
-  verwaltet wird. Lesen Sie mehr dazu im Abschnitt <a
-  href="#kap-benutzerrollen">Benutzerrollen</a>.</p>
-  <p>Es ist möglich einem Domain-Admin mehrere Domains zuzuordnen. Die
-  Ordner und Dateien für jede einzelne Domain befinden sich dann alle im
-  Heimverzeichnis des Domain-Admins im Ordner <code>/doms</code>. Dieses
-  Vorgehen, das der leichteren Übersicht dient, reduziert die
-  Sicherheit, da mehrere Domains mit einem Unix-Benutzer betrieben
-  werden. Wenn Sie unsicher sind, welches Vorgehen Sie bei der
-  Organisation Ihrer Websites nutzen sollen, fragen Sie den Service.</p>
-  <p>In Abb. <a href="#fig-domain-admin-ausgefuellt">Das ausgefüllte
-  Formular zur Anlage eines Benutzers.</a> sehen Sie ein Beispiel mit
-  dem Benutzernamen <code>xyz00-doms</code>.</p>
-  <figure>
-  <img src="images/hsadmin-da-anlegen-2.jpg" style="width:100.0%"
-  alt="Das ausgefüllte Formular zur Anlage eines Benutzers." />
-  <figcaption aria-hidden="true">Das ausgefüllte Formular zur Anlage
-  eines Benutzers.</figcaption>
-  </figure>
-  <p>Bei der Anlage eines Benutzers müssen Sie folgendes
-  berücksichtigen:</p>
-  <dl>
-  <dt>Benutzer/Postfach</dt>
-  <dd>
-  <p>Der Benutzername muss immer mit dem Kürzel des Paket-Admins
-  beginnen. Wenn Sie als Paket-Admin in HSAdmin eingeloggt sind, ist das
-  Kürzel schon im Formular eingetragen.</p>
-  </dd>
-  <dt>Passwort</dt>
-  <dd>
-  <p>HSAdmin erzwingt ein Passwort mit einer Mindestlänge von 6 Zeichen.
-  Es muss aus Kleinbuchstaben, Großbuchstaben, Ziffern und Sonderzeichen
-  bestehen, wobei Zeichen aus mindestens drei dieser Gruppen verwendet
-  werden müssen.</p>
-  </dd>
-  <dt>Kurzbeschreibung</dt>
-  <dd>
-  <p>In der Kurzbeschreibung können Sie Informationen vermerken, die
-  Ihnen helfen, den Benutzer zuzuordnen.</p>
-  </dd>
-  <dt>Shell-/Kommando-Interpreter</dt>
-  <dd>
-  <p>Domain-Admins benötigen eine Shell. Wählen Sie deshalb zum Beispiel
-  <code>/bin/bash</code> aus.</p>
-  </dd>
-  <dt>Quota (Soft-Limit)</dt>
-  <dd>
-  <p>Hiermit können Sie dem Benutzer und seinen Daten ein
-  Festplatten-Quota zuteilen. Man unterscheidet das Soft- und das
-  Hard-Limit. Lesen Sie mehr dazu im Abschnitt <a
-  href="#kap-quota">Speicherbelegung</a>. Wenn Sie nichts eintragen,
-  wird kein gesondertes Quota für den Benutzer gesetzt. Lassen Sie die
-  beiden Felder im Zweifelsfall leer.</p>
-  </dd>
-  <dt>Quota (Hard-Limit)</dt>
-  <dd>
-  <p>Das Hard-Limit des Quota.</p>
-  </dd>
-  </dl>
-  <p>Bestätigen Sie die Anlage mit <code>OK</code>.</p>
-  <p>Nach der Anlage erscheint der neue Benutzer in der Liste des Menüs
-  <code>Benutzer/Postfach</code>.</p>
-  <div id="fig-domain-admin-angelegt">
-  <figure>
-  <img src="images/hsadmin-da-anlegen-3.jpg" style="width:100.0%"
-  alt="Der neue Domain-Admin ist angelegt." />
-  <figcaption aria-hidden="true">Der neue Domain-Admin ist
-  angelegt.</figcaption>
-  </figure>
-  </div>
-  <div class="admonition">
-  <p>Best Practice</p>
-  <p>Legen Sie für jede Domain einen gesonderten Domain-Admin an. Nutzen
-  Sie dabei zum Beispiel das Namensschema
-  <code>xyz00-hs_example.de</code>.</p>
-  </div>
-  </section>
-  <section id="domain-anlegen-und-bestellen" class="level2">
-  <h2>Domain anlegen und bestellen</h2>
-  <p>Eine Domain wird in zwei Schritten angelegt:</p>
-  <ol type="1">
-  <li>Die Domain im Web-Paket aufschalten</li>
-  <li>Die Domain im Domainbestellsystem bestellen</li>
-  </ol>
-  <p>Aus technischen Gründen ist es sinnvoll, diese Reihenfolge
-  einzuhalten. Die automatische Konnektierung einer neu bestellten
-  Domain erfolgt nur, wenn sie in HSAdmin bereits angelegt ist.</p>
-  <section id="kap-hsadmin-domain-anlegen" class="level3">
-  <h3>Domain in HSAdmin anlegen</h3>
-  <p>Melden Sie sich in HSAdmin als Paket-Admin (im Beispiel:
-  <code>xyz00</code>) an. Wechseln Sie in den Bereich
-  <code>Web-Paket</code>, wählen Sie Ihr Web-Paket aus und öffnen Sie
-  das Menü <code>Domain</code>. Die Liste (siehe Abb. <a
-  href="#fig-hsadmin-domain-anlegen-0">Das leere Menü mit den
-  Domains</a> ist leer, da noch keine Domain angelegt wurde.</p>
-  <div id="fig-hsadmin-domain-anlegen-0">
-  <figure>
-  <img src="images/hsadmin-domain-anlegen-0.jpg" style="width:100.0%"
-  alt="Das leere Menü mit den Domains." />
-  <figcaption aria-hidden="true">Das leere Menü mit den
-  Domains.</figcaption>
-  </figure>
-  </div>
-  <p>Klicken Sie auf das Plus-Symbol <code>Neuen Eintrag anlegen</code>.
-  Es öffnet sich das Menü zum Aufschalten einer Domain (siehe Abb. <a
-  href="#%60fig-hsadmin-domain-anlegen-1">Das Menü zur Aufschaltung
-  einer Domain</a>).</p>
-  <div id="fig-hsadmin-domain-anlegen-1">
-  <figure>
-  <img src="images/hsadmin-domain-anlegen-1.jpg" style="width:100.0%"
-  alt="Das Menü zur Aufschaltung einer Domain bei Hostsharing." />
-  <figcaption aria-hidden="true">Das Menü zur Aufschaltung einer Domain
-  bei Hostsharing.</figcaption>
-  </figure>
-  </div>
-  <p>Tragen Sie hier den Namen der Domain ein, die Sie anlegen wollen
-  und wählen Sie den Domain-Admin aus, in dessen Benutzerverzeichnis die
-  Verzeichnisse der Domain angelegt werden sollen.</p>
-  <div class="attention">
-  <p>In diesem Menü ist der Benutzer, mit dem Sie sich eingeloggt haben,
-  vorausgewählt. Wenn dies der Paket-Admin (z.B. <code>xyz00</code>)
-  ist, wählen Sie den gewünschten Domain-Admin aus.</p>
-  </div>
-  <p>Bestätigen Sie die Eingaben mit <code>OK</code>.</p>
-  <p>Damit ist die Domain in dem Web-Paket <code>xyz00</code> technisch
-  angelegt. Sie erscheint in der Liste im Menü <code>Domain</code>
-  (siehe Abb. <a href="#fig-hsadmin-domain-anlegen-2">Die neu angelegte
-  Domain erscheint in der Liste</a>).</p>
-  <div id="fig-hsadmin-domain-anlegen-2">
-  <figure>
-  <img src="images/hsadmin-domain-anlegen-2.jpg" style="width:100.0%"
-  alt="Die neu angelegte Domain erscheint in der Liste." />
-  <figcaption aria-hidden="true">Die neu angelegte Domain erscheint in
-  der Liste.</figcaption>
-  </figure>
-  </div>
-  <p>Wenn Sie die Domain auswählen und das Editier-Symbol
-  <code>Ausgewählten Eintrag bearbeiten</code> anklicken, können Sie die
-  eben erstellte Domain bearbeiten (siehe Abb. <a
-  href="#fig-hsadmin-domain-bearbeiten">Das Bearbeitungsmenü einer
-  Domain</a>).</p>
-  <div id="fig-hsadmin-domain-bearbeiten">
-  <figure>
-  <img src="images/hsadmin-domain-bearbeiten.jpg" style="width:100.0%"
-  alt="Das Bearbeitungsmenü einer Domain." />
-  <figcaption aria-hidden="true">Das Bearbeitungsmenü einer
-  Domain.</figcaption>
-  </figure>
-  </div>
-  <p>Das Menü zeigt den Domainnamen, den Domain-Admin, das
-  Erstellungsdatum, die Domain-Optionen (siehe Abschnitt <a
-  href="#kap-domain-optionen">Domain-Optionen</a> und die gültigen
-  Subdomains (siehe Abschnitt <a
-  href="#kap-ref-subdomains">Subdomains</a>. Ändern Sie hier zunächst
-  nichts.</p>
-  <p>Wenn Sie im Feld <code>gültige Subdomains</code> ein <code>*</code>
-  als Wildcard eintragen, können Sie sehr einfach leichtgewichtige
-  Subdomains erzeugen. Was innerhalb von HSAdmin als leichtgewichtige
-  Subdomain bezeichnet wird, erfahren Sie im Abschnitt <a
-  href="#kap-ref-subdomains">Subdomains</a>.</p>
-  <video 
-  width="786" 
-  height="590" 
-  controls 
-  <source src="https://media.hostsharing.net/Domain-einrichten.webm" type="video/webm">
-  <source src="https://media.hostsharing.net/Domain-einrichten.mp4" type="video/mp4">
-  >
-  </video>
-  </section>
-  <section id="domain-im-domainbestellsystem-bestellen" class="level3">
-  <h3>Domain im Domainbestellsystem bestellen</h3>
-  <p>Anschließend kann die Domain hs-example.de unter dem Link <a
-  href="https://www.domain-bestellsystem.de"
-  class="uri">https://www.domain-bestellsystem.de</a> bestellt werden.
-  Die Login-Daten dafür wurden Ihnen auf einem separatem Weg
-  mitgeteilt.</p>
-  </section>
-  <section id="domain-löschen" class="level3">
-  <h3>Domain löschen</h3>
-  <p>Beim Löschen einer Domain gehen Sie am besten folgendermaßen
-  vor.</p>
-  <ol type="1">
-  <li>Die Domain im Domainbestellsystem löschen</li>
-  <li>Die Domain in HSAdmin löschen</li>
-  </ol>
-  <p>Es ist die umgekehrte Reihenfolge wie bei der Bestellung einer
-  Domain.</p>
-  <p>Wenn Sie eine Domain an einen anderen Domainverwalter übertragen
-  wollen, müssen Sie die Domain im Domainbestellsystem <em>in den
-  Transfer geben</em>. Löschen Sie die Domain in HSAdmin erst, wenn die
-  Löschung der Domain erfolgt ist beziehungsweise wenn die Domain
-  transferiert und bei einem anderen Hoster aufgeschaltet wurde.</p>
-  </section>
-  </section>
-  <section id="webspace-einrichten" class="level2">
-  <h2>Webspace einrichten</h2>
-  <p>Ihre Webanwendungen – im einfachsten Fall statische HTML-Seiten –
-  richten Sie in dem Heimverzeichnis des jeweiligen Domain-Admin
-  ein.</p>
-  <p>Loggen Sie sich dazu mit Hilfe von <code>ssh</code> ein:</p>
-  <pre class="console"><code>$ ssh xyz00-doms@xyz00.hostsharing.net</code></pre>
-  <p>Sie erreichen alle Benutzerverzeichnisse über die Adresse des
-  jeweiligen Pakets. In unserem Beispiel ist das
-  <code>xyz00.hostsharing.net</code>. Nach dem Einloggen finden Sie die
-  im nächsten Abschnitt beschriebene Ordnerstruktur vor.</p>
-  <section id="kap-einstieg-ordnerstruktur" class="level3">
-  <h3>Ordnerstruktur</h3>
-  <p>Die exemplarische Struktur des Home-Verzeichnisses eines
-  Domain-Admins sieht folgendermaßen aus:</p>
-  <pre><code>├── doms
-│   ├── hs-example.de
-│   │   ├── app
-│   │   ├── app-ssl
-│   │   ├── cgi
-│   │   ├── cgi-ssl
-│   │   ├── etc
-│   │   │   └── pri.hs-example.de
-│   │   ├── fastcgi
-│   │   │   └── phpstub
-│   │   ├── fastcgi-ssl
-│   │   │   └── phpstub
-│   │   ├── htdocs
-│   │   │   └── .htaccess
-│   │   ├── htdocs-ssl
-│   │   │   └── .htaccess
-│   │   ├── subs
-│   │   │   ├── www
-│   │   │   │   └── index.html
-│   │   │   └── example
-│   │   ├── subs-ssl
-│   │   │   └── www
-│   │   │       └── index.html
-│   │   └── var
-│   └── domain2.tld
-│       ├── app
-│       └── …
-├── etc
-│   └── config.ini
-└── Maildir</code></pre>
-  <dl>
-  <dt><code>~/doms</code></dt>
-  <dd>
-  <p>Alle dem Domain-Admin zugewiesenen Domains liegen im Verzeichnis
-  <code>~/doms</code>.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de</code></dt>
-  <dd>
-  <p><code>hs-example.de</code> die Beispiel-Domain, für die die
-  Verzeichnisse von HSAdmin automatisch angelegt wurden.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/app</code></dt>
-  <dd>
-  <p>Dieses Verzeichnis ist als <code>PassengerAppRoot</code> des
-  Apache-Webserver-Moduls <a
-  href="https://www.phusionpassenger.com/">Phusion Passenger</a>
-  konfiguriert.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/app-ssl</code></dt>
-  <dd>
-  <p>Auch dieses Verzeichnis ist als <code>PassengerAppRoot</code> des
-  Apache-Webserver-Moduls konfiguriert. Es wird für https-Zugriffe
-  genutzt.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/cgi</code></dt>
-  <dd>
-  <p>Dies ist das Basisverzeichnis für CGI-Skripte. Ein Alias bildet
-  HTTP-Requests auf <code>http://hs-example.de/cgi-bin/</code> auf
-  dieses Verzeichnisses ab.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/cgi-ssl</code></dt>
-  <dd>
-  <p>Analog zu <code>~/doms/hs-example.de/cgi</code> ist dies das
-  Basisverzeichnis für CGI-Skripte beim Zugriff via https.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/etc</code></dt>
-  <dd>
-  <p>Dieses Verzeichnis enthält ggf. das Zonefile, mit dem sich der
-  Nameserver <a href="http://de.wikipedia.org/wiki/BIND">BIND</a>
-  konfigurieren lässt</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/etc/pri.hs-example.de</code></dt>
-  <dd>
-  <p>Mit dieser Datei können Sie eine Zonendatei für Ihre Domain selbst
-  verwalten. Damit können zum Beispiel einzelne Subdomains auf andere
-  Server umgeleitet oder eigene Mailserver angesprochen werden.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/fastcgi</code></dt>
-  <dd>
-  <p>Dies ist das Basisverzeichnis für FastCGI-Skripte. Ein Alias bildet
-  HTTP-Requests auf <code>http://hs-example.de/fastcgi-bin/</code> auf
-  dieses Verzeichnis ab.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/fastcgi-ssl</code></dt>
-  <dd>
-  <p>Analog zu <code>~/doms/hs-example.de/fastcgi</code> ist dies das
-  Basisverzeichnis für FastCGI-Skripte bei https-Zugriffen. Ein Alias
-  bildet HTTP-Requests auf
-  <code>https://hs-example.de/fastcgi-bin/</code> auf dieses Verzeichnis
-  ab.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/htdocs</code></dt>
-  <dd>
-  <p>Dieses Verzeichnis ist als <code>DocumentRoot</code> des Apache
-  Webserver konfiguriert. Es dient auch zur Aufnahme statischer Inhalte
-  im Zusammenhang mit der Nutzung von Phusion Passenger zur Auslieferung
-  der statischen Dateien.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/htdocs/.htaccess</code></dt>
-  <dd>
-  <p>In der Standardkonfiguration enthält diese Datei die Weiterleitung
-  auf die <code>www</code>-Subdomain:</p>
-  <pre><code>Redirect permanent / http://www.hs-example.de/</code></pre>
-  <p>Die verwendeten Regeln werden auf <strong>alle</strong> Subdomains
-  von <code>hs-example.de</code> angewendet. In der
-  <code>.htaccess</code> können</p>
-  <ul>
-  <li>eigene Fehlerseiten definiert,</li>
-  <li>MIME-Typen zugewiesen,</li>
-  <li>Passwortschutz eingerichtet,</li>
-  <li>Weiterleitungen durchgeführt werden.</li>
-  </ul>
-  </dd>
-  <dt><code>~/doms/hs-example.de/htdocs-ssl</code></dt>
-  <dd>
-  <p>Analog zu <code>~/doms/hs-example.de/htdocs</code> ist dieses
-  Verzeichnis als <code>DocumentRoot</code> des Apache Webserver für
-  Zugriffe via https konfiguriert.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/subs</code></dt>
-  <dd>
-  <p>Dieses Verzeichnis enthält alle Subdomains. Hier findet sich auch
-  die Subdomain <em>www.hs-example.de</em>.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/subs/example</code></dt>
-  <dd>
-  <p>Dies ist ein Beispiel für eine Subdomain, die Sie einfach selbst
-  anlegen können. Sie müssen hierzu nur im Verzeichnis <code>subs</code>
-  ein Verzeichnis mit dem Namen der gewünschten Subdomain anlegen und
-  anschließend die Dateien in das Verzeichnis übertragen.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/subs/www</code></dt>
-  <dd>
-  <p>Dieses Verzeichnis wird automatisch angelegt und üblicherweise vom
-  Webserver angesprochen, wenn keine Subdomain explizit genannt wird.
-  Die Adresse <code>http://hs-example.de</code> verweist üblicherweise
-  auf <code>http://www.hs-example.de</code>.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/subs-ssl</code></dt>
-  <dd>
-  <p>Analog zu <code>~/doms/hs-example.de/subs</code> enthält dieses
-  Verzeichnis alle Subdomains auf die via https zugegriffen wird.</p>
-  </dd>
-  <dt><code>~/doms/hs-example.de/var</code></dt>
-  <dd>
-  <p>In diesem Verzeichnis werden in der Nacht die Log-Dateien mit den
-  Zugriffen auf die Domain in gepackter Form bereitgestellt, wenn dies
-  in <code>/home/pacs/xyz00/etc/config.ini</code> entsprechend angegeben
-  ist.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="zugangsdaten-und-einstellungen" class="level3">
-  <h3>Zugangsdaten und Einstellungen</h3>
-  <!-- todo Das ist altbacken. Kommandozeile erklären -->
-  <p>Sie können Dateien mit einem FTP-Programm wie
-  <code>FileZilla</code>, <code>WinSCP</code> oder <code>scp</code> in
-  das Web-Paket kopieren. Sie benötigen dazu die gleichen Zugangsdaten
-  wie beim Einloggen via <code>ssh</code>.</p>
-  <dl>
-  <dt>Server:</dt>
-  <dd>
-  <p>xyz00.hostsharing.net</p>
-  </dd>
-  <dt>Benutzer:</dt>
-  <dd>
-  <p>xyz00-doms</p>
-  </dd>
-  <dt>Passwort:</dt>
-  <dd>
-  <p>PASSWORT</p>
-  </dd>
-  </dl>
-  <figure>
-  <img src="images/ftp-filezilla.jpg" style="width:70.0%"
-  alt="Eingabe der Zugangsdaten in Filezilla." />
-  <figcaption aria-hidden="true">Eingabe der Zugangsdaten in
-  Filezilla.</figcaption>
-  </figure>
-  <p>Wechseln Sie in den Ordner
-  <code>~/doms/hs-example.de/subs/www</code>, um zum Beispiel statische
-  Webseiten hochzuladen.</p>
-  <figure>
-  <img src="images/ftp-filezilla-www.jpg" style="width:70.0%"
-  alt="Wechsel in das Verzeichnis www." />
-  <figcaption aria-hidden="true">Wechsel in das Verzeichnis
-  <code>www</code>.</figcaption>
-  </figure>
-  <p>Auf der Kommandozeile geben Sie folgende Befehle ein:</p>
-  <pre class="console"><code>$ cd ~/website-dateien
-$ scp -r . xyz00-doms@xyz00.hostsharing.net:/doms/hs-example.de/subs-ssl/www</code></pre>
-  <p>Die Dateien in dem lokalen Ordner <code>website-dateien</code>
-  werden dadurch rekursiv in das Verzeichnis
-  <code>~/doms/hs-example.de/subs-ssl/www</code> des Domain-Admin
-  kopiert.</p>
-  </section>
-  </section>
-  <section id="kap-ssh-key-hochladen" class="level2">
-  <h2>Hochladen des SSH-Keys</h2>
-  <p>Sie können sich ohne Eingabe eines Passworts als Domain-Admin
-  einloggen, wenn Sie Ihren öffentlichen SSH-Key in das
-  Benutzerverzeichnis des Domain-Admins hochladen.</p>
-  <p>Wenn Sie noch keinen SSH-Key haben, können Sie ihn unter Mac OS X
-  und Linux mit diesem Befehl in Ihrem Heimverzeichnis erzeugen:</p>
-  <pre class="console"><code>$ ssh-keygen -b 4096 </code></pre>
-  <p>Der Befehl gibt eine Reihe von Meldungen aus. So werden Sie
-  beispielsweise aufgefordert eine Passphrase einzugeben. Dies ist das
-  Passwort, mit dem Sie Ihren SSH-Schlüssel beim Einsatz entsperren.
-  Wählen Sie eine Phrase, die Sie sich gut merken können, da Sie sie
-  häufig benötigen werden. Zur Sicherheit müssen Sie die Passphrase
-  zweimal eingeben. Anschließend informiert Sie das Programm, dass Ihr
-  geheimer Schlüssel in der Datei <code>~/.ssh/id_rsa</code> und ihr
-  öffentlicher Schlüssel in der Datei <code>~/.ssh/id_rsa.pub</code>
-  gespeichert wurden.</p>
-  <p>Nach der Erzeugung des Schlüssels können Sie sich das neue
-  Verzeichnis anschauen.</p>
-  <pre class="console"><code>$ ls .ssh/
-id_rsa  id_rsa.pub </code></pre>
-  <p>Nun können Sie Ihren öffentlichen Schlüssel in das Heimverzeichnis
-  des Domain-Admin kopieren. Unter Linux und anderen Unix-Systemen geht
-  dies mit dem Befehl <code>ssh-copy-id</code>:</p>
-  <pre class="console"><code>$ ssh-copy-id -i ~/.ssh/id_rsa.pub xyz00-doms@xyz00.hostsharing.net</code></pre>
-  <p>Um unter Windows einen SSH-Key zu erzeugen und hochzuladen, können
-  Sie das Programm <a href="https://www.putty.org/">PuTTY</a>
-  nutzen.</p>
-  </section>
-  <section id="e-mail-einrichten" class="level2">
-  <h2>E-Mail einrichten</h2>
-  <p>In diesem Kapitel werden zwei E-Mail-Adressen für eine neue Domain
-  angelegt:</p>
-  <ul>
-  <li>Die erste E-Mail-Adresse wird einem Postfach im Webpaket
-  zugeordnet</li>
-  <li>Die zweite E-Mail-Adresse wird einer externen E-Mail-Adresse
-  zugeordnet.</li>
-  </ul>
-  <section id="kap-postfach-anlegen" class="level3">
-  <h3>E-Mail-Adresse für Postfach im Webpaket</h3>
-  <p>Wir werden zunächst ein neues Postfach für Peter Mustermann anlegen
-  und dieses Postfach danach einer neu eingerichteten E-Mail-Adresse
-  zuordnen.</p>
-  <section id="neuen-e-mail-benutzer-anlegen" class="level4">
-  <h4>Neuen E-Mail-Benutzer anlegen</h4>
-  <p>Melden Sie sich als Paket-Admin (in unserem Beispiel
-  <code>xyz00</code>) bei HSAdmin an. Klicken Sie auf das Webpaket, in
-  dem Sie einen neuen E-Mail-Benutzer anlegen möchten, in unserem
-  Beispiel ist das <code>xyz00</code>, und gehen Sie dann in den Bereich
-  <code>Benutzer/Postfach</code>. Klicken Sie auf das Plussymbol für
-  <code>Neuen Eintrag anlegen</code>.</p>
-  <p>Tragen Sie anschließend die Zugangsdaten des neuen E-Mail-Benutzers
-  ein. In Abb. <a href="#fig-hsadmin-pa-postfach-anlegen">Die Angaben
-  für ein neues Postfach</a> lautet der Benutzernamen
-  <code>xyz00-mail_pm</code>.</p>
-  <div id="fig-hsadmin-pa-postfach-anlegen">
-  <figure>
-  <img src="images/hsadmin-pa-postfach-anlegen.jpg" style="width:100.0%"
-  alt="Die Angaben für ein neues Postfach." />
-  <figcaption aria-hidden="true">Die Angaben für ein neues
-  Postfach.</figcaption>
-  </figure>
-  </div>
-  <p>E-Mail-Benutzer bekommen keine Shell zugeordnet. Stattdessen wird
-  beim Einloggen das Programm <code>/usr/bin/passwd</code> gestartet.
-  Speichern Sie den neuen Eintrag mit <code>OK</code>. Das neue Konto
-  erscheint nun in der Liste der Benutzer.</p>
-  <div id="fig-hsadmin-pa-postfach-angelegt">
-  <figure>
-  <img src="images/hsadmin-pa-postfach-angelegt.jpg"
-  style="width:100.0%"
-  alt="Das Postfach für Peter Mustermann erscheint in der Liste." />
-  <figcaption aria-hidden="true">Das Postfach für Peter Mustermann
-  erscheint in der Liste.</figcaption>
-  </figure>
-  </div>
-  </section>
-  <section id="neues-postfach-einer-neuen-e-mail-adresse-zuordnen"
-  class="level4">
-  <h4>Neues Postfach einer neuen E-Mail-Adresse zuordnen</h4>
-  <p>Wir werden nun für Peter Mustermann eine neue E-Mail-Adresse
-  anlegen und das neue Postfach dieser Adresse zuordnen.</p>
-  <p>Melden Sie sich als Paket-Admin (in unserem Beispiel
-  <code>xyz00</code>) bei HSAdmin an. Gehen Sie nach dem Einloggen in
-  den Bereich <code>Domain</code>, in dem Ihre Domains aufgeführt
-  sind.</p>
-  <p>Wählen Sie die Domain aus, für die Sie eine E-Mail-Adresse
-  einrichten wollen. Im Hauptfenster werden die wesentlichen
-  Informationen zur ausgewählten Domain angezeigt (siehe Abb. <a
-  href="#fig-hsadmin-pa-domain-info">Die Informationen zur
-  Domain</a>).</p>
-  <div id="fig-hsadmin-pa-domain-info">
-  <figure>
-  <img src="images/hsadmin-pa-domain-info.jpg" style="width:100.0%"
-  alt="Die Informationen zur Domain werden angezeigt" />
-  <figcaption aria-hidden="true">Die Informationen zur Domain werden
-  angezeigt</figcaption>
-  </figure>
-  </div>
-  <p>Klicken Sie auf das Menü <code>E-Mail-Adresse</code>, damit die
-  E-Mail-Adressen angezeigt werden, die bereits für die Domain
-  eingerichtet wurden (siehe Abb. <a
-  href="#fig-hsadmin-pa-domain-emails">Bereits angelegte
-  E-Mail-Adressen</a>).</p>
-  <div id="fig-hsadmin-pa-domain-emails">
-  <figure>
-  <img src="images/hsadmin-pa-domain-emails.jpg" style="width:100.0%"
-  alt="Die bereits angelegten E-Mail-Adressen." />
-  <figcaption aria-hidden="true">Die bereits angelegten
-  E-Mail-Adressen.</figcaption>
-  </figure>
-  </div>
-  <p>Drei E-Mail-Adressen werden automatisch angelegt, wenn Sie eine
-  Domain eingerichtet haben:</p>
-  <dl>
-  <dt>abuse</dt>
-  <dd>
-  <p>Das ist die Adresse, an die Meldungen bei missbräuchlicher
-  Verwendung der Domain versendet werden. Die vollständige Adresse
-  lautet in unserem Beispiel <a href="mailto:abuse@hs-example.de"
-  class="email">abuse@hs-example.de</a></p>
-  </dd>
-  <dt>postmaster</dt>
-  <dd>
-  <p>Das ist die Adresse derjenigen Person, die für die
-  E-Mail-Postfächer und das E-Mail-System der Domain verantwortlich
-  ist.</p>
-  </dd>
-  <dt>webmaster</dt>
-  <dd>
-  <p>Das ist die Adresse des Webmasters, der für die Webauftritte unter
-  der Domain technisch verantwortlich ist.</p>
-  </dd>
-  </dl>
-  <p>Alle E-Mails an diese Adressen werden in der Voreinstellung an das
-  Postfach des zuständigen Domain-Admin ausgeliefert.</p>
-  <p>Klicken Sie nun auf das <code>+</code>-Symbol, damit sich das Menü
-  zum Anlegen einer neuen E-Mail-Adresse öffnet.</p>
-  <div id="fig-hsadmin-email-postfach-anlegen">
-  <figure>
-  <img src="images/hsadmin-email-postfach-anlegen-1.jpg"
-  style="width:100.0%"
-  alt="Anlegen einer E-Mail-Adresse mit Postfach" />
-  <figcaption aria-hidden="true">Anlegen einer E-Mail-Adresse mit
-  Postfach</figcaption>
-  </figure>
-  </div>
-  <p>Die Felder im Einzelnen:</p>
-  <dl>
-  <dt>lokaler Teil</dt>
-  <dd>
-  <p>der Teil der E-Mail-Adresse vor dem @-Zeichen, in unserem Beispiel
-  <code>pm</code>.</p>
-  </dd>
-  <dt>Subdomain</dt>
-  <dd>
-  <p>bleibt hier leer, da eine E-Mail-Adresse für die Hauptdomain
-  angelegt wird.</p>
-  </dd>
-  <dt>Domain</dt>
-  <dd>
-  <p>Hier erscheint die Domain, für die die Adresse eingerichtet wird.
-  In unserem Fall: hs-example.de</p>
-  </dd>
-  <dt>Postfach/Weiterleitung</dt>
-  <dd>
-  <p>In den Auswahlmenüs können Sie E-Mail-Adresse oder Postfach
-  auswählen. Im Beispiel leiten wir die E-Mails an das Postfach des
-  Domain-Admin <code>xyz00-mail_pm</code></p>
-  </dd>
-  </dl>
-  <p>Bestätigen mit dem Button <code>OK</code>.</p>
-  <p>Die neue E-Mail-Adresse wird nun in der Liste aufgeführt.</p>
-  <div id="fig-hsadmin-email-postfach-angelegt">
-  <figure>
-  <img src="images/hsadmin-email-postfach-angelegt.jpg"
-  style="width:100.0%"
-  alt="Die neue E-Mail-Adresse ist angelegt und erscheint in der Liste" />
-  <figcaption aria-hidden="true">Die neue E-Mail-Adresse ist angelegt
-  und erscheint in der Liste</figcaption>
-  </figure>
-  </div>
-  <p>Peter Mustermann ist nun unter der Adresse
-  <code>pm@hs-example.de</code> erreichbar und kann die Mails mit seinem
-  neuen E-Mail-Konto abrufen.</p>
-  <p>In Abschnitt <a href="#kap-emails-lesen">E-Mails senden und
-  empfangen</a> wird beschrieben, wie Peter Mustermann seine Mails über
-  ein Webinterface oder mit Hilfe eines E-Mail-Programms lesen kann.</p>
-  <video 
-  width="786" 
-  height="590" 
-  controls 
-  <source src="https://media.hostsharing.net/E-Mail-Adresse-und-Postfach-einrichten.webm" type="video/webm">
-  <source src="https://media.hostsharing.net/E-Mail-Adresse-und-Postfach-einrichten.mp4" type="video/mp4">
-  >
-  </video>
-  </section>
-  </section>
-  <section id="e-mail-adresse-mit-weiterleitung-an-externe-mail-adresse"
-  class="level3">
-  <h3>E-Mail-Adresse mit Weiterleitung an externe Mail-Adresse</h3>
-  <p>Um eine weitere E-Mail-Adresse anzulegen die E-Mails an eine
-  <em>externe</em> E-Mail-Adresse leitet, wird in der Eingabemaske bei:
-  Postfach/Weiterleitung: <em>E-Mail-Adresse</em> ausgewählt und
-  dahinter dann die externe Mail-Adresse, hier <a
-  href="mailto:peter@mustermann.de"
-  class="email">peter@mustermann.de</a>, eingetragen.</p>
-  <div id="fig-hsadmin-email-weiterleitung-1">
-  <figure>
-  <img src="images/hsadmin-email-weiterleitung-anlegen.jpg"
-  style="width:100.0%"
-  alt="Eingehende E-Mails sollen an eine externe E-Mail-Adresse weitergeleitet werden." />
-  <figcaption aria-hidden="true">Eingehende E-Mails sollen an eine
-  externe E-Mail-Adresse weitergeleitet werden.</figcaption>
-  </figure>
-  </div>
-  <p>Liste der angelegten E-Mail-Adressen:</p>
-  <div id="fig-hsadmin-email-weiterleitung-2">
-  <figure>
-  <img src="images/hsadmin-email-weiterleitung-angelegt.jpg"
-  style="width:100.0%"
-  alt="Auch die zweite neue E-Mail-Adresse erscheint in der Liste" />
-  <figcaption aria-hidden="true">Auch die zweite neue E-Mail-Adresse
-  erscheint in der Liste</figcaption>
-  </figure>
-  </div>
-  <!--
-  MOS: Die erste E-Mail-Adresse <pm@hs-example.de> steht beim Screenshot
-  nicht mehr in der Liste (sondern <info@hs-example.de>)
-  -->
-  </section>
-  <section id="kap-email-alias" class="level3">
-  <h3>E-Mail-Alias einrichten</h3>
-  <p>Wenn Sie mehrere Domains mit jeweils einem Domain-Admin verwalten,
-  so landen E-Mails an die zwingend vorgegebenen Systemempfänger
-  <code>abuse@</code>, <code>postmaster@</code> und
-  <code>webmaster@</code> in der Voreinstellung im Postfach des
-  jeweiligen Domain-Admin. All diese Postfächer regelmäßig zu
-  kontrollieren, ist aufwändig. Deshalb gibt es bei Hostsharing die
-  Möglichkeit E-Mail-Aliase einzurichten. Da ein E-Mail-Alias bei der
-  Mailzustellung bevorzugt behandelt wird, können Sie unter dem Namen
-  der Domain-Admins ein E-Mail-Alias einrichten und zum Beispiel an das
-  Postfach des Paket-Admins weiterleiten oder die E-Mail-Adresse des
-  Verantwortlichen.</p>
-  <p>Rufen Sie dazu HSAdmin unter
-  <code>https://admin.hostsharing.net</code> auf und gehen Sie in den
-  Bereich <code>Web-Paket</code>. Wählen Sie das entsprechende Web-Paket
-  aus und öffnen Sie den Reiter <code>E-Mail-Alias</code> (siehe Abb. <a
-  href="#fig-hsadmin-email-alias-1">Der Reiter E-Mail-Alias in
-  HSAdmin</a>).</p>
-  <div id="fig-hsadmin-email-alias-1">
-  <figure>
-  <img src="images/hsadmin-email-alias-1.jpg" style="width:100.0%"
-  alt="Der Reiter E-Mail-Alias in HSAdmin" />
-  <figcaption aria-hidden="true">Der Reiter E-Mail-Alias in
-  HSAdmin</figcaption>
-  </figure>
-  </div>
-  <p>Klicken Sie auf das Pluszeichen, um ein neues E-Mail-Alias
-  hinzuzufügen. Es öffnet sich das in Abb. <a
-  href="#fig-hsadmin-email-alias-2">Das Formular zum Hinzufügen eines
-  neuen Alias</a> gezeigte Formular. Das Kürzel für das Web-Paket ist
-  bereits in das Formularfeld eingetragen.</p>
-  <div id="fig-hsadmin-email-alias-2">
-  <figure>
-  <img src="images/hsadmin-email-alias-2.jpg" style="width:100.0%"
-  alt="Das Formular zum Hinzufügen eines neuen Alias. Das Paketkürzel ist bereits eingetragen." />
-  <figcaption aria-hidden="true">Das Formular zum Hinzufügen eines neuen
-  Alias. Das Paketkürzel ist bereits eingetragen.</figcaption>
-  </figure>
-  </div>
-  <p>Sie können eine E-Mail-Adresse angeben (siehe Abb. <a
-  href="#fig-hsadmin-email-alias-3">Umleitung an eine
-  E-Mail-Adresse</a>).</p>
-  <div id="fig-hsadmin-email-alias-3">
-  <figure>
-  <img src="images/hsadmin-email-alias-3.jpg" style="width:100.0%"
-  alt="Umleitung an eine E-Mail-Adresse" />
-  <figcaption aria-hidden="true">Umleitung an eine
-  E-Mail-Adresse</figcaption>
-  </figure>
-  </div>
-  <p>Sie können aber auch das Postfach eines anderen Benutzers
-  eintragen; in Abb. <a href="#fig-hsadmin-email-alias-4">Umleitung an
-  ein Postfach</a> beispielsweise das Postfach des Paket-Admins. Das
-  Formularfeld bietet Ihnen alle verfügbaren Postfächer zur Auswahl
-  an.</p>
-  <div id="fig-hsadmin-email-alias-4">
-  <figure>
-  <img src="images/hsadmin-email-alias-4.jpg" style="width:100.0%"
-  alt="Umleitung an ein Postfach" />
-  <figcaption aria-hidden="true">Umleitung an ein Postfach</figcaption>
-  </figure>
-  </div>
-  <p>Und zu guter Letzt können Sie auch an ein anderes E-Mail-Alias
-  umleiten. Bestätigen Sie Ihre Eingabe mit <code>OK</code>. Das neue
-  Alias erscheint anschließend in der Liste (siehe Abb. <a
-  href="#fig-hsadmin-email-alias-5">Die Alias-Liste</a>).</p>
-  <div id="fig-hsadmin-email-alias-5">
-  <figure>
-  <img src="images/hsadmin-email-alias-5.jpg" style="width:100.0%"
-  alt="Die Alias-Liste" />
-  <figcaption aria-hidden="true">Die Alias-Liste</figcaption>
-  </figure>
-  </div>
-  <p>Gehen Sie beim Anlegen von E-Mail-Aliases systematisch vor, damit
-  Sie in komplexen Situationen nicht den Überblick verlieren. Leiten Sie
-  E-Mails an Domain-Admins beispielsweise immer an den Paket-Admin
-  weiter oder an denjenigen, der für die Domain verantwortlich ist. Das
-  System ist sehr flexibel, sodass Sie die Verantwortlichkeiten gut
-  abbilden können und auch für spezielle Wünsche Ihrer Benutzer immer
-  eine gute Lösung finden.</p>
-  <div class="admonition">
-  <p>Nutzen Sie E-Mail-Aliases möglichst nicht, um E-Mails, die an eine
-  Funktionsadresse wie <code>sekretariat@</code> oder
-  <code>vertriebsteam@</code> geht, an einzelne Benutzer weiterzuleiten.
-  In diesem Fall ist es übersichtlicher, wenn Sie bei der Einrichtung
-  der E-Mail-Adresse gleich mehrere Postfächer als Ziel angeben.
-  Alternativ können Sie auch einen Benutzer einrichten (zum Beispiel für
-  das Sekretariat <code>xyz00-sek</code>) und im Heimverzeichnis des
-  Benutzers eine <code>.forward</code>-Datei pflegen, die die
-  E-Mail-Adresse aller Empfänger enthält.</p>
-  </div>
-  </section>
-  </section>
-  <section id="datenbank-einrichten" class="level2">
-  <h2>Datenbank einrichten</h2>
-  <p>Wenn Sie für eine Webanwendung eine MySQL- oder
-  PostgreSQL-Datenbank benötigen, können Sie die Datenbank und den
-  Datenbanknutzer in <code>HSAdmin</code> anlegen.</p>
-  <div class="hint">
-  <p>Aus Lizenzgründen pflegt Hostsharing die von MySQL abgespaltene
-  Open-Source-Datenbank MariaDB. Das Benutzer-Interface von HSAdmin
-  spricht noch von MySQL. Der Einfachheit halber sprechen wir in dieser
-  Anleitung deshalb noch von MySQL.</p>
-  </div>
-  <p>Beim Anlegen einer Datenbank ist die Reihenfolge entscheidend:</p>
-  <ol type="1">
-  <li>Zunächst den Datenbanknutzer anlegen, den Verwalter der jeweiligen
-  Datenbank</li>
-  <li>die Datenbank anlegen.</li>
-  </ol>
-  <video 
-  width="640" 
-  height="480" 
-  controls 
-  <source src="https://media.hostsharing.net/Datenbank-anlegen.webm" type="video/webm">
-  <source src="https://media.hostsharing.net/Datenbank-anlegen.mp4" type="video/mp4">
-  >
-  </video>
-  <section id="datenbanknutzer-anlegen" class="level4">
-  <h4>Datenbanknutzer anlegen</h4>
-  <p>Melden Sie sich mit dem Paket-Admin (<code>xyz00</code>) bei
-  HSAdmin unter <a href="https://admin.hostsharing.net"
-  class="uri">https://admin.hostsharing.net</a> an und gehen Sie in den
-  Bereich <code>Web-Paket</code>.</p>
-  <p>Klicken Sie das Menü <code>MySQL-Benutzer</code> an. Es wird die
-  Liste der MySQL-Benutzer angezeigt (siehe Abb. <a
-  href="#fig-hsadmin-mysql-benutzer">Das Menü MySQL-Benutzer</a>). Es
-  ist leer.</p>
-  <div id="fig-hsadmin-mysql-benutzer">
-  <figure>
-  <img src="images/hsadmin-mysql-benutzer.jpg" style="width:100.0%"
-  alt="Das Menü MySQL-Benutzer mit der leeren Liste der Datenbanknutzer." />
-  <figcaption aria-hidden="true">Das Menü <code>MySQL-Benutzer</code>
-  mit der leeren Liste der Datenbanknutzer.</figcaption>
-  </figure>
-  </div>
-  <p>Klicken Sie auf das Plus-Icon <code>Neuen Eintrag anlegen</code>.
-  Es erscheint folgende Eingabemaske:</p>
-  <div id="fig-hsadmin-mysql-benutzer-anlegen">
-  <figure>
-  <img src="images/hsadmin-mysql-benutzer-anlegen.jpg"
-  style="width:100.0%"
-  alt="Das Menü zum Anlegen eines Datenbanknutzers." />
-  <figcaption aria-hidden="true">Das Menü zum Anlegen eines
-  Datenbanknutzers.</figcaption>
-  </figure>
-  </div>
-  <p>Die Felder werden wie folgt ausgefüllt:</p>
-  <dl>
-  <dt>MySQL-Benutzer:</dt>
-  <dd>
-  <p>xyz00_dbuser</p>
-  </dd>
-  <dt>Passwort:</dt>
-  <dd>
-  <p>****</p>
-  </dd>
-  </dl>
-  <p>Merken Sie sich den Benutzernamen und das Passwort, da Sie beides
-  bei der Konfiguration Ihrer Webanwendung benötigen.</p>
-  <p>Mit dem Button <code>OK</code> wird der Eintrag gespeichert.</p>
-  <p>Der neue Datenbanknutzer erscheint nun in der Liste des Menüs
-  <code>MySQL-Benutzer</code>.</p>
-  <div id="fig-hsadmin-mysql-benutzer-angelegt">
-  <figure>
-  <img src="images/hsadmin-mysql-benutzer-angelegt.jpg"
-  style="width:100.0%"
-  alt="Der neu angelegte Datenbanknutzer erscheint in der Liste." />
-  <figcaption aria-hidden="true">Der neu angelegte Datenbanknutzer
-  erscheint in der Liste.</figcaption>
-  </figure>
-  </div>
-  <div class="attention">
-  <p>Beachten Sie, dass der Name eines Datenbankbenutzers immer mit dem
-  Paketnamen (in unserem Beispiel <code>xyz00</code>) gefolgt von einem
-  Unterstrich beginnen muss. Es darf kein Minuszeichen nach dem
-  Paketnamen benutzt werden. Zusammen mit den Zeichen danach darf der
-  Name des Datenbankbenutzers höchstens 16 Zeichen lang sein, zum
-  Beispiel <code>xyz00_wordpress</code> (15 Zeichen).</p>
-  </div>
-  </section>
-  <section id="datenbank-anlegen" class="level4">
-  <h4>Datenbank anlegen</h4>
-  <p>Nun können Sie die Datenbank für Ihre Webanwendung anlegen. Gehen
-  Sie in das Menü <code>MySQL-Datenbank</code>. Die Liste der
-  Datenbanken ist noch leer. Klicken Sie auf das Plus-Icon
-  <code>Neuen Eintrag anlegen</code>.</p>
-  <p>Es öffnet sich das Menü zum Anlegen einer Datenbank.</p>
-  <div id="fig-hsadmin-mysql-db-anlegen">
-  <figure>
-  <img src="images/hsadmin-mysql-db-anlegen.jpg" style="width:100.0%"
-  alt="Das Menü zum Anlegen einer Datenbank." />
-  <figcaption aria-hidden="true">Das Menü zum Anlegen einer
-  Datenbank.</figcaption>
-  </figure>
-  </div>
-  <p>Die Felder hier:</p>
-  <dl>
-  <dt>MySQL-Datenbank</dt>
-  <dd>
-  <p>xyz00_dbmysql</p>
-  </dd>
-  <dt>MySQL-Benutzer</dt>
-  <dd>
-  <p>xyz00_dbuser</p>
-  </dd>
-  <dt>Zeichenkodierung</dt>
-  <dd>
-  <p>UTF8</p>
-  </dd>
-  </dl>
-  <p>Mit dem Button <code>OK</code> wird der Eintrag gespeichert. Die
-  neue Datenbank erscheint in der Liste der Datenbanken.</p>
-  <div class="attention">
-  <p>Beachten Sie, dass der Name einer Datenbank immer mit dem
-  Paketnamen (in unserem Beispiel <code>xyz00</code>) gefolgt von einem
-  Unterstrich beginnen muss. Es darf kein Minuszeichen nach dem
-  Paketnamen benutzt werden. Zusammen mit den Zeichen danach darf der
-  Name der Datenbank höchstens 16 Zeichen lang sein, zum Beispiel
-  <code>xyz00_wpressdb</code> (14 Zeichen).</p>
-  </div>
-  <div id="fig-hsadmin-mysql-db-angelegt">
-  <figure>
-  <img src="images/hsadmin-mysql-db-angelegt.jpg" style="width:100.0%"
-  alt="Die neue Datenbank erscheint in der Liste." />
-  <figcaption aria-hidden="true">Die neue Datenbank erscheint in der
-  Liste.</figcaption>
-  </figure>
-  </div>
-  </section>
-  </section>
-  </section>
-  <section id="kap-emails-lesen" class="level1">
-  <h1>E-Mails senden und empfangen</h1>
-  <p>Wenn Sie bei Hostsharing ein E-Mail-Postfach haben, können Sie auf
-  die Mailfunktionen entweder mit einem E-Mail-Programm wie Thunderbird
-  zugreifen oder Sie lesen, schreiben und verwalten Ihre E-Mails im
-  Webbrowser über das Webmail-Interface von Hostsharing. Wie Sie dabei
-  jeweils vorgehen, wird in den folgenden beiden Abschnitten
-  erklärt.</p>
-  <p>Wir benutzen dabei die folgenden Zugangsdaten.</p>
-  <ul>
-  <li>E-Mail-Adresse: <a href="mailto:pm@hs-example.de"
-  class="email">pm@hs-example.de</a></li>
-  <li>Benutzername: xyz00-mail_pm</li>
-  <li>Passwort: ****</li>
-  <li>IMAP-Server: xyz00.hostsharing.net</li>
-  <li>SMTP-Server: xyz00.hostsharing.net</li>
-  </ul>
-  <dl>
-  <dt>E-Mail-Adresse:</dt>
-  <dd>
-  <p>Das Anlegen einer E-Mail-Adresse und die Zuweisung zu einem
-  Postfach wird im Abschnitt <a href="#kap-postfach-anlegen">Postfach
-  anlegen</a> beschrieben.</p>
-  </dd>
-  <dt>Benutzername:</dt>
-  <dd>
-  <p>Das Anlegen eines E-Mail-Benutzers wird ebenfalls im Abschnitt <a
-  href="#kap-postfach-anlegen">Postfach anlegen</a> erklärt.</p>
-  </dd>
-  <dt>Passwort:</dt>
-  <dd>
-  <p>Dies ist das Passwort, das dem E-Mail-Benutzer vergeben wird.</p>
-  </dd>
-  <dt>IMAP-Server:</dt>
-  <dd>
-  <p>Der Name des Mail-Eingangsservers ergibt sich aus dem Paketnamen.
-  Es handelt sich immer um eine Subdomain der Domain
-  <code>hostsharing.net</code>.</p>
-  </dd>
-  <dt>SMTP-Server:</dt>
-  <dd>
-  <p>Auch der Name des Ausgangsserver ergibt sich aus dem Paketnamen.
-  Die Adresse ist mit der Adresse des IMAP-Servers identisch.</p>
-  </dd>
-  </dl>
-  <section id="webmail-einrichten" class="level2">
-  <h2>Webmail einrichten</h2>
-  <p>Eine besonders bequeme Art, E-Mails zu lesen und zu schreiben, ist
-  das Webinterface von Hostsharing. Hostsharing setzt dafür das
-  Open-Source-Programm <a href="https://roundcube.net/">Roundcube
-  Webmail</a> ein. Sie benötigen zur Nutzung nur den Benutzernamen für
-  das Postfach und das entsprechende Passwort. Geben Sie im Webbrowser
-  die Adresse <a href="https://webmail.hostsharing.net"
-  class="uri">https://webmail.hostsharing.net</a> ein. Wie in <code
-  class="interpreted-text" role="numref">fig-webmail-login</code>
-  gezeigt werden Sie aufgefordert Ihren Benutzernamen und Ihr Passwort
-  einzugeben.</p>
-  <div id="fig-webmail-login">
-  <figure>
-  <img src="images/webmail-login.jpg" style="width:100.0%"
-  alt="Login des Webmail-Interface" />
-  <figcaption aria-hidden="true">Login des
-  Webmail-Interface</figcaption>
-  </figure>
-  </div>
-  <p>Wenn Sie sich das erste Mal mit dem Benutzernamen einloggen, werden
-  Sie aufgefordert, Ihre Absenderkennung zu vervollständigen.
-  Vorausgefüllt ist der Benutzername für das E-Mail-Konto
-  (<code>xyz00-mail_pm</code>) sowie das Postfach des E-Mail-Benutzers
-  (<code>xyz00-mail_pm@xyz00.hostsharing.net</code>). Beide Angaben
-  werden Sie normalerweise so nicht nutzen wollen.</p>
-  <div id="fig-webmail-individualisierung-1">
-  <figure>
-  <img src="images/webmail-individualisierung-1.jpg"
-  style="width:100.0%" alt="Individualisierung des Kontos" />
-  <figcaption aria-hidden="true">Individualisierung des
-  Kontos</figcaption>
-  </figure>
-  </div>
-  <p>Tragen Sie deshalb hier zum Beispiel Ihren Namen und die
-  E-Mail-Adresse ein, unter der Sie erreichbar sind. In unserem Beispiel
-  sind dies, wie in der Abbildung <a
-  href="#fig-webmail-individualisierung-2">Individualisierung des
-  Kontos</a> gezeigt, der Name ›Peter Mustermann‹ und die E-Mailadresse
-  ›pm@hs-example.de‹</p>
-  <div id="fig-webmail-individualisierung-2">
-  <figure>
-  <img src="images/webmail-individualisierung-2.jpg"
-  style="width:100.0%" alt="Individualisierung des Kontos" />
-  <figcaption aria-hidden="true">Individualisierung des
-  Kontos</figcaption>
-  </figure>
-  </div>
-  <p>Nach der Vervollständigung steht Ihnen die Weboberfläche von
-  Roundcube zur Verfügung.</p>
-  <div id="fig-webmail-oberflaeche">
-  <figure>
-  <img src="images/webmail-oberflaeche.jpg" style="width:100.0%"
-  alt="Die Benutzeroberfläche von Webmail." />
-  <figcaption aria-hidden="true">Die Benutzeroberfläche von
-  Webmail.</figcaption>
-  </figure>
-  </div>
-  <p>Hinweise zur Bedienung von Roundcube finden Sie im Hostsharing Wiki
-  auf der Seite: <a
-  href="https://wiki.hostsharing.net/index.php?title=Roundcube"
-  class="uri">https://wiki.hostsharing.net/index.php?title=Roundcube</a></p>
-  </section>
-  <section id="mail-client-einrichten" class="level2">
-  <h2>Mail-Client einrichten</h2>
-  <p>Hostsharing unterstützt die Auto-Konfiguration von E-Mail-Clients
-  durch die Protokolle <a
-  href="https://en.wikipedia.org/wiki/Autoconfig">Autoconfig</a> und
-  Autodiscover. Um einen E-Mail-Client zu konfigurieren, ist daher oft
-  nur die Eingabe der E-Mail-Adresse und des Passworts notwendig. Alles
-  andere handelt Ihr E-Mail-Client automatisch mit der
-  E-Mail-Infrastruktur von Hostsharing aus.</p>
-  <p>Falls dies nicht auf Anhieb funktioniert, finden Sie im Abschnitt
-  <a href="#">E-Mail Auto-Konfiguration</a>kap-ref-mailautoconfig)
-  mögliche Ursachen. Eventuell wurde die Domain nicht so konfiguriert,
-  dass sie die Funktion unterstützt.</p>
-  <p>Im Folgenden beschreiben wir, wie Sie in einem solchen Fall die
-  notwendigen Informationen mit der Hand eingeben können.</p>
-  <section id="e-mails-über-imap-abrufen" class="level3">
-  <h3>E-Mails über IMAP abrufen</h3>
-  <p>Um Mails mit Hilfe eines Desktop-Clients wie Thunderbird zu
-  empfangen und um Mails zu versenden, benötigen Sie bei manueller
-  Eingabe der Konfiguration auch die Angaben zum IMAP- und zum
-  SMTP-Server.</p>
-  <p>Im Folgenden spielen wir das Anlegen eines neuen Kontos im Programm
-  Thunderbird durch:</p>
-  <p>Gehen Sie in das Menü
-  <code>Bearbeiten --&gt; Konto-Einstellungen</code>, um zu den
-  Konto-Einstellungen zu gelangen. Anschließend klicken Sie auf das Menü
-  <code>Konto-Aktionen --&gt; E-Mail-Konto hinzufügen...</code>, damit
-  sich der in Abbildung <a href="#fig-mail-client-1">Eingabe von
-  E-Mail-Adresse und Passwort</a> gezeigte Dialog zum Anlegen eines
-  neuen E-Mail-Kontos öffnet.</p>
-  <div id="fig-mail-client-1">
-  <figure>
-  <img src="images/mail-client-1.jpg" style="width:100.0%"
-  alt="Eingabe von E-Mail-Adresse und Passwort" />
-  <figcaption aria-hidden="true">Eingabe von E-Mail-Adresse und
-  Passwort</figcaption>
-  </figure>
-  </div>
-  <p>Geben Sie dort Ihren Namen, die E-Mail-Adresse und das Passwort des
-  E-Mail-Benutzers ein und klicken Sie auf <code>Weiter</code>.</p>
-  <div id="fig-mail-client-2">
-  <figure>
-  <img src="images/mail-client-2.jpg" style="width:100.0%"
-  alt="Die automatisch ermittelten Zugangsdaten" />
-  <figcaption aria-hidden="true">Die automatisch ermittelten
-  Zugangsdaten</figcaption>
-  </figure>
-  </div>
-  <p>Thunderbird und andere E-Mail-Clients schließen aus der
-  E-Mail-Adresse auf die Zugangsdaten. Die ermittelten bzw. geratenen
-  Zugangsdaten werden in Abbildung <a href="#fig-mail-client-2">Die
-  automatisch ermittelten Zugangsdaten</a> angezeigt. Die automatische
-  Konfiguration hat nur dann funktioniert, wenn als Posteingangs- und
-  Postausgangsserver eine Adresse in der Form
-  <code>xyz00.hostsharing.net</code> gefunden wurde. Wenn dies der Fall
-  ist, können Sie auf <code>Fertig</code> klicken. Wenn Thunderbird
-  einen anderen Servernamen, zum Beispiel wie in der Abbildung unter
-  Verwendung Ihrer Domain, angibt, müssen Sie die richtigen Daten
-  manuell eingeben.</p>
-  <p>Klicken Sie dazu auf <code>Manuell bearbeiten</code>, damit sich
-  das <a href="#fig-mail-client-3">Formular für die manuelle eingabe der
-  Zugangsdaten</a> öffnet.</p>
-  <div id="fig-mail-client-3">
-  <figure>
-  <img src="images/mail-client-3.jpg" style="width:100.0%"
-  alt="Das Formular für die manuelle Eingabe der Zugangsdaten" />
-  <figcaption aria-hidden="true">Das Formular für die manuelle Eingabe
-  der Zugangsdaten</figcaption>
-  </figure>
-  </div>
-  <p>Geben Sie in dieses Formular, wie in der Abbildung gezeigt, die
-  richtigen Zugangsdaten für den IMAP-Server, den SMTP-Server und den
-  Benutzernamen ein.</p>
-  <div id="fig-mail-client-4">
-  <figure>
-  <img src="images/mail-client-4.jpg" style="width:100.0%"
-  alt="Geben Sie den Benutzernamen des E-Mail-Kontos und den richtigen Server an." />
-  <figcaption aria-hidden="true">Geben Sie den Benutzernamen des
-  E-Mail-Kontos und den richtigen Server an.</figcaption>
-  </figure>
-  </div>
-  <p>Bestätigen Sie die Eingabe mit einem Klick auf
-  <code>Fertig</code>.</p>
-  </section>
-  <section id="e-mails-über-pop3-abrufen" class="level3">
-  <h3>E-Mails über POP3 abrufen</h3>
-  <p>Sie können E-Mails auch über POP3 abrufen. Benutzen Sie dazu den
-  Port 110 für STARTTLS oder 995 für SSL/TLS. Die übrigen Zugangsdaten
-  bleiben gleich. Folgen Sie den Anweisungen Ihrer E-Mail-Software.</p>
-  <div class="admonition">
-  <p>Hostsharing unterstützt verschlüsselte Verbindungen über STARTTLS
-  und SSL/TLS auf unterschiedlichen Ports. Lesen Sie dazu die Abschnitte
-  <a href="#kap-ref-maileingang">Posteingangsserver</a> und <a
-  href="#kap-ref-mailausgang">Postausgangsserver</a></p>
-  </div>
-  </section>
-  </section>
-  <section id="e-mail-passwort-ändern" class="level2">
-  <h2>E-Mail-Passwort ändern</h2>
-  <p>E-Mail-Benutzer können ihr Passwort über HSAdmin und teilweise auch
-  per SSH ändern. Falls dem E-Mail-Benutzer vom Paket-Admin als Shell
-  das Programm <code>/bin/false</code> zugeteilt wurde, lässt sich das
-  Passwort nur über HSAdmin ändern. Hat der E-Mail-Benutzer dagegen als
-  Shell das Programm <code>/usr/bin/passwd</code>, so kann er sein
-  Passwort auch per SSH ändern. Die Hintergründe werden im Abschnitt <a
-  href="#kap-benutzerrechte">Benutzerrechte</a> erklärt.</p>
-  <section id="e-mail-passwort-in-hsadmin-ändern" class="level3">
-  <h3>E-Mail-Passwort in HSAdmin ändern</h3>
-  <p>Der Benutzer meldet sich mit seinem E-Mail-Benutzername in HSAdmin
-  an. Anschließend klickt er oben rechts auf seinen Benutzernamen. Es
-  öffnet sich ein Menü, in dem ein neues Passwort eingetragen werden
-  kann. Die Prozedur wurde bereits im Abschnitt <a
-  href="#kap-erstes-einloggen">Erstes Einloggen und Änderung des
-  Passworts</a> beschrieben.</p>
-  <video 
-      width="786" 
-      height="590" controls 
-      <source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-HSAdmin-aendern.webm" type="video/webm">
-      <source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-HSAdmin-aendern.mp4" type="video/mp4">
-  >
-  </video>
-  </section>
-  <section id="e-mail-passwort-per-ssh-ändern" class="level3">
-  <h3>E-Mail-Passwort per SSH ändern</h3>
-  <p>Der Benutzer meldet sich per SSH im Webpaket an und ändert mit dem
-  Programm <code>passwd</code> sein Passwort. Falls der E-Mail-Benutzer
-  eine interaktive Shell hat, muss er dazu das Programm eigens aufrufen.
-  Wurde ihm jedoch lediglich das Programm <code>/usr/bin/passwd</code>
-  zugewiesen, öffnet sich statt einer interaktiven Sitzung sofort das
-  Programm <code>passwd</code>:</p>
-  <pre class="text"><code>$ ssh xyz00-mail@xyz00.hostsharing.net
-xyz00-mail@xyz00.hostsharing.net&#39;s password:</code></pre>
-  <p>Nach Eingabe des aktuellen Passworts wird sofort
-  <code>passwd</code> gestartet und erneut das aktuelle Passwort
-  abgefragt:</p>
-  <pre class="text"><code>Changing password for xyz00-mail.
-Current password: </code></pre>
-  <p>Nach einer erneuten Eingabe des aktuellen Passworts kann der
-  Benutzer zweimal ein neues eingeben. Anschließend erscheint eine
-  Erfolgsmeldung und die Verbindung wird geschlossen:</p>
-  <pre class="text"><code>New password: 
-Retype new password: 
-passwd: password updated successfully
-Connection to xyz00.hostsharing.net closed.</code></pre>
-  <p>Damit ist das neue Passwort gesetzt.</p>
-  <div class="attention">
-  <p>Bitte vergessen Sie nicht das neue Passwort in Ihr E-Mail-Programm
-  einzutragen.</p>
-  </div>
-  <video 
-      width="786" 
-      height="590" 
-      controls 
-      <source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-SSH-aendern.webm" type="video/webm">
-      <source src="https://media.hostsharing.net/Passwort-fuer-E-Mail-Benutzer-via-SSH-aendern.mp4" type="video/mp4">
-  >
-      </video>
-  </section>
-  </section>
-  </section>
-  <section id="kap-referenz" class="level1">
-  <h1>Referenz</h1>
-  <div class="intro">
-  <p>In diesem Kapitel werden die Dienste und Funktionen der Managed
-  Operations Platform von Hostsharing dokumentiert.</p>
-  </div>
-  <section id="kap-benutzerrollen" class="level2">
-  <h2>Benutzerrollen</h2>
-  <p>Um Dienste, Programme und Dämonprozesse sicher voneinander zu
-  trennen, laufen sie im Debian-Betriebssystem unter verschiedenen
-  Benutzern mit jeweils klar definierten Rechten. Dies gilt auch für die
-  Aufgaben, die man als Nutzer der Plattform in seinem Web-Paket
-  erledigt. Wer mit der Managed Operations Platform Webanwendungen
-  betreibt, muss im Laufe der Zeit zahlreiche Benutzer anlegen. Jeder
-  Benutzer erfüllt eine spezielle Rolle. Die Rollen werden durch die
-  Vergabe von Rechten auf Betriebssystemebene definiert. Für Personen,
-  die bisher noch nicht mit Unix-Systemen und dem Konzept
-  unterschiedlicher Benutzer gearbeitet haben, stellt dieses
-  Mehrbenutzerkonzept am Anfang eine Hürde dar. Ausführliche
-  Unix-Kenntnisse sind nicht erforderlich, um auf der
-  Hostsharing-Plattform Benutzer anzulegen, da das Verwaltungswerkzeug
-  <code>HSAdmin</code> diese Aufgabe vereinfacht. Da in diesem Handbuch
-  die Kenntnis der Rollen an vielen Stellen vorausgesetzt wird, werden
-  sie in diesem Kapitel ausführlich beschrieben.</p>
-  </section>
-  <section id="kap-benutzerrechte" class="level2">
-  <h2>Benutzerrechte</h2>
-  <p>HSAdmin bietet uns die Möglichkeit, dem Benutzer eine Login-Shell
-  für interaktive Sitzungen zuzuordnen oder genau dies zu verhindern.
-  Wir haben die Wahl zwischen den Kommandointerpretern
-  <code>bash</code>, <code>csh</code>, <code>ksh</code>,
-  <code>tcsh</code> oder <code>zsh</code> und den Programmen
-  <code>false</code>, <code>passwd</code> und <code>scponly</code>. Abb.
-  <a href="#fig-hsadmin-shell">Das Auswahlmenü mit den Shell- und
-  Kommando-Interpretern.</a> zeigt das entsprechende Menü.</p>
-  <div id="fig-hsadmin-shell">
-  <figure>
-  <img src="images/hsadmin-benutzershells.jpg" style="width:100.0%"
-  alt="Das Auswahlmenü mit den Shell- und Kommando-Interpretern." />
-  <figcaption aria-hidden="true">Das Auswahlmenü mit den Shell- und
-  Kommando-Interpretern.</figcaption>
-  </figure>
-  </div>
-  <dl>
-  <dt>/bin/false</dt>
-  <dd>
-  <p>Benutzer, denen das Programm <code>/bin/false</code> als Shell
-  zugeordnet wird, können sich nicht in ihrem Account einloggen und eine
-  interaktive Sitzung starten. Diese Einstellung eignet sich für
-  Systembenutzer, die Programme im Webpaket ausführen. sich aber nicht
-  von außen einloggen sollen. Dies können auch Mail-Benutzer sein.</p>
-  </dd>
-  <dt>/bin/bash</dt>
-  <dd>
-  <p>Die <a
-  href="https://manpages.debian.org/buster/bash/bash.1.en.html">Bourne-Again-Shell</a>.
-  Auf vielen Linuxsystemen ist dies die Standard-Shell.</p>
-  </dd>
-  <dt>/bin/csh</dt>
-  <dd>
-  <p>Die <a
-  href="https://manpages.debian.org/buster/csh/csh.1.en.html">C-Shell</a>.</p>
-  </dd>
-  <dt>/bin/ksh</dt>
-  <dd>
-  <p>Die <a
-  href="https://manpages.debian.org/buster/ksh/ksh.1.en.html">Korn-Shell</a>.</p>
-  </dd>
-  <dt>/bin/tcsh</dt>
-  <dd>
-  <p>Eine <a
-  href="https://manpages.debian.org/buster/tcsh/tcsh.1.en.html">erweiterte
-  C-Shell</a>.</p>
-  </dd>
-  <dt>/bin/zsh</dt>
-  <dd>
-  <p>Die <a
-  href="https://manpages.debian.org/buster/zsh-common/zsh.1.en.html">Z-Shell</a>.</p>
-  </dd>
-  <dt>/usr/bin/passwd</dt>
-  <dd>
-  <p>Benutzer, denen das Programm <code>/usr/bin/passwd</code>
-  zugeordnet wird, können beim Versuch, sich mit <code>ssh</code>
-  einzuloggen, ihr Passwort ändern. Eine interaktive Sitzung können sie
-  jedoch nicht starten. Dies ist sinnvoll, um Benutzern ein größeres Maß
-  an Vertraulichkeit ihrer Kommunikation zu ermöglichen. Der Paket-Admin
-  setzt für den E-Mail-Benutzer zwar ein initiales Passwort, der
-  Benutzer kann dies aber sogleich ändern, sodass der Paket-Admin den
-  E-Mail-Verkehr des Benutzers nicht unbemerkt mitlesen kann.</p>
-  </dd>
-  <dt>/usr/bin/scponly</dt>
-  <dd>
-  <p>Diese Zuordnung ermöglicht dem Benutzer den Gebrauch der Programme
-  <code>scp</code> und <code>sftp</code>. Eine interaktive Sitzung ist
-  nicht möglich.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="kap-webpaket" class="level2">
-  <h2>Web-Paket</h2>
-  <p>Die Mitglieder von Hostsharing nutzen die Managed Operations
-  Platform, indem sie ein oder mehrere Web-Pakete buchen. Technisch
-  gesehen ist ein Web-Paket eine UNIX-Nutzer-Gruppe. Alle Web-Pakete
-  sind damit durch gesonderte Zugriffsrechte gegeneinander abgeschottet.
-  Mit seinem Mitglieds-Account hat das Mitglied Zugriff auf alle seine
-  Web-Pakete und kann sie in HSAdmin verwalten. Der Paket-Admin hat nur
-  Zugriff auf sein eigenes Web-Paket.</p>
-  <p>Ein Web-Paket hat einen definierten Leistungsumfang, der durch
-  Optionen jederzeit erweitert werden kann. Die konkrete Staffelung der
-  Optionen wird auf folgenden Webseiten beschrieben:</p>
-  <ol type="1">
-  <li>Leistungsumfang <a
-  href="https://www.hostsharing.net/angebote/managed-webspace/">Managed
-  Webspace</a></li>
-  <li>Leistungsumfang <a
-  href="https://www.hostsharing.net/angebote/managed-server/">Managed
-  Server</a></li>
-  </ol>
-  <p>Die Web-Pakete werden nach einem einheitlichen Muster bezeichnet.
-  Dieses besteht aus einem dreistelligen Präfix und einem zweistelligen
-  Zähler (z.B xyz00). Das Präfix kann frei gewählt werden, falls es noch
-  nicht vergeben ist. Mit ihm wird das Mitglied identifiziert. Es dient
-  daher auch als Benutzername für den Mitglieds-Account (vgl. Abschnitt
-  <a href="#kap-benutzerrollen">Benutzerrollten</a>)</p>
-  <p>Aus der Paket-Bezeichnung (xyz00) ergeben sich weitere
-  Benennungen:</p>
-  <ul>
-  <li>der Name des Paket-Admins: Er lautet wie das Web-Paket, in diesem
-  Beispiel <code>xyz00</code>.</li>
-  <li>das Paketverzeichnis <code>/home/pacs/xyz00/</code>; es ist daher
-  auch das Benutzerverzeichnis des Paket-Admin.</li>
-  </ul>
-  <p>Ein Web-Paket enthält in der Regel:</p>
-  <ul>
-  <li>die Verzeichnisse von Benutzern, deren Struktur von der jeweiligen
-  Rolle des Benutzers abhängig ist</li>
-  <li>die genutzten Datenbanken</li>
-  <li>die aufgeschalteten Domains</li>
-  </ul>
-  <p>Jedes Web-Paket hat eine initial angelegte Verzeichnisstruktur. Die
-  Verzeichnisstruktur entspricht der dem jeweiligen Nutzer
-  zugesprochenen Rolle. Die Verzeichnisstrukturen von Paket-Admin,
-  Domain-Admin und E-Mail-Benutzer werden im Folgenden beschrieben.</p>
-  <section id="verzeichnisebene-paket-admin" class="level3">
-  <h3>Verzeichnisebene Paket-Admin</h3>
-  <p>Man kann sich als Paket-Admin in seinem Web-Paket per SSH
-  folgendermaßen anmelden:</p>
-  <pre class="console"><code>$ ssh xyz00@xyz00.hostsharing.net</code></pre>
-  <p>Danach können die Verzeichnisse mit dem Befehl <code>ls</code>
-  angezeigt werden.</p>
-  <pre class="console"><code>xyz00@h05:~$ ls -a</code></pre>
-  <p>Das Home-Verzeichnis des Paket-Admins umfasst initial folgende
-  Verzeichnisse:</p>
-  <table style="width:100%;">
-  <caption>Verzeichnisstruktur des Paket-Admins</caption>
-  <colgroup>
-  <col style="width: 16%" />
-  <col style="width: 12%" />
-  <col style="width: 12%" />
-  <col style="width: 12%" />
-  <col style="width: 45%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Rechte</th>
-  <th style="text-align: left;">Nutzer</th>
-  <th style="text-align: left;">Gruppe</th>
-  <th style="text-align: left;">Ordner</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwx-----</code></td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">.bak</td>
-  <td style="text-align: left;">Ablage komprimierter Backups der
-  Datenbanken und Cronjobs.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>dr-xr-x--T</code></td>
-  <td style="text-align: left;">httpd</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">doms</td>
-  <td style="text-align: left;">Ablage der Paketdomain
-  xyz00.hostsharing.net.</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwx------</code></td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">etc</td>
-  <td style="text-align: left;">Ablage für eigene
-  Konfigurationsdateien.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">users</td>
-  <td style="text-align: left;">Ablage der angelegten Nutzer</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-x---</code></td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">var</td>
-  <td style="text-align: left;">Ablage von Logfiles (z.B. Web-Logs,
-  Traffic-Logs)</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwx------</code></td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">Maildir</td>
-  <td style="text-align: left;">Mailordner des Paket-Admins.</td>
-  </tr>
-  </tbody>
-  </table>
-  </section>
-  <section id="verzeichnisebene-domain-admin" class="level3">
-  <h3>Verzeichnisebene Domain-Admin</h3>
-  <p>Man kann sich als Domain-Admin in seinem Web-Paket per SSH
-  folgendermaßen anmelden. Unter der Annahme, dass der Domain-Admin für
-  die Domain <code>hs-example.de</code> angelegt wurde und sein
-  Benutzername <code>xyz00-hs_example.de</code> ist, lautet der Befehl
-  zum Anmelden folgendermaßen:</p>
-  <pre class="console"><code>$ ssh xyz00-hs_example.des@xyz00.hostsharing.net</code></pre>
-  <p>Danach können die Verzeichnisse mit dem Befehl <code>ls</code>
-  angezeigt werden.</p>
-  <pre class="console"><code>xyz00-doms@h05:~$ ls -a</code></pre>
-  <p>Das Home-Verzeichnis des Domain-Admins umfasst folgende
-  Verzeichnisse:</p>
-  <table style="width:100%;">
-  <caption>Verzeichnisstruktur des Domain-Admin</caption>
-  <colgroup>
-  <col style="width: 18%" />
-  <col style="width: 23%" />
-  <col style="width: 11%" />
-  <col style="width: 12%" />
-  <col style="width: 35%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Rechte</th>
-  <th style="text-align: left;">Nutzer</th>
-  <th style="text-align: left;">Gruppe</th>
-  <th style="text-align: left;">Ordner</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;"><code>dr-xr-x--T</code></td>
-  <td style="text-align: left;">httpd</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">doms</td>
-  <td style="text-align: left;">Ablage der Domains dieses
-  Domain-Admins.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwx------</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">Maildir</td>
-  <td style="text-align: left;">Mailordner des Domain-Admins.</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Unterhalb des Ordners <em>doms</em> findet sich für jede Domain ein
-  weiterer Ordner mit dem Namen der Domain, zum Beispiel
-  <em>example.com</em>, und darin befindet sich die Verzeichnisstruktur
-  für die jeweilige Domain:</p>
-  <table>
-  <caption>Verzeichnisstruktur einer Domain</caption>
-  <colgroup>
-  <col style="width: 13%" />
-  <col style="width: 19%" />
-  <col style="width: 10%" />
-  <col style="width: 10%" />
-  <col style="width: 45%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Rechte</th>
-  <th style="text-align: left;">Nutzer</th>
-  <th style="text-align: left;">Gruppe</th>
-  <th style="text-align: left;">Ordner</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">cgi</td>
-  <td style="text-align: left;">Ablage für CGI-Skripte zur Generierung
-  dynamischer Webseiten in einem Webserver.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">cgi-ssl</td>
-  <td style="text-align: left;">Ablage für CGI-Skripte zur Generierung
-  dynamischer Webseiten, die verschlüsselt ausgeliefert werden</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">fastcgi</td>
-  <td style="text-align: left;">Ablage für Fast-CGI-Programme zur
-  Generierung dynamischer Webseiten in einem Webserver.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">fastcgi-ssl</td>
-  <td style="text-align: left;">Ablage für Fast-CGI-Programme zur
-  Generierung dynamischer Webseiten, die verschlüsselt ausgeliefert
-  werden</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">htdocs</td>
-  <td style="text-align: left;">Ablage für die Daten einer Webseite,
-  wenn diese unverschlüsselt ausgeliefert werden soll.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">subs</td>
-  <td style="text-align: left;">Ablage für Sub-Domain aus htdocs, wenn
-  diese unverschlüsselt ausgeliefert werden soll.</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">htdocs-ssl</td>
-  <td style="text-align: left;">Ablage für die Daten einer Webseite,
-  wenn diese verschlüsselt ausgeliefert werden soll.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">subs-ssl</td>
-  <td style="text-align: left;">Ablage für Sub-Domain aus htdocs-ssl,
-  wenn diese verschlüsselt ausgeliefert werden soll.</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">etc</td>
-  <td style="text-align: left;">Ablage für domaineigene
-  Konfigurationsdateien (z.B. eigenes Zonefile.</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>drwxr-xr-x</code></td>
-  <td style="text-align: left;">xyz00-hs_example.de</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">var</td>
-  <td style="text-align: left;">Ablage für Logfiles.</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die Verzeichnisstruktur wird auch im Abschnitt <a
-  href="#kap-einstieg-ordnerstruktur">Ordnerstruktur</a>
-  beschrieben.</p>
-  </section>
-  <section id="verzeichnisebene-e-mail-nutzer" class="level3">
-  <h3>Verzeichnisebene E-Mail-Nutzer</h3>
-  <p>Das Home-Verzeichnis eines E-Mail-Benutzers umfasst nur sein
-  Postfach:</p>
-  <table style="width:100%;">
-  <caption>Verzeichnisstruktur eines E-Mail-Benutzers</caption>
-  <colgroup>
-  <col style="width: 20%" />
-  <col style="width: 17%" />
-  <col style="width: 13%" />
-  <col style="width: 14%" />
-  <col style="width: 34%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Rechte</th>
-  <th style="text-align: left;">Nutzer</th>
-  <th style="text-align: left;">Gruppe</th>
-  <th style="text-align: left;">Ordner</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;"><code>drwxr-----</code></td>
-  <td style="text-align: left;">xyz00-mail</td>
-  <td style="text-align: left;">xyz00</td>
-  <td style="text-align: left;">Maildir</td>
-  <td style="text-align: left;">Mailordner des E-Mail-Nutzers.</td>
-  </tr>
-  </tbody>
-  </table>
-  </section>
-  <section id="kap-quota" class="level3">
-  <h3>Speicherbelegung</h3>
-  <p>Jedem Web-Paket steht nur ein begrenzter Speicher zur Verfügung.
-  Der tatsächlich belegte Speicher darf den gebuchten nicht dauerhaft
-  überschreiten.</p>
-  <p>Zum belegten Speicher zählen neben den sichtbaren Dateien in
-  <code>/home/pacs/xyz00</code>, die Sicherungen der Datenbanken unter
-  <code>/home/pacs/xyz00/.bak/</code> sowie gegebenenfalls Dateien in
-  <code>/home/restore</code> oder temporäre Daten im Verzeichnis
-  <code>/tmp</code>.</p>
-  <p>Die Speicherbegrenzung für ein Web-Paket ist unter Linux durch ein
-  Quota für die Gruppe <code>xyz00</code> realisiert. Die aktuelle
-  Belegung lässt sich mit dem Kommando</p>
-  <pre class="console"><code>$ quota -gs</code></pre>
-  <p>ermitteln. Die Ausgabe</p>
-  <pre class="console"><code>Disk quotas for group xyz00 (gid 999999): 
-   Filesystem   space   quota   limit   grace   files   quota   limit   grace
-   /dev/vda2    5587M   6144M   9216M            103k   6292k   6292k     </code></pre>
-  <p>bedeutet:</p>
-  <ul>
-  <li>Es sind 5587 MB von 6144 MB belegt</li>
-  <li>Temporär dürfen bis zu 9216 MB in Anspruch genommen werden</li>
-  <li>Außerdem sind 103.000 Dateien angelegt worden</li>
-  <li>Die maximale Anzahl der Dateien ist auf 6.292.000 beschränkt</li>
-  <li>Sobald das Quota überschritten wird, würde unter
-  <code>grace</code> die verbleibende Zeit angezeigt, innerhalb derer
-  wieder das Quota unterschritten sein muss. Sonst wird das Paket
-  gesperrt, das heißt es können keine Dateien mehr angelegt werden,
-  E-Mails werden nicht mehr zugestellt.</li>
-  </ul>
-  <p>Falls Sie dauerhaft mehr Speicherplatz benötigen, können Sie diesen
-  jederzeit hinzubuchen. Wenden Sie sich dazu an den <a
-  href="mailto:service@hostsharing.net">Service</a>.</p>
-  </section>
-  </section>
-  <section id="kap-ref-domain" class="level2">
-  <h2>Domains</h2>
-  <p>Die Domainverwaltung bei Hostsharing ist in zwei unabhängige
-  Bereiche aufgeteilt.</p>
-  <ol type="1">
-  <li><p>Die Domaineinrichtung in einem Web-Paket. Dies geschieht mit
-  HSAdmin. Die Benutzung der Weboberfläche wird im Abschnitt <a
-  href="#kap-hsadmin-einstieg">Einstieg in HSAdmin</a>, speziell im
-  Abschnitt <a href="#kap-hsadmin-domain-anlegen">Domain in HSAdmin
-  anlegen</a> beschrieben. Die Nutzung des Kommandozeilen-Tools von
-  HSAdmin erklärt Abschnitt <a href="#kap-hsadmin">HSAdmin</a>.</p></li>
-  <li><p>Die Domainregistrierung im Domainbestellsystems von Partnergate
-  zur Konnektierung, also der eigentlichen Registrierung von Domains bei
-  einem Registrar. Das Domainbestellsystem dient auch zur Vergabe
-  weiterer Aufträgen an Registrierungstellen. Jedes Mitglied von
-  Hostsharing erhält für dieses Domainbestellsystem Zugangsdaten. Sie
-  bestehen aus der Reseller-ID und einem Passwort.</p></li>
-  </ol>
-  <p>Hostsharing gibt seinen Mitgliedern bei der Verwaltung von Domains
-  große Freiheiten, da beide Bereiche nicht zwingend zusammen genutzt
-  werden müssen. Sie können Domains über das Domainbestellsystem
-  registrieren und bei anderen Hostern betreiben. Sie können Domains,
-  die Sie bei anderen Hostern registriert haben, bei Hostsharing
-  betreiben.</p>
-  <p>Die Verwaltung einer Domain umfasst:</p>
-  <ul>
-  <li>Domain aufschalten,</li>
-  <li>Domain-Registrierung,</li>
-  <li>Domain-Transfer zur Hostsharing eG,</li>
-  <li>Extern registrierte Domain aufschalten,</li>
-  <li>Extern registrierte Sub-Domain aufschalten,</li>
-  <li>Domain neu zuordnen (Domain-Admin neu zuordnen oder Zuordnung zu
-  einem Web-Paket ändern),</li>
-  <li>Sub-Domain neu zuordnen (Domain-Admin neu zuordnen oder Zuordnung
-  zu einem Web-Paket ändern),</li>
-  <li>Lokale Sub-Domain separat aufschalten,</li>
-  <li>Verwaltung des Zonefile,</li>
-  <li>Verwaltung der Domain-Daten (zum Beispiel Domain-Handle,
-  Kontaktdaten),</li>
-  <li>Transfer zu einem anderen Provider,</li>
-  <li>Domain löschen/kündigen.</li>
-  </ul>
-  <section id="domainverwaltung" class="level3">
-  <h3>Domainverwaltung</h3>
-  <section id="registrierung-und-aufschaltung" class="level4">
-  <h4>Registrierung und Aufschaltung</h4>
-  <p>Die Domainverwaltung ist in zwei voneinander unabhängige
-  Aufgabenbereiche unterteilt:</p>
-  <section id="domaineinrichtung-und--konfiguration-in-einem-web-paket"
-  class="level5">
-  <h5>Domaineinrichtung und -konfiguration in einem Web-Paket</h5>
-  <p>Die Einrichtung und Konfiguration erfolgt mit dem Werkzeug <code
-  class="interpreted-text" role="term">HSAdmin</code>. Die Benutzung von
-  HSAdmin über das Webinterface unter admin.hostsharing.net wird in
-  <code class="interpreted-text"
-  role="numref">kap-hsadmin-einstieg</code> beschrieben, die Syntax der
-  Kommandozeilen-Variante <code class="interpreted-text"
-  role="command">hsscript</code> in <code class="interpreted-text"
-  role="numref">kap-hsadmin</code>.</p>
-  <p>Aufgaben der Domainverwaltung werden vom <code
-  class="interpreted-text" role="role">Paket-Admin</code> oder vom <code
-  class="interpreted-text"
-  role="role">Mitglieds-Account &lt;Mitglied&gt;</code>
-  wahrgenommen.</p>
-  </section>
-  <section id="vergabe-von-aufträgen-an-eine-registrierungsstelle"
-  class="level5">
-  <h5>Vergabe von Aufträgen an eine Registrierungsstelle</h5>
-  <p>Die Vergabe von Aufträgen (z.B. Registrierung, Transfer) an eine
-  Registrierungsstelle ist nur über das <a
-  href="https://www.domain-bestellsystem.de/">Webfrontend</a> des <code
-  class="interpreted-text" role="term">Domain-Bestell-System</code>
-  möglich und erfolgt mit Hilfe der <code class="interpreted-text"
-  role="role">Reseller-ID</code>.</p>
-  <div class="note">
-  <p>Die Anzahl der pro Tag möglichen Registrierungen ist beschränkt, um
-  Missbrauch vorzubeugen. Nach Rücksprache kann das Limit erhöht
-  werden.</p>
-  </div>
-  <div class="warning">
-  <p>Der Nutzer ist für sämtliche Aktivitäten im Domainbestellsystem
-  juristisch eigenverantwortlich.</p>
-  </div>
-  <div class="tip">
-  <p>Wenn Sie eine Domain neu registrieren, schalten Sie diese erst in
-  HSAdmin auf, bevor Sie sie im Domainbestellsystem registrieren. Die
-  Konnektierung erfolgt dann in der Regel problemlos. Wenn Sie umgekehrt
-  vorgehen, müssen Sie im Domainbestellsystem die Konnektierung neu
-  anstoßen.</p>
-  </div>
-  </section>
-  </section>
-  <section id="bestehende-domain-einem-neuen-domain-admin-zuordnen"
-  class="level4">
-  <h4>Bestehende Domain einem neuen Domain-Admin zuordnen</h4>
-  <p>Um eine Domain einem anderen <code class="interpreted-text"
-  role="role">Domain-Admin</code> zuzuordnen und damit im Dateisystem zu
-  verschieben, wird sie über HSAdmin gelöscht und neu angelegt.</p>
-  <div class="warning">
-  <p>Beim Löschen einer Domain in HSAdmin werden alle Dateien im
-  Webspace komplett gelöscht. Sichern Sie also vorher alle Daten in
-  einem von der Löschung nicht betroffenen Verzeichnis (zum Beispiel mit
-  <code class="interpreted-text" role="command">tar</code>). Es gehen
-  auch die Mailadressen der betreffenden Domain verloren und müssen an
-  neuer Stelle neu angelegt werden.</p>
-  </div>
-  <p>Der Prozess des Verschiebens läuft im Großen und Ganzen
-  folgendermaßen ab:</p>
-  <ol type="1">
-  <li>Sichern aller Daten im Ordner <code>doms/example.de</code> des
-  alten Domain-Admin</li>
-  <li>Löschen der Domain in HSAdmin</li>
-  <li>Neuanlage eines neuen Domain-Admin in HSAdmin</li>
-  <li>Neuanlage der Domain in HSAdmin</li>
-  <li>Rückspielen der gesicherten Daten in den neu erstellen Ordner
-  <code>doms/example.de</code> des neuen Domain-Admin</li>
-  </ol>
-  </section>
-  <section id="bestehende-domain-in-ein-anderes-web-paket-verschieben"
-  class="level4">
-  <h4>Bestehende Domain in ein anderes Web-Paket verschieben</h4>
-  <p>Um eine Domain in ein anderes Web-Paket zu verschieben, wird sie im
-  alten Web-Paket gelöscht und im neuen neu angelegt. Gehen Sie dabei im
-  Prinzip genau so vor wie im Abschnitt zuvor.</p>
-  <ol type="1">
-  <li>Sichern aller Daten im Ordner <code>doms/example.de</code> des
-  alten Domain-Admin im alten Web-Paket</li>
-  <li>Löschen der Domain <code>example.de</code> in HSAdmin im alten
-  Web-Paket</li>
-  <li>Neuanlage eines neuen Domain-Admin im neuen Web-Paket</li>
-  <li>Neuanlage der Domain <code>example.de</code> im neuen
-  Web-Paket</li>
-  <li>Rückspielen der gesicherten Daten in den neu erstellen Ordner
-  <code>doms/example.de</code> des neuen Domain-Admin im neuen
-  Web-Paket</li>
-  </ol>
-  <div class="tip">
-  <p>Wenn Sie unsicher sind, wenden Sie sich an den Service unter <a
-  href="mailto:service@hostsharing.net"
-  class="email">service@hostsharing.net</a>. Der <a
-  href="https://www.hostsharing.net/service/webmaster-on-demand">Webmaster
-  on Demand</a> kann eine Domain mit minimalen Ausfallzeiten für Sie bei
-  aufwandsabhängiger Abrechnung verschieben.</p>
-  </div>
-  </section>
-  </section>
-  <section id="kap-ref-subdomains" class="level3">
-  <h3>Subdomain</h3>
-  <p>Subdomains sind Domains unterhalb der Hauptdomain. Auch
-  <code>www</code> ist eine Subdomain. Als Subdomain der Hauptdomain
-  <code>hs-example.de</code> wird eine Website unter dieser Subdomain im
-  Browser über die Adresse <code>www.hs-example.de</code> aufgerufen.
-  Die Subdomain <code>test</code> würde man über die Adresse
-  <code>test.hs-example.de</code> erreichen.</p>
-  <p>Sie können bei Hostsharing beliebig viele Subdomains einrichten. Es
-  gibt zwei Methoden Subdomains anzulegen:</p>
-  <ol type="1">
-  <li>Leichtgewichtige Subdomains</li>
-  <li>Aufgeschaltete Subdomains</li>
-  </ol>
-  <section id="leichtgewichtige-subdomain" class="level4">
-  <h4>Leichtgewichtige Subdomain</h4>
-  <p>Eine Subdomains wird bei Hostsharing <em>leichtgewichtig</em>
-  genannt, wenn sie durch ein Unterverzeichnis von
-  <code>~/doms/example.com/subs/</code> definiert wurde. Dies ist die
-  einfachste Art und Weise, um Subdomains zu erstellen. Für jede
-  Subdomain wird ein Ordner im Verzeichnis <code>subs</code>
-  erstellt.</p>
-  <p>Leichtgewichtige Subdomains sollten nur verwendet werden, wenn eine
-  einzelne Anwendung zur Verwaltung aller dieser Subdomains verwendet
-  wird. Das kann zum Beispiel ein CMS oder eine
-  Multisite-Wordpress-Installation sein.</p>
-  <p>Wenn unterschiedliche Anwendungen unter Subdomains betrieben
-  werden, sollte</p>
-  <ul>
-  <li>für jede Subdomain ein eigener <code>Domain-Admin</code>
-  angelegt</li>
-  <li>und jede Subdomain jeweils beim entsprechenden Domain-Admin
-  aufgeschaltet werden.</li>
-  </ul>
-  </section>
-  <section id="aufgeschaltete-subdomain" class="level4">
-  <h4>Aufgeschaltete Subdomain</h4>
-  <p>Eine Subdomain wird bei Hostsharing wie die Hauptdomain
-  aufgeschaltet (siehe Abschnitt <a
-  href="#kap-hsadmin-domain-anlegen">Domain in HSAdmin anlegen</a>).
-  Eine Subdomain wie <code>blog.hs-example.de</code> kann im gleichen
-  Web-Paket aufgeschaltet werden wie die Hauptdomain oder in einem
-  anderen. Es ist Best-Practice bei Hostsharing für jede aufgeschaltete
-  Domain – also auch für jede aufgeschaltete Subdomain – einen
-  Domain-Admin anzulegen und die Domain bzw. Subdomain diesem
-  Domain-Admin zuzuordnen.</p>
-  </section>
-  </section>
-  <section id="kap-domain-optionen" class="level3">
-  <h3>Domain-Optionen</h3>
-  <p>Bei Aufschaltung einer Domain können verschiedene Optionen gesetzt
-  werden.</p>
-  <dl>
-  <dt>Greylisting</dt>
-  <dd>
-  <p>Greylisting ist eine Form der Spam-Bekämpfung bei E-Mails.
-  Nachrichten von unbekannten Absendern werden zunächst abgewiesen und
-  erst nach einem weiteren Zustellversuch angenommen. Da viele Spammer
-  nur einen Zustellversuch unternehmen, können Sie mit dieser Option das
-  Spam-Aufkommen in den Postfächern der Domain spürbar reduzieren.
-  Allerdings müssen Sie damit rechnen, Mails von unbekannten Absendern
-  erst nach einer gewissen Wartezeit zu erhalten. Falls der Absender
-  einen fehlerhaft konfigurierten Mailserver hat, kann es sein, dass er
-  keinen zweiten Zustellversuch unternimmt, sodass Sie die E-Mail gar
-  nicht bekommen.</p>
-  </dd>
-  <dt>Multiviews</dt>
-  <dd>
-  <p>Wenn diese Option eingeschaltet ist, berücksichtigt der Webserver
-  Browsereinstellungen und kann je nachdem unterschiedliche Dateien
-  ausliefern. Die Möglichkeiten sind in der Dokumentation zu <a
-  href="http://httpd.apache.org/docs/current/mod/mod_autoindex.html">mod_mime</a>
-  und <a
-  href="http://httpd.apache.org/docs/current/mod/mod_negotiation.html">mod_negotiation</a>
-  beschrieben.</p>
-  </dd>
-  <dt>Indexes</dt>
-  <dd>
-  <p>Wenn diese Option eingeschaltet ist, erzeugt der Webserver für
-  Verzeichnisse, die keine Index-Datei (<code class="interpreted-text"
-  role="file">index.html</code>) enthalten eine Liste mit den Inhalten
-  des Verzeichnisses. Weitere Informationen zu dieser Funktion des
-  Webservers finden Sie in der Dokumentation von <a
-  href="http://httpd.apache.org/docs/current/mod/mod_autoindex.html">mod_autoindex</a>.
-  Ist die Option nicht gesetzt, erhält der Browser stattdessen eine
-  404-Fehlermeldung. Sie können diese Einstellung durch eine
-  <code>.htaccess</code>-Datei im Verzeichnis überschreiben. Lesen Sie
-  dazu Abschnitt <a href="#kap-htaccess">htaccess</a>.</p>
-  </dd>
-  <dt>Fallback auf htdocs/htdocs-ssl</dt>
-  <dd>
-  <p>Wenn diese Option aktiviert ist, werden Browser-Anfragen an eine
-  nicht aufgeschaltete Subdomain (<code>blog.hs-example.de</code>) an
-  die Hauptdomain weitergeleitet. In diesem Fall an
-  <code>hs-example.de</code>. Falls die Option nicht gesetzt ist, erhält
-  der Browser stattdessen eine 404-Fehlermeldung.</p>
-  </dd>
-  <dt>Includes</dt>
-  <dd>
-  <p>Wenn diese Option gesetzt ist, unterstützt der Webserver SSI
-  (Server Side Includes). Weitere Informationen dazu finden Sie in der
-  Dokumentation von <a
-  href="http://httpd.apache.org/docs/current/mod/mod_include.html">mod_includes</a></p>
-  </dd>
-  <dt>Backup-MX für externen Mailserver</dt>
-  <dd>
-  <p>Wenn diese Option eingeschaltet ist, nehmen die E-Mail-Server von
-  Hostsharing als sogenannter Backup-MX E-Mails für einen SMTP-Server
-  an, der unabhängig betrieben wird. Für diese Funktion muss die
-  Zone-Datei angepasst werden. Lesen Sie dazu Abschnitt <a
-  href="#kap-ref-zonefile">Zonefile</a>.</p>
-  </dd>
-  <dt>Let's Encrypt-Zertifikat</dt>
-  <dd>
-  <p>Wenn diese Option aktiviert ist, wird automatisch ein kostenloses
-  LE-Zertifikat generiert und regelmäßig verlängert. Sie können Ihre
-  Website dann so konfigurieren, dass der Datentransfer zu den Browsern
-  über eine verschlüsselte Verbindung (<code>https</code>) erfolgt.</p>
-  </dd>
-  <dt>E-Mail Auto-Konfiguration</dt>
-  <dd>
-  <p>Bei Aktivierung dieser Option reicht es bei den meisten
-  E-Mail-Programmen (die ›autoconfig‹ oder ›autodiscover‹ unterstützen),
-  E-Mail-Adresse und Passwort zur Konfiguration anzugeben. Dazu muss der
-  E-Mail-Adresse ein eindeutiges E-Mail-Postfach bei Hostsharing
-  zugeordnet sein.</p>
-  </dd>
-  <dt>Domain Keys (DKIM)</dt>
-  <dd>
-  <p>Durch das Aktiveren dieser Option werden DKIM-Signaturen für
-  ausgehende E-Mails mit Absendern dieser E-Mail-Domain aktiviert. Vor
-  der Aktivierung muss der öffentliche Schlüssel des Domain Key in der
-  DNS Zone der Domain veröffentlicht werden. Das Zonefile muss dazu die
-  Zeile <code>{DKIM_RR}</code> enthalten. Die Option ist (ab 1.9.2021)
-  bei neu angelegten Domains in der Voreinstellung aktiviert und der
-  öffentliche Schlüssel wird automatisch hinterlegt.</p>
-  </dd>
-  </dl>
-  </section>
-  </section>
-  <section id="e-mail" class="level2">
-  <h2>E-Mail</h2>
-  <p>Jeder Benutzer im Web-Paket besitzt ein E-Mail-Konto und kann
-  E-Mail senden und empfangen. E-Mails werden unterhalb des
-  Verzeichnisses <code>~/Maildir</code> abgelegt. Der Name des Ordners
-  <code>Maildir</code> darf nicht verändert werden.</p>
-  <p>Jedes E-Mail-Konto ist POP3- und IMAP-fähig.</p>
-  <p>Hostsharing bietet folgende Konfigurationsmöglichkeiten:</p>
-  <ul>
-  <li>Anlegen und Löschen von E-Mail-Adressen</li>
-  <li>Anlegen und Löschen von E-Mail-Aliasen</li>
-  <li>Einrichtung von E-Mail-Weiterleitungen</li>
-  <li>Automatisches Versenden einer E-Mail-Bestätigung (Vacation)</li>
-  <li>Automatisches Filtern und Bearbeiten von E-Mails über <a
-  href="https://wiki.hostsharing.net/index.php?title=Sieve">Managesieve</a>
-  oder <a
-  href="https://wiki.hostsharing.net/index.php?title=Procmail">Procmail</a></li>
-  <li>Mit E-Mail-Aliasen kann die Zustellung von Nachrichten in die
-  Postfächer der Benutzer gesteuert werden.</li>
-  <li>E-Mail-Konten bei anderen Anbietern abfragen</li>
-  <li>Einrichtung von Mailinglisten</li>
-  </ul>
-  <p>Der Zugriff auf das E-Mail-Konto erfolgt über einen beliebigen
-  E-Mail-Client oder über Webmail.</p>
-  <section id="kap-ref-maileingang" class="level3">
-  <h3>Posteingangsserver</h3>
-  <p>Angaben für den Posteingangsserver:</p>
-  <table>
-  <caption>Konfiguration Eingangsserver</caption>
-  <colgroup>
-  <col style="width: 31%" />
-  <col style="width: 26%" />
-  <col style="width: 15%" />
-  <col style="width: 13%" />
-  <col style="width: 13%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Posteingangsserver</th>
-  <th style="text-align: left;">Postfach/Benutzer</th>
-  <th style="text-align: left;">Protokoll</th>
-  <th style="text-align: left;">STARTTLS</th>
-  <th style="text-align: left;">SSL/TLS</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;">xyz00.hostsharing.net</td>
-  <td style="text-align: left;">xyz00-mailbox</td>
-  <td style="text-align: left;">POP3</td>
-  <td style="text-align: left;">Port 110</td>
-  <td style="text-align: left;">Port 995</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;">xyz00.hostsharing.net</td>
-  <td style="text-align: left;">xyz00-mailbox</td>
-  <td style="text-align: left;">IMAP</td>
-  <td style="text-align: left;">Port 143</td>
-  <td style="text-align: left;">Port 993</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die Konfigurationsvariante IMAP über Port 143 mit STARTTLS wird
-  empfohlen.</p>
-  </section>
-  <section id="kap-ref-mailausgang" class="level3">
-  <h3>Postausgangsserver</h3>
-  <p>Für jedes Webpaket steht ein Postausgangsserver für reguäre E-Mails
-  und ein Postausgangsserver für den Massenversand von E-Mails
-  bereit.</p>
-  <p>Unter Massenversand wird der Versand von Newslettern,
-  Forenbenachrichtungen, der Betrieb von Mailinglisten und ähnliche
-  Nutzungen im Rahmen des Zulässigen verstanden. Wählen Sie bei solchen
-  Massenaussendungen bitte möglichst den Postausgangsserver für den
-  Massenversand, da Sie so mithelfen, die Reputation unserer normalen
-  Ausgangsserver hoch zu halten.</p>
-  <p>Angaben für den Postausgangsserver:</p>
-  <table>
-  <caption>Konfiguration Ausgangsserver</caption>
-  <colgroup>
-  <col style="width: 31%" />
-  <col style="width: 26%" />
-  <col style="width: 15%" />
-  <col style="width: 13%" />
-  <col style="width: 13%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Posteingangsserver</th>
-  <th style="text-align: left;">Postfach/Benutzer</th>
-  <th style="text-align: left;">Protokoll</th>
-  <th style="text-align: left;">STARTTLS</th>
-  <th style="text-align: left;">SSL/TLS</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;">xyz00.hostsharing.net</td>
-  <td style="text-align: left;">xyz00-mailbox</td>
-  <td style="text-align: left;">SMTP</td>
-  <td style="text-align: left;">Port 587 oder 25</td>
-  <td style="text-align: left;">Port 465</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die Konfigurationsvariante SMTP über Port 587 mit STARTTLS wird
-  empfohlen.</p>
-  <p>Angaben für den Postausgangsserver für den Massenversand:</p>
-  <table>
-  <caption>Konfiguration Ausgangsserver Massenversand</caption>
-  <colgroup>
-  <col style="width: 31%" />
-  <col style="width: 26%" />
-  <col style="width: 15%" />
-  <col style="width: 13%" />
-  <col style="width: 13%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Posteingangsserver</th>
-  <th style="text-align: left;">Postfach/Benutzer</th>
-  <th style="text-align: left;">Protokoll</th>
-  <th style="text-align: left;">STARTTLS</th>
-  <th style="text-align: left;">SSL/TLS</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;">xyz00.hostsharing.net</td>
-  <td style="text-align: left;">xyz00-mailbox</td>
-  <td style="text-align: left;">SMTP</td>
-  <td style="text-align: left;">Port 4587 oder 4025</td>
-  <td style="text-align: left;">Port 1465</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die Konfigurationsvariante SMTP über Port 4587 mit STARTTLS wird
-  empfohlen.</p>
-  </section>
-  <section id="größenbeschränkung-einer-e-mail" class="level3">
-  <h3>Größenbeschränkung einer E-Mail</h3>
-  <p>Die E-Mail-Server akzeptieren E-Mails bis zu einer maximalen Größe
-  von 128 MB. Dateianhänge sollten daher die Größe von ca. 90 MB nicht
-  überschreiten. Allgemeine Informationen zur <a
-  href="https://wiki.hostsharing.net/index.php?title=Gr%C3%B6%C3%9Fenbeschr%C3%A4nkung_von_E-Mails">Größenbeschränkung
-  von E-Mails</a> im Wiki der Hostsharing-Mitglieder.</p>
-  </section>
-  <section id="e-mail-alias-und-paketnutzer" class="level3">
-  <h3>E-Mail-Alias und Paketnutzer</h3>
-  <p>Ein E-Mail-Alias ist eine E-Mail-Adresse zur Weiterleitung von
-  E-Mails.</p>
-  <p>Ein E-Mail-Alias in der E-Mail-Konfiguration hat Vorrang vor einem
-  Paketnutzer gleichen Namens. Implementiert der E-Mail-Alias eine
-  Weiterleitung, gehen in diesem Fall in der Mailbox des Paketnutzers
-  keine E-Mails ein.</p>
-  <!-- todo: Letzten Satz prüfen -->
-  </section>
-  <section id="webmail" class="level3">
-  <h3>Webmail</h3>
-  <p>Hostsharing betreibt eine zentrale <a
-  href="https://webmail.hostsharing.net">Webmail-Installation</a>.
-  Informationen zur Einrichtung sind im Wiki der Mitglieder unter <a
-  href="https://wiki.hostsharing.net/index.php?title=Webmail">Webmail</a>
-  zu finden.</p>
-  </section>
-  <section id="kap-ref-mailautoconfig" class="level3">
-  <h3>E-Mail Auto-Konfiguration</h3>
-  <p>Die Domain-Option <em>E-Mail Auto-Konfiguration</em> ermöglicht das
-  einfache Konfigurieren der E-Mail-Clients mit den Daten des
-  Posteingangs- und Postausgangsservers. Wird diese Domain-Option für
-  z.B. <code>example.com</code> aktiviert, und ist der E-Mail-Adresse
-  <code>fred@example.com</code> (evtl. nach mehreren Weiterleitungen)
-  bei Hostsharing genau ein Postfach zugeordnet, dann reicht es bei den
-  gängigsten E-Mail-Clients aus, zur Einrichtung des Postfaches die
-  E-Mail-Adresse und das jeweilige Passwort anzugeben. Die restlichen
-  Einstellungen (Server, Postfach/Benutzername, Protokoll, Port etc.)
-  werden automatisch durch den E-Mail-Client von Hostsharing abgerufen
-  und sodann automatisch konfiguriert.</p>
-  <p>Dies vereinfacht aus Nutzersicht die Einrichtung eines
-  Hostsharing-Postfaches im eigenen E-Mail-Client erheblich.</p>
-  <p>Das Verfahren kann aus mehreren Gründen scheitern:</p>
-  <ul>
-  <li>Der E-Mail-Client des Nutzers unterstützt ›autoconfig‹ und
-  ›autodiscover‹ nicht. Thunderbird ab Version 3.1 und Outlook ab
-  Version 2007 sollten funktionieren.</li>
-  <li>Die Domain-Option E-Mail Auto-Konfiguration wurde erst
-  <em>nach</em> einem gescheiterten Konfigurationsversuch gesetzt (sie
-  sollte <em>vorher</em> gesetzt werden). Vor allem Microsoft-Produkte
-  cachen das Abfrageergebnis für eine E-Mail-Adresse ca. zwei Wochen in
-  einer Microsoft-Cloud, so dass weitere automatische
-  Konfigurationsversuche erst nach Ablauf dieser (langen) Zeit
-  erfolgreich sind. In diesem Fall hilft nur, die Einstellungen im
-  E-Mail-Client per Hand vorzunehmen.</li>
-  <li>In der Domain wird ein <em>eigenes</em> Zonenfile verwendet, in
-  dem die nötigen Einträge (<code>MAILSERVICES_RR</code> und
-  <code>AUTODISCOVER_RR</code>, siehe Abschnitt <a
-  href="#kap-ref-zonefile-platzhalter">Platzhalter</a> fehlen. Dann
-  müssen sie per Hand ergänzt werden.</li>
-  </ul>
-  </section>
-  </section>
-  <section id="kap-ref-db" class="level2">
-  <h2>Datenbanken</h2>
-  <p>Jeder Hive hat einen eigenen MySQL- und PostgreSQL-Datenbankserver.
-  Daraus ergibt sich, dass der jeweilige MySQL- und PostgreSQL-Server
-  von allen auf einem Hive eingerichteten Web-Paketen gemeinsam genutzt
-  wird.</p>
-  <p>Der externe Zugriff auf die Datenbanken ist über einen SSH-Tunnel
-  möglich.</p>
-  <section id="datenbanken-und-nutzer" class="level3">
-  <h3>Datenbanken und Nutzer</h3>
-  <p>Datenbanknutzer haben eine eigene Nutzerverwaltung und sind
-  unabhängig von der Vergabe von Rechten auf Betriebsystemebene.</p>
-  <section id="verwaltung-der-datenbanken-und-datenbanknutzer"
-  class="level4">
-  <h4>Verwaltung der Datenbanken und Datenbanknutzer</h4>
-  <p>Die Verwaltung von Datenbanken und Nutzern erfolgt mit HSAdmin über
-  ein Webfrontend oder über die <code>shell</code>.</p>
-  </section>
-  <section id="rechte" class="level4">
-  <h4>Rechte</h4>
-  <p>Datenbanknutzern müssen initial die gewünschten Rechte an den
-  entsprechenden Datenbanken vergeben werden.</p>
-  </section>
-  <section id="name" class="level4">
-  <h4>Name</h4>
-  <ul>
-  <li>Datenbanknutzer haben immer den Präfix <code>xyz00_</code>.</li>
-  <li>Datenbanken haben immer den Präfix <code>xyz00_</code>.</li>
-  </ul>
-  </section>
-  </section>
-  <section id="datenbankzugriff" class="level3">
-  <h3>Datenbankzugriff</h3>
-  <p>Der Zugriff erfolgt über folgende Hosts und Ports:</p>
-  <table>
-  <caption>Konfiguration Datenbankzugriff</caption>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Datenbank</th>
-  <th style="text-align: left;">Hostnamen</th>
-  <th style="text-align: left;">Port</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;">MySQL</td>
-  <td style="text-align: left;">localhost</td>
-  <td style="text-align: left;">3306</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;">PostgreSQL</td>
-  <td style="text-align: left;">localhost</td>
-  <td style="text-align: left;">5432</td>
-  </tr>
-  </tbody>
-  </table>
-  </section>
-  <section id="datenbank-webfrontend" class="level3">
-  <h3>Datenbank-Webfrontend</h3>
-  <p>Für angelegte Datenbanken stehen folgende Webfrontends zur
-  Verfügung:</p>
-  <ul>
-  <li><p>Für MySQL: <a
-  href="https://phpmyadmin.hostsharing.net/current">phpMyAdmin</a>.</p></li>
-  <li><p>Für PostgreSQL: <a
-  href="https://phppgadmin.hostsharing.net/current">phpPgAdmin</a>.</p></li>
-  </ul>
-  </section>
-  </section>
-  <section id="tls-zertifikate" class="level2">
-  <h2>TLS Zertifikate</h2>
-  <p>Transport Layer Security (TLS) ist ein Verschlüsselungsprotokoll
-  zur sicheren Datenübertragung im Internet. Die Vorgängerbezeichnung
-  lautete Secure Sockets Layer (SSL).</p>
-  <p>Beim Anlegen einer Domain in HSAdmin kann als Domain-Option ein
-  Let’s-Encrypt-Zertifikat erstellt werden (vgl. dazu die Abschnitte <a
-  href="#kap-hsadmin-domain-anlegen">Domain in HSAdmin anlegen</a> und
-  <a href="#kap-domain-optionen">Domain-Optionen</a>. Daten können so
-  ohne weitere Vorbereitung über HTTPS ausgeliefert werden.</p>
-  <section id="kap-tls-standardkonfiguration" class="level3">
-  <h3>Standardkonfiguration</h3>
-  <p>Pro aufgeschalteter Domain ist ein Zertifikat möglich .</p>
-  <p>TLS-Inhalte werden durch die Verzeichnisse</p>
-  <ul>
-  <li>cgi-ssl</li>
-  <li>fastcgi-ssl</li>
-  <li>htdocs-ssl</li>
-  </ul>
-  <p>von Nicht-TLS-Inhalten getrennt. Die Ordnerstruktur im Verzeichnis
-  eines Domain-Admin wird in Abschnitt <a
-  href="#kap-einstieg-ordnerstruktur">Ordnerstruktur</a>
-  beschrieben.</p>
-  </section>
-  <section id="mögliche-varianten" class="level3">
-  <h3>Mögliche Varianten</h3>
-  <section id="tls-seiten-und-nicht-tls-seiten-in-einem-verzeichnis"
-  class="level4">
-  <h4>TLS-Seiten und Nicht-TLS-Seiten in einem Verzeichnis</h4>
-  <p>Sollen TLS- und Nicht-TLS-Seiten innerhalb eines Verzeichnis
-  verwaltet werden, können die TLS-Verzeichnisse gelöscht und
-  symbolische Links auf Nicht-TLS Verzeichnisse angelegt werden. Dies
-  gilt selektiv auch für Unterverzeichnisse. Symbolische Links erlauben
-  es, Seiten mit und ohne TLS abzurufen.</p>
-  <!-- todo: Mit einem Beispiel erklären -->
-  </section>
-  <section id="automatisch-auf-tls" class="level4">
-  <h4>Automatisch auf TLS</h4>
-  <p>Soll nur auf bestimmten Seiten der Zugriff mit TLS erlaubt und
-  automatisch auf TLS umgeschaltet werden, muss dies in einer
-  entsprechenden .htaccess-Datei für die betroffenen Verzeichnisse
-  konfiguriert werden.</p>
-  <!-- todo: Mit einem Beispiel erklären -->
-  </section>
-  </section>
-  <section id="zertifikate-einer-zertifizierungsstelle" class="level3">
-  <h3>Zertifikate einer Zertifizierungsstelle</h3>
-  <p>Für die Installation eines Zertifikate einer Zertifizierungsstelle
-  muss der Paket-Admin einen ›Private Key‹ und einen CSR (Certificate
-  Signing Request) erzeugen. Die Vorgehensweise ist in der Regel auf den
-  Webseiten der Zertifizierungsstelle beschrieben. Weitere Hinweise sind
-  im Hostsharing Wiki unter <a
-  href="https://wiki.hostsharing.net/index.php?title=TLS_/_SSL">TLS/SSL</a>
-  beschrieben.</p>
-  <p>Für die Aktivierung des Zertifikates wird ein Auftrag an <a
-  href="mailto:service@hostsharing.net"
-  class="email">service@hostsharing.net</a> gesendet. Die Aktivierung
-  des Zertifikats durch den Service ist kostenpflichtig.</p>
-  <!-- Evtl. ausführlich beschreiben und aus Wiki übernehmen. -->
-  </section>
-  <section id="kap-le-einrichten" class="level3">
-  <h3>Let´s Encrypt einrichten</h3>
-  <p>Wenn Sie bei der Aufschaltung der Domain noch kein Let’s Encrypt
-  Zertifikat eingerichtet haben, können Sie dies nachträglich
-  erledigen.</p>
-  <p>Melden Sie sich mit dem Benutzernamen Ihres Paket-Admin beim
-  Webfrontend von HSAdmin unter <a href="https://admin.hostsharing.net"
-  class="uri">https://admin.hostsharing.net</a> an. Wählen Sie im linken
-  Feld den Eintrag <code>Web-Paket</code> aus. Im rechten Feld
-  aktivieren Sie den Reiter <code>Domain</code> und wählen anschließend
-  die Domain aus, für die Sie Let's Encrypt einrichten möchten.</p>
-  <p>Klicken Sie anschließend das Editier-Symbol
-  <code>Ausgewählten Eintrag bearbeiten</code>, um das Bearbeitungsmenü
-  zu öffnen:</p>
-  <figure>
-  <img src="images/hsadmin-domain-anlegen-2.jpg" style="width:100.0%"
-  alt="Domain in HSAdmin auswählen" />
-  <figcaption aria-hidden="true">Domain in HSAdmin
-  auswählen</figcaption>
-  </figure>
-  <p>Setzen Sie anschließend im Feld <code>Domain-Optionen</code> das
-  Häkchen bei <code>Let's Encrypt-Zertifikat</code>. Speichern Sie die
-  Einstellung mit einem Klick auf den Button <code>OK</code>.</p>
-  <figure>
-  <img src="images/hsadmin-domain-bearbeiten.jpg" style="width:100.0%"
-  alt="Das Bearbeitungsformular einer Domain" />
-  <figcaption aria-hidden="true">Das Bearbeitungsformular einer
-  Domain</figcaption>
-  </figure>
-  <p>Sie können jede Subdomain, für die ein Let’s-Encrypt-Zertifikat
-  erstellt werden soll, einzeln in der Liste
-  <code>gültige Subdomains</code> eintragen. Alternativ können Sie das
-  Wildcard-Symbol <code>*</code> benutzen; dann wird ein
-  Wildcard-Zertifikat ausgestellt, das für jede leichtgewichtige
-  Subdomain gültig ist. Für einzeln aufgeschaltete Subdomains müssen Sie
-  Let’s Encrypt gesondert aktivieren.</p>
-  <p>Bis zur Zertifizierung vergehen normalerweise nur 2-3 Minuten, es
-  kann jedoch auch bis zu 36 Std dauern.</p>
-  <p>Wenn die Domain oder Subdomain nicht bei Hostsharing verwaltet
-  wird, muss beim Domainverwalter eine Nameserver-Delegation auf die
-  drei DNS-Server von Hostsharing eingerichtet sein, damit
-  Let’s-Encrypt-Zertifikate genutzt werden können. Die Nameserver, die
-  an der entsprechenden Stelle eingetragen werden müssen, heißen
-  <code>dns1.hostsharing.net</code>, <code>dns2.hostsharing.net</code>
-  und <code>dns3.hostsharing.net</code>.</p>
-  </section>
-  <section id="filemapping-ohne-tls" class="level3">
-  <h3>Filemapping ohne TLS</h3>
-  <p>In der folgenden Grafik ist der Entscheidungsweg beschrieben, der
-  durchlaufen wird, um einem anfragenden Browser die richtige Datei
-  auszuliefern. TLS ist nicht aktiv.</p>
-  <figure>
-  <img src="images/filemap-ohne-tls.svg" style="width:100.0%"
-  alt="Mapping ohne TLS" />
-  <figcaption aria-hidden="true">Mapping ohne TLS</figcaption>
-  </figure>
-  <p>Zunächst wird für die Anfrage
-  <code>http://www.example.com/&lt;path&gt;</code> der Virtual Host
-  gesucht, der zum FQDN (Fully Qualified Domain Name) passt.
-  Anschließend entscheiden folgende Fragen über den weiteren Verlauf des
-  Entscheidungswegs.</p>
-  <ol type="1">
-  <li><p>Starten wir mit cgi-bin?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>cgi-bin</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus wird
-  ausgeliefert.</p></li>
-  <li><p>Nein: Weiter zu Frage 2</p></li>
-  </ol></li>
-  <li><p>Starten wir mit fastcgi?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>fastcgi</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus wird
-  ausgeliefert.</p></li>
-  <li><p>Nein aber es gibt einen FQDN-Treffer, deshalb wird
-  <code>htdocs</code> zum Wurzelverzeichnis und eine passende Datei
-  daraus ausgeliefert. Ist das nicht der Fall geht es weiter zu Frage
-  3.</p></li>
-  </ol></li>
-  <li><p>Gibt es eine passende Sub-Domain?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>subs</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus wird
-  ausgeliefert.</p></li>
-  <li><p>Nein: Weiter zu Frage 4</p></li>
-  </ol></li>
-  <li><p>Ist das Verzeichnis <code>htdocs</code> als Fallback
-  konfiguriert?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>htdocs</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus
-  ausgeliefert.</p></li>
-  <li><p>Nein: Es wurde nichts gefunden. Wir liefern die Fehlermeldung
-  404 aus.</p></li>
-  </ol></li>
-  </ol>
-  </section>
-  <section id="filemapping-mit-tls" class="level3">
-  <h3>Filemapping mit TLS</h3>
-  <p>In der folgenden Grafik ist der Entscheidungsweg beschrieben, der
-  durchlaufen wird, um einem anfragenden Browser die richtige Datei
-  auszuliefern. Die Website wird über <code>https</code> aufgerufen,
-  sodass TLS aktiv ist.</p>
-  <figure>
-  <img src="images/filemap-mit-tls.svg" style="width:100.0%"
-  alt="Mapping mit TLS" />
-  <figcaption aria-hidden="true">Mapping mit TLS</figcaption>
-  </figure>
-  <p>Zunächst wird für die Anfrage
-  <code>https://www.example.com/&lt;path&gt;</code> der Virtual Host
-  gesucht, der zum FQDN (Fully Qualified Domain Name) passt.
-  Anschließend entscheiden folgende Fragen über den weiteren Verlauf des
-  Entscheidungswegs.</p>
-  <ol type="1">
-  <li><p>Starten wir mit cgi-ssl?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>cgi-ssl</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus wird
-  ausgeliefert.</p></li>
-  <li><p>Nein: Weiter zu Frage 2</p></li>
-  </ol></li>
-  <li><p>Starten wir mit fastcgi-ssl?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>fastcgi-ssl</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus wird
-  ausgeliefert.</p></li>
-  <li><p>Nein aber es gibt einen FQDN-Treffer, deshalb wird
-  <code>htdocs-ssl</code> zum Wurzelverzeichnis und eine passende Datei
-  daraus ausgeliefert. Ist das nicht der Fall geht es weiter zu Frage
-  3.</p></li>
-  </ol></li>
-  <li><p>Gibt es eine passende Sub-Domain?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>subs-ssl</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus wird
-  ausgeliefert.</p></li>
-  <li><p>Nein: Weiter zu Frage 4</p></li>
-  </ol></li>
-  <li><p>Ist das Verzeichnis <code>htdocs-ssl</code> als Fallback
-  konfiguriert?</p>
-  <ol type="a">
-  <li><p>Ja: Das Verzeichnis <code>htdocs-ssl</code> wird zum
-  Wurzelverzeichnis und eine passende Datei daraus
-  ausgeliefert.</p></li>
-  <li><p>Nein: Es wurde nichts gefunden. Wir liefern die Fehlermeldung
-  404 aus.</p></li>
-  </ol></li>
-  </ol>
-  </section>
-  </section>
-  <section id="kap-ref-zonefile" class="level2">
-  <h2>Zonefile</h2>
-  <p>Das Zonefile enthält die Konfiguration des Domain Name Service
-  (DNS) einer Domain. Im Zonefile wird hinterlegt, welche Hostnamen
-  innerhalb einer Domain existieren, auf welche IP-Adressen diese zeigen
-  und welches Mailsystem für eine Domain zuständig ist. Das
-  Standardzonefile ist für jede Domain unter
-  <code>/etc/bind/pri.example.com</code> zu finden.</p>
-  <p>Es ist möglich, ein eigenes Zonefile für eine Domain einzusetzen.
-  Dabei können und sollen Platzhalter verwendet werden, die es
-  ermöglichen, einen jeweils spezifischen Teil eines Zonefile zu
-  ändern.</p>
-  <section id="das-expandierte-standardzonefile" class="level3">
-  <h3>Das expandierte Standardzonefile</h3>
-  <p>:</p>
-  <pre><code>$TTL 6H
-example.com. IN SOA h00.hostsharing.net. hostmaster.hostsharing.net. (
-        1303649373      ; serial secs since Jan 1 1970  
-        6H              ; refresh (&gt;=10000)
-        1H              ; retry (&gt;=1800)
-        1W              ; expire
-        1H              ; minimum
-        )
-
-example.com.    IN      NS      dns1.hostsharing.net.
-example.com.    IN      NS      dns2.hostsharing.net.
-example.com.    IN      NS      dns3.hostsharing.net.
-example.com.    IN      MX      30 mailin1.hostsharing.net.
-example.com.    IN      MX      30 mailin2.hostsharing.net.
-example.com.    IN      MX      30 mailin3.hostsharing.net.
-example.com.    IN      A       83.223.95.160
-example.com.    IN      AAAA    2a01:37:1000::53df:5bfc:0
-_imap._tcp.example.com.              IN      SRV     1 0 143 xyz00.hostsharing.net.
-_imaps._tcp.example.com.             IN      SRV     2 0 993 xyz00.hostsharing.net.
-_pop3._tcp.example.com.              IN      SRV     3 0 110 xyz00.hostsharing.net.
-_pop3s._tcp.example.com.             IN      SRV     4 0 995 xyz00.hostsharing.net.
-_submission._tcp.example.com.        IN      SRV     0 0 587 xyz00.hostsharing.net.
-_autodiscover._tcp.example.com.      IN      SRV     0 0 443 example.com.
-autodiscover.example.com.            IN      A       0.0.0.0
-autodiscover.example.com.            IN      AAAA    ::
-example.com.    IN      TXT     &quot;v=spf1 include:spf.hostsharing.net ?all&quot;
-*.example.com.  IN      MX      30 mailin1.hostsharing.net.
-*.example.com.  IN      MX      30 mailin2.hostsharing.net.
-*.example.com.  IN      MX      30 mailin3.hostsharing.net.
-*.example.com.  IN      A       83.223.95.160
-*.example.com.  IN      AAAA    2a01:37:1000::53df:5bfc:0
-*.example.com.  IN      TXT     &quot;v=spf1 include:spf.hostsharing.net ?all&quot;</code></pre>
-  </section>
-  <section id="kap-ref-zonefile-platzhalter" class="level3">
-  <h3>Platzhalter</h3>
-  <pre><code>Platzhalter             expandiert zu
-
-{DEFAULT_ZONEFILE}      {HEADER}
-                        {SOA_RR}
-                        {NS_RR}
-                        {MX_RR} 
-                        {A_RR}
-                        {AAAA_RR}
-                        {MAILSERVICES_RR}
-                        {AUTODISCOVER_RR}
-                        {SPF_RR}
-                        {DKIM_RR}
-                        {WILDCARD_MX_RR}
-                        {WILDCARD_A_RR}
-                        {WILDCARD_AAAA_RR}
-                        {WILDCARD_SPF_RR}
-
-{HEADER}                $TTL {TTL}
-
-{SOA_RR}                {DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
-                                {SIO}       ; serial secs since Jan 1 1970
-                                {REFRESH}   ; refresh (&gt;=10000)
-                                {RETRY}     ; retry (&gt;=1800)
-                                {EXPIRE}    ; expire
-                                {MINIMUM}   ; minimum
-                        )   
-
-{NS_RR}                 {DOM_HOSTNAME}.     IN  NS  {DNS1_HOSTNAME}.
-                        {DOM_HOSTNAME}.     IN  NS  {DNS2_HOSTNAME}.
-                        {DOM_HOSTNAME}.     IN  NS  {DNS3_HOSTNAME}.
-
-{MX_RR}                 {DOM_HOSTNAME}.     IN  MX  30 {MX1_HOSTNAME}.
-                        {DOM_HOSTNAME}.     IN  MX  30 {MX2_HOSTNAME}.
-                        {DOM_HOSTNAME}.     IN  MX  30 {MX3_HOSTNAME}.
-
-{A_RR}                  {DOM_HOSTNAME}.     IN  A   {DOM_IP4NUMBER}
-
-{AAAA_RR}               {DOM_HOSTNAME}.     IN  AAAA    {DOM_IP6NUMBER}
-
-
-{MAILSERVICES_RR}       _imap._tcp.{DOM_HOSTNAME}.              IN      SRV     1 0 143 {PAC_HOSTNAME}.
-                        _imaps._tcp.{DOM_HOSTNAME}.             IN      SRV     2 0 993 {PAC_HOSTNAME}.
-                        _pop3._tcp.{DOM_HOSTNAME}.              IN      SRV     3 0 110 {PAC_HOSTNAME}.
-                        _pop3s._tcp.{DOM_HOSTNAME}.             IN      SRV     4 0 995 {PAC_HOSTNAME}.
-                        _submission._tcp.{DOM_HOSTNAME}.        IN      SRV     0 0 587 {PAC_HOSTNAME}.
-
-{AUTODISCOVER_RR}       _autodiscover._tcp.{DOM_HOSTNAME}.      IN      SRV     0 0 443 {DOM_HOSTNAME}.
-                        autodiscover.{DOM_HOSTNAME}.            IN      A       0.0.0.0
-                        autodiscover.{DOM_HOSTNAME}.            IN      AAAA    ::
-
-{SPF_RR}                {DOM_HOSTNAME}.     IN      TXT  &quot;v=spf1 include:spf.hostsharing.net -all&quot;
-
-{WILDCARD_MX_RR}        *.{DOM_HOSTNAME}.   IN  MX  30 {MX1_HOSTNAME}.
-                        *.{DOM_HOSTNAME}.   IN  MX  30 {MX2_HOSTNAME}.
-                        *.{DOM_HOSTNAME}.   IN  MX  30 {MX3_HOSTNAME}.
-
-{WILDCARD_A_RR}         *.{DOM_HOSTNAME}.   IN  A   {DOM_IP4NUMBER}
-
-{WILDCARD_AAAA_RR}      *.{DOM_HOSTNAME}.   IN  AAAA    {DOM_IP6NUMBER}
-
-{WILDCARD_SPF_RR}       *.{DOM_HOSTNAME}.   IN      TXT  &quot;v=spf1 include:spf.hostsharing.net ?all&quot;
-
-{DKIM_RR}               default._domainkey  IN      TXT  &quot;v=DKIM1; h=sha256; k=rsa; s=email; p=MIIB...&quot;
-
-{TTL}                   6H
-{SOA_HOSTNAME}          &lt;HIVE&gt;.hostsharing.net
-{SOA_EMAIL}             hostmaster.hostsharing.net
-{SIO}                   &lt;SEKUNDEN&gt;
-{REFRESH}               6H
-{RETRY}                 1H
-{EXPIRE}                1W
-{MINIMUM}               1H</code></pre>
-  <p>Folgende Werte werden von Hostsharing verwaltet:</p>
-  <p><code>&lt;SEKUNDEN&gt;</code> für die Anzahl der Sekunden, welche
-  seit dem 01.01.1970 vergangen sind</p>
-  <p><code>&lt;FQDN&gt;</code> für den vollständigen, qualifizierten
-  Domainnamen der Domain, z.B. <code>example.com</code></p>
-  <p><code>&lt;IPv4&gt;</code> für die der Domain zugewiesene
-  IPv4-Adresse</p>
-  <p><code>&lt;IPv6&gt;</code> für die der Domain zugewiesene
-  IPv6-Adresse</p>
-  <p><code>&lt;HIVE&gt;</code> für den Server, auf dem die Domain
-  gehostet ist, z.B. <code>h20</code></p>
-  <p><code>&lt;PAC&gt;</code> für das Paket, dem die Domain zugeordnet
-  ist, z.B. <code>xyz00</code></p>
-  </section>
-  <section id="expansion-der-platzhalter" class="level3">
-  <h3>Expansion der Platzhalter</h3>
-  <p>Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird in
-  drei Schritten folgendermaßen expandiert. Zunächst werden die
-  komplexen Platzhalter ersetzt. :</p>
-  <pre><code>{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
-        {SIO}           ; serial secs since Jan 1 1970
-        {REFRESH}       ; refresh (&gt;=10000)
-        {RETRY}     ; retry (&gt;=1800)
-        {EXPIRE}    ; expire
-    {MINIMUM}   ; minimum
-    )
-{DOM_HOSTNAME}.     IN  NS  {DNS1_HOSTNAME}.
-{DOM_HOSTNAME}.     IN  NS  {DNS2_HOSTNAME}.
-{DOM_HOSTNAME}.     IN  NS  {DNS3_HOSTNAME}.
-
-{DOM_HOSTNAME}.     IN  MX  30 {MX1_HOSTNAME}.
-{DOM_HOSTNAME}.     IN  MX  30 {MX2_HOSTNAME}.
-{DOM_HOSTNAME}.     IN  MX  30 {MX3_HOSTNAME}.
-
-{DOM_HOSTNAME}.     IN  A   {DOM_IP4NUMBER}
-{DOM_HOSTNAME}.     IN  AAAA    {DOM_IP6NUMBER}
-
-_imap._tcp.{DOM_HOSTNAME}.          IN  SRV 1 0 143 {PAC_HOSTNAME}.
-_imaps._tcp.{DOM_HOSTNAME}.         IN  SRV 2 0 993 {PAC_HOSTNAME}.
-_pop3._tcp.{DOM_HOSTNAME}.          IN  SRV 3 0 110 {PAC_HOSTNAME}.
-_pop3s._tcp.{DOM_HOSTNAME}.         IN  SRV 4 0 995 {PAC_HOSTNAME}.
-_submission._tcp.{DOM_HOSTNAME}.    IN  SRV 0 0 587 {PAC_HOSTNAME}.
-
-_autodiscover._tcp.{DOM_HOSTNAME}.  IN  SRV 0 0 443 {DOM_HOSTNAME}.
-autodiscover.{DOM_HOSTNAME}.        IN  A   0.0.0.0
-autodiscover.{DOM_HOSTNAME}.        IN  AAAA    ::
-
-{DOM_HOSTNAME}.     IN  TXT &quot;v=spf1 include:spf.hostsharing.net ?all&quot;
-
-*.{DOM_HOSTNAME}.   IN  MX  30 {MX1_HOSTNAME}.
-*.{DOM_HOSTNAME}.   IN  MX  30 {MX2_HOSTNAME}.
-*.{DOM_HOSTNAME}.   IN  MX  30 {MX3_HOSTNAME}.
-
-*.{DOM_HOSTNAME}.   IN  A   {DOM_IP4NUMBER}
-*.{DOM_HOSTNAME}.   IN  AAAA    {DOM_IP6NUMBER}
-
-*.{DOM_HOSTNAME}.   IN  TXT &quot;v=spf1 include:spf.hostsharing.net ?all&quot;</code></pre>
-  <p>Anschließend werden die atomaren Platzhalter ersetzt. :</p>
-  <pre><code>$TTL 6H
-
-&lt;FQDN&gt;. IN SOA &lt;HIVE&gt;.hostsharing.net. hostmaster.hostsharing.net. (
-        &lt;SEKUNDEN&gt;  ; serial secs since Jan 1 1970
-        6H      ; refresh (&gt;=10000)
-        1H      ; retry (&gt;=1800)
-        1W      ; expire
-        1H      ; minimum
-        )
-
-&lt;FQDN&gt;.     IN  NS  dns1.hostsharing.net.
-&lt;FQDN&gt;.     IN  NS  dns2.hostsharing.net.
-&lt;FQDN&gt;.     IN  NS  dns3.hostsharing.net.
-
-&lt;FQDN&gt;.     IN  MX  30 mail1.hostsharing.net.
-&lt;FQDN&gt;.     IN  MX  30 mail2.hostsharing.net.
-&lt;FQDN&gt;.     IN  MX  30 mail3.hostsharing.net.
-
-_imap._tcp.&lt;FQDN&gt;.          IN  SRV 1 0 143 &lt;PAC&gt;.hostsharing.net.
-_imaps._tcp.&lt;FQDN&gt;.         IN  SRV 2 0 993 &lt;PAC&gt;.hostsharing.net.
-_pop3._tcp.&lt;FQDN&gt;.          IN  SRV 3 0 110 &lt;PAC&gt;.hostsharing.net.
-_pop3s._tcp.&lt;FQDN&gt;.         IN  SRV 4 0 995 &lt;PAC&gt;.hostsharing.net.
-_submission._tcp.&lt;FQDN&gt;.    IN  SRV 0 0 587 &lt;PAC&gt;.hostsharing.net.
-
-_autodiscover._tcp.&lt;FQDN&gt;.  IN  SRV 0 0 443 &lt;FQDN&gt;.
-autodiscover.&lt;FQDN&gt;.        IN  A   0.0.0.0
-autodiscover.&lt;FQDN&gt;.        IN  AAAA    \:\:
-
-&lt;FQDN&gt;.     IN  A   &lt;IPv4&gt;
-&lt;FQDN&gt;.     IN  AAAA    &lt;IPv6&gt;
-
-&lt;FQDN&gt;.     IN  TXT &quot;v=spf1 include:spf.hostsharing.net ?all&quot;
-
-*.&lt;FQDN&gt;.   IN  MX  30 mail1.hostsharing.net.
-*.&lt;FQDN&gt;.   IN  MX  30 mail2.hostsharing.net.
-*.&lt;FQDN&gt;.   IN  MX  30 mail3.hostsharing.net.
-
-*.&lt;FQDN&gt;.   IN  A   &lt;IPv4&gt;
-*.&lt;FQDN&gt;.   IN  AAAA    &lt;IPv6&gt;
-
-*.&lt;FQDN&gt;.   IN  TXT &quot;v=spf1 include:spf.hostsharing.net ?all&quot;</code></pre>
-  </section>
-  <section id="eigenes-zonefile" class="level3">
-  <h3>Eigenes Zonefile</h3>
-  <p>Es kann für jede aufgeschaltete Domain jeweils ein eigenes
-  Zonefiles angelegt werden. In der Regel ist dies nur bei folgenden
-  Anforderungen notwendig:</p>
-  <ul>
-  <li>Webseiten zu einer Domain oder Sub-Domain bei einem anderen Hoster
-  oder auf einem eigenen Server anbieten</li>
-  <li>Dienste (z.B. E-Mail) bei einem anderen Anbieter betreiben</li>
-  </ul>
-  <p>In eigenen Zonefiles sollten Platzhalter verwendet werden. Diese
-  Platzhalter ermöglichen das Ändern der DNS-Konfiguration seitens
-  Hostsharing, ohne dass der Domain-Admin sein Zonefile anpassen muss.
-  Das Zonefile für die Domain <code>example.com</code> wird als im
-  Verzeichnis <code>~/doms/example.com/etc/</code> als Datei
-  <code>pri.example.com</code> abgelegt und einige Minuten nach dem
-  Speichern automatisch aktiv.</p>
-  <div class="warning">
-  <p>Das unsachgemäße Erstellen oder Fehler im eigenen Zonefile können
-  zur Nichterreichbarkeit der Domain und zum Verlust von E-Mails
-  führen!</p>
-  </div>
-  <p>Im Wiki der Mitglieder finden sich <a
-  href="https://wiki.hostsharing.net/index.php?title=Simple_Zonefile_Howto">Beispiele
-  für eigene Zonefiles</a>.</p>
-  </section>
-  <section id="kontrolle-der-änderungen" class="level3">
-  <h3>Kontrolle der Änderungen</h3>
-  <p>Durchgeführte Änderungen am Zonefile können mit Hilfe der Logdatei
-  named.log überprüft werden:</p>
-  <pre class="console"><code>$ tail -f /var/log/named/named.log 
-$ tail -f /var/log/named/named.log | grep example.com</code></pre>
-  <p>Nach einer erfolgreichen Übertragung der DNS Zone zu den drei
-  DNS-Servern finden sich in der Log-Datei etwa die folgenden sechs
-  Zeilen:</p>
-  <pre class="console"><code>18-Dec-2019 12:06:27.997 info: client 83.223.95.201#53191 (example.com): transfer of &#39;example.com/IN&#39;: AXFR-style IXFR started (serial 1576667187)
-18-Dec-2019 12:06:27.998 info: client 83.223.95.201#53191 (example.com): transfer of &#39;example.com/IN&#39;: AXFR-style IXFR ended
-18-Dec-2019 12:06:28.517 info: client 83.223.78.230#37959 (example.com): transfer of &#39;example.com/IN&#39;: AXFR-style IXFR started (serial 1576667187)
-18-Dec-2019 12:06:28.517 info: client 83.223.78.230#37959 (example.com): transfer of &#39;example.com/IN&#39;: AXFR-style IXFR ended
-18-Dec-2019 12:06:28.568 info: client 176.9.242.51#40371 (example.com): transfer of &#39;example.com/IN&#39;: AXFR-style IXFR started (serial 1576667187)
-18-Dec-2019 12:06:28.569 info: client 176.9.242.51#40371 (example.com): transfer of &#39;example.com/IN&#39;: AXFR-style IXFR ended</code></pre>
-  <p>Zur Überprüfung von Änderungen am Zonefile kann zusätzlich die
-  Seriennummer in den DNS-Servern mit der aktuellen Seriennummer im
-  Zonefile verglichen werden:</p>
-  <pre class="console"><code>$ dig -t SOA @dns1.hostsharing.net example.com 
-$ cat /etc/bind/pri.example.com</code></pre>
-  <p>Es findet sich jeweils die Seriennummer (im obigen Log-Auszug die
-  '1576667187') im SOA Record.</p>
-  </section>
-  <section id="eigenes-zonefile-deaktivieren" class="level3">
-  <h3>Eigenes Zonefile deaktivieren</h3>
-  <p>Im Verzeichnis <code>~/doms/example.com/etc/</code> das vorhandene
-  Zonefile (pri.example.com) leeren (0 Bytes). Das leere Zonefile wird
-  durch einen Robot gelöscht und es gilt das Standardzonefile.</p>
-  </section>
-  </section>
-  <section id="kap-hsadmin" class="level2">
-  <h2>HSAdmin</h2>
-  <p>HSAdmin ist ein Werkzeug zur Verwaltung von Nutzern,
-  E-Mail-Adressen, E-Mail-Aliases, Domains, Datenbanken und
-  Datenbank-Nutzern. Die Bedienung erfolgt über ein Webfrontend, das in
-  <code class="interpreted-text"
-  role="numref">kap-hsadmin-einstieg</code> vorgestellt wird.</p>
-  <p>In diesem Kapitel geht es um den HSAdmin-Client <code
-  class="interpreted-text" role="command">hsscript</code>, der in der
-  Konsole benutzt wird.</p>
-  <p>HSAdmin verfügt über folgende Module:</p>
-  <table>
-  <caption>Die Module von HSAdmin</caption>
-  <colgroup>
-  <col style="width: 25%" />
-  <col style="width: 75%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Modul</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;"><code>user</code></td>
-  <td style="text-align: left;">Modul zur Nutzerverwaltung</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>mysqldb</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung von
-  MySQL-Datenbanken</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>mysqluser</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung vom
-  MySQL-Datenbanknutzern</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>postgresqldb</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung von
-  PostgreSQL-Datenbanken</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>postgresqluser</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung von
-  PostgreSQL-Datenbanknutzern</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>emailaddress</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung von
-  E-Mail-Adressen</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>emailalias</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung von
-  E-Mail-Aliasen</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;"><code>domain</code></td>
-  <td style="text-align: left;">Modul zur Verwaltung von Domains in
-  einem Web-Paket</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;"><code>q</code></td>
-  <td style="text-align: left;">Modul zur Suche von Systemaufträgen von
-  HSAdmin</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die HSAdmin-Module verfügen über folgenden Funktionen:</p>
-  <table>
-  <caption>Die Funktionen von HSAdmin</caption>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Funktion</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;">search</td>
-  <td style="text-align: left;">suchen</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;">add</td>
-  <td style="text-align: left;">hinzufügen</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;">update</td>
-  <td style="text-align: left;">aktualisieren</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;">remove</td>
-  <td style="text-align: left;">löschen</td>
-  </tr>
-  </tbody>
-  </table>
-  <section id="kap-hsadmin-syntax" class="level3">
-  <h3>Syntax</h3>
-  <p>Die Funktionen von HSAdmin können über das Kommandozeilenprogramm
-  <code>hsscript</code> aufgerufen werden, welches Befehle per
-  Parameter, Dateiübergabe oder interaktiv entgegennimmt. Der Aufruf
-  erfolgt nach folgender Syntax:</p>
-  <pre class="console"><code>$ hsscript -u &lt;Benutzer&gt; -e &lt;Befehl&gt;...</code></pre>
-  <p>Die folgenden Optionen können übergeben werden.</p>
-  <dl>
-  <dt><code>-u \--user</code></dt>
-  <dd>
-  <p>Benutzer, welcher zur Authentifizierung und Autorisierung verwendet
-  werden soll, zum Beispiel <code>xyz00</code>.</p>
-  </dd>
-  <dt><code>-r \--runas</code></dt>
-  <dd>
-  <p>Benutzer, mit dessen Rechten der Befehl ausgeführt werden soll, zum
-  Beispiel <code>xzy00-doms</code>.</p>
-  </dd>
-  <dt><code>-e \--expr</code></dt>
-  <dd>
-  <p>Der Befehl, der ausgeführt werden soll. Er setzt sich aus einer
-  Reihe von Parametern zusammen.</p>
-  </dd>
-  </dl>
-  <p>Der Befehl hat folgende Syntax:</p>
-  <pre><code>module.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}}) </code></pre>
-  <table>
-  <caption>Die Parameter</caption>
-  <colgroup>
-  <col style="width: 20%" />
-  <col style="width: 79%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th style="text-align: left;">Parameter</th>
-  <th style="text-align: left;">Erläuterung</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td style="text-align: left;">module</td>
-  <td style="text-align: left;">Modul, dessen Funktion aufgerufen werden
-  soll (z.B. <code>user</code> oder <code>mysqldb</code>)</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;">function</td>
-  <td style="text-align: left;">Funktion, welche aufgerufen werden soll
-  (<code>search</code>, <code>add</code>, <code>update</code>,
-  <code>remove</code>)</td>
-  </tr>
-  <tr class="odd">
-  <td style="text-align: left;">where</td>
-  <td style="text-align: left;">selektiert nach Wert eines oder mehrerer
-  Felder</td>
-  </tr>
-  <tr class="even">
-  <td style="text-align: left;">set</td>
-  <td style="text-align: left;">setzt oder aktualisiert den Wert eines
-  oder mehrerer Felder</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die Module und Funktionen werden in den folgenden Kapiteln
-  erklärt.</p>
-  <dl>
-  <dt><code>-f \--file</code></dt>
-  <dd>
-  <p>Datei, aus welcher Befehle gelesen und ausgeführt werden sollen.
-  Lesen Sie dazu <code class="interpreted-text"
-  role="numref">kap-hsscript-skript</code>.</p>
-  </dd>
-  <dt><code>-i \--interactive</code></dt>
-  <dd>
-  <p>Das Programm startet im interaktiven Modus. Die Befehle können am
-  Kommandozeilen-Prompt eingegeben werden.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="kap-modul-user" class="level3">
-  <h3>Modul user</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>user.search</code></dt>
-  <dd>
-  <p>Suche Benutzer nach den im Befehlsausdruck angegebenen Feldern und
-  Werten</p>
-  </dd>
-  <dt><code>user.add</code></dt>
-  <dd>
-  <p>Füge einen neuen Benutzer nach den im Befehlsausdruck angegebenen
-  Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>user.update</code></dt>
-  <dd>
-  <p>Aktualisiere einen Benutzer nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  <dt><code>user.remove</code></dt>
-  <dd>
-  <p>Lösche einen Benutzer nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>user</code> kann entsprechend der folgenden
-  Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>user.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>user</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Benutzerkennung (z.B. xyz00-abc)</p>
-  </dd>
-  <dt><code>comment</code></dt>
-  <dd>
-  <p>Kommentar, in dem zum Beispiel die Funktion des Benutzers
-  beschrieben werden kann</p>
-  </dd>
-  <dt><code>password</code></dt>
-  <dd>
-  <p>Das Passwort</p>
-  </dd>
-  <dt><code>shell</code></dt>
-  <dd>
-  <p>Die zugewiesene Shell (z.B. <code>/bin/bash</code>)</p>
-  </dd>
-  <dt><code>quota_softlimit</code></dt>
-  <dd>
-  <p>Das zugewiesene Quota in Megabyte</p>
-  </dd>
-  <dt><code>quote_hardlimit</code></dt>
-  <dd>
-  <p>Grenze der Grace Period, bis zu der Überschreitungen des Softlimit
-  toleriert werden. Angabe in Megabyte</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>In einer interaktiven Sitzung wird mit folgendem Befehl der neue
-  Benutzer <code>xyz00-mustermann</code> angelegt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; user.add ({set:{name:&#39;xyz00-mustermann&#39;,comment:&#39;Max Mustermann&#39;,password:&#39;!1?2-3aBc&#39;,shell:&#39;/bin/bash&#39;}})</code></pre>
-  <p>Man kann alle Informationen zu einem Nutzer abfragen:</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; user.search ({where:{name:&#39;xyz00-mustermann&#39;}})</code></pre>
-  <p>Einstellungen können nachträglich verändert werden. Dafür wird der
-  Befehl <code>user.update</code> benutzt. Im Befehlsausdruck wird
-  zunächst mit <code>where</code> nach einem Datensatz gesucht, auf den
-  mit <code>set</code> die Veränderung angewendet wird. Im ersten
-  Beispiel wird für den Benutzer <code>xyz00-mustermann</code> ein neues
-  Passwort gesetzt. Im zweiten Beispiel bekommt der Benutzer eine andere
-  Shell zugewiesen und im dritten wird ein Quota gesetzt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; user.update ({where:{name:&#39;xyz00-mustermann&#39;},set:{password:&#39;neues-passwort&#39;}})
-xyz00@hsadmin&gt; user.update ({where:{name:&#39;xyz00-mustermann&#39;},set:{shell:&#39;/bin/zsh&#39;}})
-xyz00@hsadmin&gt; user.update ({where:{name:&#39;xyz00-mustermann&#39;},set:{quota_softlimit:&#39;50&#39;,quota_hardlimit:&#39;75&#39;}})</code></pre>
-  <p>Natürlich können wir Benutzer mit Hilfe des Kommandozeilen-Tools
-  auch wieder entfernen. Im folgenden Beispiel wird der Benutzer
-  <code>xyz00-mustermann</code> mit dem Befehl <code>user.remove</code>
-  gelöscht.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; user.remove ({where:{name:&#39;xyz00-mustermann&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-domain" class="level3">
-  <h3>Modul domain</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>domain.search</code></dt>
-  <dd>
-  <p>Suche Domain nach den im Befehlsausdruck angegebenen Feldern und
-  Werten</p>
-  </dd>
-  <dt><code>domain.add</code></dt>
-  <dd>
-  <p>Füge eine neue Domain nach den im Befehlsausdruck angegebenen
-  Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>domain.update</code></dt>
-  <dd>
-  <p>Aktualisiere eine Domain nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  <dt><code>domain.remove</code></dt>
-  <dd>
-  <p>Lösche eine Domain nach den im Befehlsausdruck angegebenen Feldern
-  und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>domain</code> kann entsprechend der
-  folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>domain.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>domain</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Name einer Domain</p>
-  </dd>
-  <dt><code>user</code></dt>
-  <dd>
-  <p>Name des Domain-Admins</p>
-  </dd>
-  <dt><code>validsubdomainnames</code></dt>
-  <dd>
-  <p>leichtgewichtige Subdomains in diesem Virtual-Host des Webservers,
-  gültige Werte: <code>*</code> für beliebige Subdomains oder eine
-  kommaseparierte Liste: <code>www,blog,other</code></p>
-  </dd>
-  <dt><code>greylisting</code></dt>
-  <dd>
-  <p>E-Mails werden verzögert durch den Mailserver angenommen, siehe
-  <code>Greylisting</code>. Ist die Option deaktivert, werden E-Mails
-  ohne Verzögerung angenommen.</p>
-  </dd>
-  <dt><code>multiviews</code></dt>
-  <dd>
-  <p>Der Webserver berücksichtigt Einstellungen im Browser beim Abruf
-  einer Domain (z.B. eine bevorzugte Sprache). Die Option kann mit einer
-  <code>.htaccess</code>-Datei für jedes Verzeichnis konfiguriert
-  werden.</p>
-  </dd>
-  <dt><code>indexes</code></dt>
-  <dd>
-  <p>Der Webserver erzeugt für Verzeichnisse, die keine eigene
-  Index-Datei enthalten, eine Liste mit den im Verzeichnis enthaltenen
-  Dateien. Ist die Option deaktiviert, wird ein Fehler 303 ausgegeben.
-  Die Option kann mit einer .htaccess-Datei für jedes Verzeichnis
-  konfiguriert werden.</p>
-  </dd>
-  <dt><code>htdocsfallback</code></dt>
-  <dd>
-  <p>Der Webserver leitet auf die Hauptdomain, wenn keine Sub-Domain
-  angelegt ist. Ist die Option deaktivert, wird ein Fehler 404
-  ausgegeben: Seite nicht gefunden.</p>
-  </dd>
-  <dt><code>includes</code></dt>
-  <dd>
-  <p>Der Webserver erkennt <code>SSI</code>-Komandos und -Dateien. Die
-  Option kann mit einer .htaccess-Datei für jedes Verzeichnis
-  konfiguriert werden.</p>
-  </dd>
-  <dt><code>backupmxforexternalmx</code></dt>
-  <dd>
-  <p>Der Paket-Hive wird als Weiterleitung (transport) beim
-  Mail-In-Server eingetragen. Ist die Option aktiv, ist der
-  Hostsharing-Mail-In-Server Backup-MX. Der eigentliche Mailserver
-  befindet sich außerhalb der Infrastruktur von Hostsharing (z.B.
-  anderer Provider, DSL-Anschluss mit fester IP)</p>
-  </dd>
-  <dt><code>letsencrypt</code></dt>
-  <dd>
-  <p>Es wird automatisch ein TLS Zertifikat für diese Domain und alle im
-  Feld „validsubdomainnames” angegebenen Subdomains erzeugt</p>
-  </dd>
-  <dt><code>autoconfig</code></dt>
-  <dd>
-  <p>Eine Unterstützung für die Konfiguration von E-Mail-Programmen
-  durch die Verfahren "Autoconfig" (Mozilla) und "Autodiscover"
-  (Microsoft) wird für die Domain eingeschaltet</p>
-  </dd>
-  </dl>
-  <p>::: note Die Option <code>backupmxforexternalmx</code> erfordert
-  Änderungen am <code class="interpreted-text"
-  role="doc">Zonefile&lt;../zonefile/index&gt;</code> einer Domain.
-  :::</p>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Mit dem folgenden Befehl schalten wir die Domain
-  <code>hs-example.de</code> auf und ordnen Sie dem Domain-Admin
-  <code>xyz00-hsexample</code> zu.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; domain.add({set:{name:&#39;hs-example.de&#39;,user:&#39;xyz00-hsexample&#39;}})</code></pre>
-  <p>Mit dem Befehl <code>domain.search</code> werden alle Informationen
-  zu einer Domain angezeigt. Die gesuchte Domain wird mit dem
-  Befehlsausdruck <code>where</code> ausgewählt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; domain.search({where:{name:&#39;hs-example.de&#39;}})</code></pre>
-  <p>Und mit dem Befehl <code>domain.remove</code> können wir eine
-  Domain entfernen.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; domain.remove({where:{name:&#39;hs-example.de&#39;}})</code></pre>
-  <p>Mit dem Befehl <code>domain.update</code> lassen sich die
-  Einstellungen für eine Domain verändern. Bei einer Änderung der
-  Domain-Optionen, wie im folgenden Beispiel, müssen immer alle Optionen
-  angegeben werden, die gesetzt sein sollen, da der Befehl die bereits
-  gesetzten Domain-Optionen komplett überschreibt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; domain.update({where:{name:&#39;hs-example.de&#39;},set:{domainoptions:[&#39;htdocsfallback&#39;,&#39;indexes&#39;,&#39;greylisting&#39;,&#39;letsencrypt&#39;,&#39;autoconfig&#39;]}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-mysqldb" class="level3">
-  <h3>Modul mysqldb</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>mysqldb.search</code></dt>
-  <dd>
-  <p>Suche Datenbank nach den im Befehlsausdruck angegebenen Feldern und
-  Werten</p>
-  </dd>
-  <dt><code>mysqldb.add</code></dt>
-  <dd>
-  <p>Füge eine neue Datenbank nach den im Befehlsausdruck angegebenen
-  Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>mysqldb.update</code></dt>
-  <dd>
-  <p>Aktualisiere eine Datenbank nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  <dt><code>mysqldb.remove</code></dt>
-  <dd>
-  <p>Lösche eine Datenbank nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>mysqldb</code> kann entsprechend der
-  folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>mysqldb.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>mysqldb</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Datenbankname (z.B. xyz00_abc)</p>
-  </dd>
-  <dt><code>owner</code></dt>
-  <dd>
-  <p>Datenbanknutzer (z.B. xyz00_owner)</p>
-  </dd>
-  <dt><code>encoding</code></dt>
-  <dd>
-  <p>Zeichensatz der Datenbank (Standard ist UTF-8)</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Im ersten Beispiel erzeugen wir eine Datenbank mit dem Namen
-  <code>xyz00_abc</code> und legen als Besitzer den Datenbanknutzer
-  <code>xyz00_owner</code> fest.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; mysqldb.add ({set:{name:&#39;xyz00_abc&#39;,owner:&#39;xyz00_owner&#39;}})</code></pre>
-  <p>Bevor man Änderungen an einem Datensatz vornimmt, kann man sich
-  alle Eigenschaften einer Datenbank mit dem Befehl
-  <code>mysqldb.search</code> anzeigen lassen. Die gewünschte Datenbank
-  wird mit dem Befehlsausdruck <code>where</code> ausgewählt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; mysqldb.search ({where:{name:&#39;xyz00_abc&#39;}})</code></pre>
-  <p>Und mit dem Befehl <code>mysqldb.remove</code> können Datenbanken
-  gelöscht werden. Die gewünschte Datenbank wird erneut mit dem
-  Befehlsausdruck <code>where</code> ausgewählt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; mysqldb.remove ({where:{name:&#39;xyz00_abc&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-mysqluser" class="level3">
-  <h3>Modul mysqluser</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>mysqluser.search</code></dt>
-  <dd>
-  <p>Suche Datenbank-Benutzer nach den im Befehlsausdruck angegebenen
-  Feldern und Werten</p>
-  </dd>
-  <dt><code>mysqluser.add</code></dt>
-  <dd>
-  <p>Füge einen neuen Datenbank-Benutzer nach den im Befehlsausdruck
-  angegebenen Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>mysqluser.update</code></dt>
-  <dd>
-  <p>Aktualisiere einen Datenbank-Benutzer nach den im Befehlsausdruck
-  angegebenen Feldern und Werten.</p>
-  </dd>
-  <dt>`mysqluser.remove´</dt>
-  <dd>
-  <p>Lösche einen Datenbank-Benutzer nach den im Befehlsausdruck
-  angegebenen Feldern und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>mysqluser</code> kann entsprechend der
-  folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>mysqluser.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>mysqluser</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Name des Datenbank-Benutzers (z.B. <code>xyz00_owner</code>)</p>
-  </dd>
-  <dt><code>password</code></dt>
-  <dd>
-  <p>Passwort des Datenbank-Benutzers</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Im ersten Beispiel fügen wir dem System den Datenbank-Benutzer
-  <code>xyz00_owner</code> hinzu und geben ihm ein Passwort.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; mysqluser.add({set:{name:&#39;xyz00_owner&#39;,password:&#39;!1?2-3aBc&#39;}})</code></pre>
-  <p>In den folgenden beiden Beispielen lassen wir uns zunächst mit dem
-  Befehl <code>mysqluser.search</code> die Informationen zu einem
-  Benutzer anzeigen, den wir mit dem Befehlsausdruck <code>where</code>
-  auswählen. Anschließend entfernen wir diesen Nutzer mit dem Befehl
-  <code>mysqluser.remove</code>.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; mysqluser.search({where:{name:&#39;xyz00_owner&#39;}})
-xyz00@hsadmin&gt; mysqluser.remove({where:{name:&#39;xyz00_owner&#39;}})</code></pre>
-  <p>Im letzten Beispiel aktualieren wir einen Benutzereintrag mit dem
-  Befehl <code>mysqluser.update</code>. Der Benutzer wird mit
-  <code>where</code> ausgesucht, anschließend bekommt er mit
-  <code>set</code> ein neues Passwort.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; mysqluser.update({where:{name:&#39;xyz00_owner&#39;},set:{password:&#39;neues-passwort&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-postgresqldb" class="level3">
-  <h3>Modul postgresqldb</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>postgresqldb.search</code></dt>
-  <dd>
-  <p>Suche Datenbank nach den im Befehlsausdruck angegebenen Feldern und
-  Werten</p>
-  </dd>
-  <dt><code>postgresqldb.add</code></dt>
-  <dd>
-  <p>Füge eine neue Datenbank nach den im Befehlsausdruck angegebenen
-  Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>postgresqldb.update</code></dt>
-  <dd>
-  <p>Aktualisiere eine Datenbank nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  <dt><code>postgresqldb.remove</code></dt>
-  <dd>
-  <p>Lösche eine Datenbank nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>postgresqldb</code> kann entsprechend der
-  folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>postgresqldb.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>postgresqldb</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Datenbankname (z.B. xyz00_abc)</p>
-  </dd>
-  <dt><code>owner</code></dt>
-  <dd>
-  <p>Datenbanknutzer (z.B. xyz00_owner)</p>
-  </dd>
-  <dt><code>encoding</code></dt>
-  <dd>
-  <p>Zeichensatz der Datenbank (Standard ist UTF-8)</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Im ersten Beispiel erzeugen wir die Datenbank
-  <code>xyz00_abc</code> und übergeben ihr als Besitzer den
-  Datenbanknutzer <code>xyz00_owner</code>.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; postgresqldb.add({set:{name:&#39;xyz00_abc&#39;,owner:&#39;xyz00_owner&#39;}})</code></pre>
-  <p>Die den beiden folgenden Beispielen lassen wir uns zunächst mit
-  <code>postgresqldb.search</code> Informationen zur Datenbank
-  <code>xyz00_abc</code> anzeigen. Anschließend löschen wir sie mit
-  <code>postgresqldb.remove</code>.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; postgresqldb.search({where:{name:&#39;xyz00_abc&#39;}})
-xyz00@hsadmin&gt; postgresqldb.remove({where:{name:&#39;xyz00_abc&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-postgresqluser" class="level3">
-  <h3>Modul postgresqluser</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>postgresqluser.search</code></dt>
-  <dd>
-  <p>Suche Datenbank-Benutzer nach den im Befehlsausdruck angegebenen
-  Feldern und Werten</p>
-  </dd>
-  <dt><code>postgresqluser.add</code></dt>
-  <dd>
-  <p>Füge einen neuen Datenbank-Benutzer nach den im Befehlsausdruck
-  angegebenen Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>postgresqluser.update</code></dt>
-  <dd>
-  <p>Aktualisiere einen Datenbank-Benutzer nach den im Befehlsausdruck
-  angegebenen Feldern und Werten.</p>
-  </dd>
-  <dt><code>postgresqluser.remove</code></dt>
-  <dd>
-  <p>Lösche einen Datenbank-Benutzer nach den im Befehlsausdruck
-  angegebenen Feldern und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>postgresqluser</code> kann entsprechend der
-  folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>postgresqluser.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>postgresqluser</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Name des Datenbank-Benutzers (z.B. <code>xyz00_owner</code>)</p>
-  </dd>
-  <dt><code>password</code></dt>
-  <dd>
-  <p>Passwort des Datenbank-Benutzers</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Im ersten Beispiel fügen wir dem System den Datenbank-Benutzer
-  <code>xyz00_owner</code> hinzu und geben ihm ein Passwort.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; postgresqluser.add ({set:{name:&#39;xyz00_owner&#39;,password:&#39;!1?2-3aBc&#39;}})</code></pre>
-  <p>Mit <code>postgresqluser.search</code> können wir die Eigenschaften
-  eines Benutzers anzeigen. Der gewünschte Benutzer wird mit
-  <code>where</code> ausgewählt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; postgresqluser.search ({where:{name:&#39;xyz00_owner&#39;}})</code></pre>
-  <p>Mit <code>postgresqluser.update</code> können Eigenschaften eines
-  Benutzers verändert werden. Der gewünschte Benutzer wird mit
-  <code>where</code> ausgewählt. Anschliend wird in unserem Beispiel mit
-  <code>set</code> ein neues Passwort gesetzt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; postgresqluser.update ({where:{name:&#39;xyz00_owner&#39;},set:{password:&#39;neues-passwort&#39;}})</code></pre>
-  <p>Und zuletzt können Datenbank-Benutzer auch wieder gelöscht werden.
-  Dazu benutzen wir den Befehl <code>postgresqluser.remove</code>. Der
-  zu löschende Benutzer wird mit <code>where</code> ausgewählt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; postgresqluser.remove ({where:{name:&#39;xyz00_owner&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-emailaddress" class="level3">
-  <h3>Modul emailaddress</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>emailaddress.search</code></dt>
-  <dd>
-  <p>Suche E-Mail-Adresse nach den im Befehlsausdruck angegebenen
-  Feldern und Werten</p>
-  </dd>
-  <dt><code>emailaddress.add</code></dt>
-  <dd>
-  <p>Füge eine neue E-Mail-Adresse nach den im Befehlsausdruck
-  angegebenen Feldern und Werten hinzu.</p>
-  </dd>
-  <dt><code>emailaddress.update</code></dt>
-  <dd>
-  <p>Aktualisiere eine E-Mail-Adresse nach den im Befehlsausdruck
-  angegebenen Feldern und Werten.</p>
-  </dd>
-  <dt><code>emailaddress.remove</code></dt>
-  <dd>
-  <p>Lösche eine E-Mail-Adresse nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>emailaddress</code> kann entsprechend der
-  folgenden Befehlssyntax von <code class="interpreted-text"
-  role="command">HSAdmin</code> Felder setzen oder verändern:</p>
-  <pre><code>emailaddress.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>emailaddress</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>domain</code></dt>
-  <dd>
-  <p>Name einer Domain</p>
-  </dd>
-  <dt><code>localpart</code></dt>
-  <dd>
-  <p>Bezeichnung für den lokalen Teil einer E-Mail-Adresse: der Teil vor
-  <code>@</code>.</p>
-  </dd>
-  <dt><code>target</code></dt>
-  <dd>
-  <p>Ziel einer E-Mail-Adresse, mehrere Ziele werden durch Kommata
-  getrennt</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Mit dem folgenden Befehl erhalten Sie eine Liste aller
-  E-Mail-Adressen der Domain <code>hs-example.de</code>.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailaddress.search({where:{domain:&quot;hs-example.de&quot;}})</code></pre>
-  <p>Mit folgendem Befehl lässt sich eine neue E-Mail-Adresse einrichten
-  und einem Postfach zuordnen:</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailaddress.add ({set:{domain:&#39;hs-example.de&#39;,localpart:&#39;info&#39;,target:&#39;xyz00-hs_example.de&#39;}})</code></pre>
-  <p>Das Programm gibt dann folgende Meldung als Quittierung des Befehls
-  zurück:</p>
-  <pre class="console"><code>[
-   {
-      admin:&#39;xyz00-doms&#39;,
-      domain:&#39;hs-example.de&#39;,
-      emailaddress:&#39;info@hs-example.de&#39;,
-      fulldomain:&#39;hs-example.de&#39;,
-      id:&#39;88747&#39;,
-      localpart:&#39;info&#39;,
-      pac:&#39;xyz00&#39;,
-      target:[
-         &#39;xyz00-hs_example.de&#39;
-      ]
-   }
-]</code></pre>
-  <p>Wenn später einmal der Wunsch aufkommt, die eintreffenden E-Mails
-  stattdessen an eine externe E-Mail-Adresse weiterzuleiten, kann man
-  den Eintrag aktualisieren. Das Ziel (<code>target</code>) lässt sich
-  entweder ändern:</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailaddress.update ({where:{domain:&#39;hs-example.de&#39;,localpart:&#39;info&#39;}, set:{target:&#39;andere@mail.de&#39;}})
-[
-   {
-      admin:&#39;xyz00-doms&#39;,
-      domain:&#39;hs-example.de&#39;,
-      emailaddress:&#39;info@hs-example.de&#39;,
-      fulldomain:&#39;hs-example.de&#39;,
-      id:&#39;88747&#39;,
-      localpart:&#39;info&#39;,
-      pac:&#39;xyz00&#39;,
-      target:[
-         &#39;andere@mail.de&#39;
-      ]
-   }
-]</code></pre>
-  <p>Oder man ergänzt die neue E-Mail-Adresse, indem man sie zusätzlich
-  einfügt. Mehrere Ziele werden mit Kommata abgegrenzt.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailaddress.update ({where:{domain:&#39;hs-example.de&#39;,localpart:&#39;info&#39;}, set:{target:&#39;andere@mail.de,xzy00-hs_example.de&#39;}})
-[
-   {
-      admin:&#39;xyz00-doms&#39;,
-      domain:&#39;hs-example.de&#39;,
-      emailaddress:&#39;info@hs-example.de&#39;,
-      fulldomain:&#39;hs-example.de&#39;,
-      id:&#39;88747&#39;,
-      localpart:&#39;info&#39;,
-      pac:&#39;xyz00&#39;,
-      target:[
-         &#39;andere@mail.de&#39;,
-         &#39;xzy00-hs_example.de&#39;
-      ]
-   }
-]</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-emailalias" class="level3">
-  <h3>Modul emailalias</h3>
-  <p>Mit diesem Modul können Sie ein E-Mail-Alias setzen. Ein typischer
-  Anwendungsfall wird im Abschnitt <a
-  href="#kap-email-alias">E-mail-Alias einrichten</a> beschrieben.</p>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>emailalias.search</code></dt>
-  <dd>
-  <p>Suche E-Mail-Alias nach den im Befehlsausdruck angegebenen Feldern
-  und Werten</p>
-  </dd>
-  </dl>
-  <p><code>emailalias.add</code></p>
-  <p>Füge eine neue E-Mail-Alias nach den im Befehlsausdruck angegebenen
-  Feldern und Werten hinzu.</p>
-  <p><code>emailalias.update</code></p>
-  <p>Aktualisiere eine E-Mail-Alias nach den im Befehlsausdruck
-  angegebenen Feldern und Werten.</p>
-  <p><code>emailalias.remove</code></p>
-  <p>Lösche eine E-Mail-Alias nach den im Befehlsausdruck angegebenen
-  Feldern und Werten.</p>
-  </section>
-  <section id="editierbare-felder" class="level4">
-  <h4>Editierbare Felder</h4>
-  <p>Das HSAdmin-Modul <code>emailalias</code> kann entsprechend der
-  folgenden Befehlssyntax von <code>HSAdmin</code> Felder setzen oder
-  verändern:</p>
-  <pre><code>emailalias.function({where:{field:&#39;value&#39;,...}, set:{field:&#39;value&#39;,...}})</code></pre>
-  <p>Im Modul <code>emailalias</code> stehen folgende Felder zur
-  Verfügung.</p>
-  <dl>
-  <dt><code>name</code></dt>
-  <dd>
-  <p>Name des E-Mail-Alias</p>
-  </dd>
-  <dt><code>target</code></dt>
-  <dd>
-  <p>Ziel einer E-Mail-Adresse; mehrere Ziele werden durch Kommata
-  getrennt</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <p>Das folgende E-Mail-Alias überschreibt die Voreinstellung für den
-  Paket-Admin <code>xyz00</code>. E-Mails an diesen Benutzer landen
-  nicht mehr in seinem Postfach, sondern werden an die E-Mailadresse
-  <code>webmaster@hs-example.de</code> weitergeleitet.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailalias.add ({set:{name:&#39;xyz00&#39;,target:&#39;webmaster@hs-example.de&#39;}})</code></pre>
-  <p>In dem nächsten beiden Beispielen wird zunächst nach der
-  Konfiguration für das E-Mail-Alias <code>xyz00</code> gesucht.
-  Anschließend wird ein Postfach <code>xyz00-mailbox</code> zusätzlich
-  zu der bereits eingetragenen E-Mail-Adresse hinzugefügt. Da das
-  Programm die Felder komplett überschreibt, müssen alle Werte angegeben
-  werden.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailalias.search ({where:{name:&#39;xyz00&#39;}})
-xyz00@hsadmin&gt; emailalias.update ({where:{name:&#39;xyz00&#39;},set:{target:&#39;xyz00-mailbox,webmaster@hs-example.de&#39;}})</code></pre>
-  <p>Im letzten Beispiel wird das E-Mail-Alias wieder gelöscht, sodass
-  E-Mails an den Paket-Admin wieder an sein Postfach ausgeliefert
-  werden.</p>
-  <pre class="console"><code>xyz00@hsadmin&gt; emailalias.remove ({where:{name:&#39;xyz00&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-modul-q" class="level3">
-  <h3>Modul q</h3>
-  <section id="funktionen" class="level4">
-  <h4>Funktionen</h4>
-  <dl>
-  <dt><code>q.search</code></dt>
-  <dd>
-  <p>Das HSAdmin-Modul hat nur die Funktion <code>search</code>. Hiermit
-  ist die Ausgabe der bereits ausgeführten HSAdmin-Aktionen möglich. Die
-  Ausgabe zeigt an, ob eine Aktion erfolgreich abgeschlossen werden
-  konnte oder ob beim Ausrollen der Konfiguration auf den Server Fehler
-  aufgetreten sind. Im Erfolgsfall wird als Status ›done‹ angezeigt.
-  Wenn Fehler aufgetreten sind wird der Status ›error‹ ausgegeben.
-  Daneben wird eine interne Fehlermeldung im Feld ›exception‹ angezeigt.
-  Wenden Sie sich im Fehlerfall bitte an den Service.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="beispiele" class="level4">
-  <h4>Beispiele</h4>
-  <pre class="console"><code>$  q.search ({where:{user:&#39;xyz00&#39;}})</code></pre>
-  </section>
-  </section>
-  <section id="kap-hsscript-skript" class="level3">
-  <h3>HSAdmin über Skripte steuern</h3>
-  <p>Im Abschnitt <a href="#kap-hsadmin-syntax">Syntax</a> wurde die
-  Option <code>-f</code> erwähnt, die gesetzt werden kann, um HSAdmin
-  eine Datei zu übergeben, in der sich die Befehle befinden. Die Option
-  ermöglicht es, ohne großen Aufwand Skriptdateien zu pflegen, mit denen
-  wiederkehrende Aufgaben bequem erledigt werden können. Dieses Kapitel
-  zeigt, wie Sie die Anlage einer neuen Wordpress-Website mit Hilfe
-  eines solchen Skripts vereinfachen können.</p>
-  <p>Bevor Sie die eigentliche Wordpress-Software installiert, müssen
-  mehrere Schritte auf der Hostsharing-Plattform erledigt sein.</p>
-  <ol type="1">
-  <li>Es existiert ein Domain-Admin bzw. es wird ein neuer Domain-Admin
-  angelegt.</li>
-  <li>Es wird eine Domain erstellt und dem Domain-Admin zugewiesen.</li>
-  <li>Es wird ein Datenbank-Nutzer angelegt.</li>
-  <li>Es wird eine Datenbank angelegt und dem Datenbank-Nutzer
-  zugewiesen.</li>
-  </ol>
-  <p>Mit der folgenden Skript-Datei kann man diese vier Schritte mit
-  einem Befehl ausführen.</p>
-  <div class="sourceCode" id="cb63"><pre
-  class="sourceCode bash"><code class="sourceCode bash"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a><span class="ex">user.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">&#39;xyz00-domains&#39;</span><span class="op">,</span><span class="dt">comment:</span><span class="st">&#39;Domain-Admin&#39;</span><span class="op">,</span><span class="dt">password:</span><span class="st">&#39;!1?2-3aBc&#39;</span><span class="op">,</span><span class="dt">shell:</span><span class="st">&#39;/bin/bash&#39;</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span>
-<span id="cb63-2"><a href="#cb63-2" aria-hidden="true" tabindex="-1"></a><span class="ex">domain.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">&#39;beispiel.de&#39;</span><span class="op">,</span><span class="dt">user:</span><span class="st">&#39;xyz00-domains&#39;</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span>
-<span id="cb63-3"><a href="#cb63-3" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqluser.add</span>  <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">&#39;xyz00_owner&#39;</span><span class="op">,</span><span class="dt">password:</span><span class="st">&#39;?2?3-4cVg&#39;</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span>
-<span id="cb63-4"><a href="#cb63-4" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqldb.add</span> <span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:</span><span class="st">&#39;xyz00_abc&#39;</span><span class="op">,</span><span class="dt">owner:</span><span class="st">&#39;xyz00_owner&#39;</span><span class="dt">}</span><span class="ex">}</span><span class="kw">)</span></span></code></pre></div>
-  <p>In Zeile 1 wird der Domain-Admin erzeugt, in Zeile 2 die Domain
-  <code>beispiel.de</code> angelegt, in Zeile 3 der Datenbank-Nutzer und
-  in Zeile 4 die Datenbank. Es ist möglich, die Datei lesbarer zu
-  formatieren, indem man jedem Key-Value-Paar eine eigene Zeile
-  zuweist.</p>
-  <div class="sourceCode" id="cb64"><pre
-  class="sourceCode bash"><code class="sourceCode bash"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="ex">user.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
-<span id="cb64-2"><a href="#cb64-2" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">&#39;xyz00-domains&#39;</span><span class="ex">,</span></span>
-<span id="cb64-3"><a href="#cb64-3" aria-hidden="true" tabindex="-1"></a><span class="ex">comment:</span><span class="st">&#39;Domain-Admin&#39;</span><span class="ex">,</span></span>
-<span id="cb64-4"><a href="#cb64-4" aria-hidden="true" tabindex="-1"></a><span class="ex">password:</span><span class="st">&#39;!1?2-3aBc&#39;</span><span class="ex">,</span></span>
-<span id="cb64-5"><a href="#cb64-5" aria-hidden="true" tabindex="-1"></a><span class="ex">shell:</span><span class="st">&#39;/bin/bash&#39;</span></span>
-<span id="cb64-6"><a href="#cb64-6" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span>
-<span id="cb64-7"><a href="#cb64-7" aria-hidden="true" tabindex="-1"></a><span class="ex">domain.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
-<span id="cb64-8"><a href="#cb64-8" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">&#39;beispiel.de&#39;</span><span class="ex">,</span></span>
-<span id="cb64-9"><a href="#cb64-9" aria-hidden="true" tabindex="-1"></a><span class="ex">user:</span><span class="st">&#39;xyz00-domains&#39;</span></span>
-<span id="cb64-10"><a href="#cb64-10" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span>
-<span id="cb64-11"><a href="#cb64-11" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqluser.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
-<span id="cb64-12"><a href="#cb64-12" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">&#39;xyz00_owner&#39;</span><span class="ex">,</span></span>
-<span id="cb64-13"><a href="#cb64-13" aria-hidden="true" tabindex="-1"></a><span class="ex">password:</span><span class="st">&#39;?2?3-4cVg&#39;</span></span>
-<span id="cb64-14"><a href="#cb64-14" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span>
-<span id="cb64-15"><a href="#cb64-15" aria-hidden="true" tabindex="-1"></a><span class="ex">mysqldb.add</span> <span class="er">(</span><span class="ex">{set:{</span></span>
-<span id="cb64-16"><a href="#cb64-16" aria-hidden="true" tabindex="-1"></a><span class="ex">name:</span><span class="st">&#39;xyz00_abc&#39;</span><span class="ex">,</span></span>
-<span id="cb64-17"><a href="#cb64-17" aria-hidden="true" tabindex="-1"></a><span class="ex">owner:</span><span class="st">&#39;xyz00_owner&#39;</span></span>
-<span id="cb64-18"><a href="#cb64-18" aria-hidden="true" tabindex="-1"></a><span class="er">}}</span><span class="kw">)</span></span></code></pre></div>
-  <p>Wenn Sie die Datei unter dem Namen <code>befehlsskript.txt</code>
-  im Verzeichnis des <code>Paket-Admin</code> speichern, können Sie alle
-  Befehle mit einem HSAdmin-Aufruf abarbeiten:</p>
-  <pre class="console"><code>xyz00@h50:~$ hsscript -f befehlsskript.txt</code></pre>
-  <p>Wenn Sie beispielsweise häufig Wordpress-Websites installieren,
-  können Sie für jede Website eine solche Befehlsdatei anlegen und unter
-  einem sinnvollen Namen (z.B. <code>wordpress-beispiel_de.txt</code>)
-  abspeichern.</p>
-  <div class="admonition">
-  <p>Beachten Sie die richtige Reihenfolge</p>
-  <p>Bei der Anlage von Benutzern, Datenbanken und Domains ist die im
-  Beispiel gezeigt Reihenfolge einzuhalten. Um eine Domain anzulegen,
-  muss der Domain-Admin bereits existieren. Eine Datenbank kann nur
-  erzeugt werden, wenn der Datenbank-Nutzer bereits angelegt ist.</p>
-  <p>Beim Löschen müssen Sie die Reihenfolge umkehren: Datenbank
-  löschen, Datenbank-Nutzer löschen, Domain löschen, Domain-Admin
-  löschen.</p>
-  </div>
-  <p>Noch bequemer ist es, die notwendigen Benutzer, Domains und
-  Datenbanken mit Hilfe eines ausführlicheren JS-Skripts oder über die
-  Python-API anzulegen.</p>
-  <section id="hsadmin-mit-javascript-ansprechen" class="level4">
-  <h4>HSAdmin mit Javascript ansprechen</h4>
-  <p>Im Folgenden zeigen wir zwei JS-Skripts, die in der Regel im
-  Verzeichnis des Paket-Admin mit dessen Benutzerrechten aufgerufen
-  werden. Mit dem ersten Skript erstellen wir eine Domain und weisen ihr
-  einen eigenen Domain-Admin zu, dessen Name aus dem Namen der Domain
-  abgeleitet wird. Mit dem zweiten Skript erzeugen wir eine Datenbank
-  und einen Datenbank-Nutzer, sodass wir unter der gewünschten Domain
-  zum Beispiel eine PHP-Anwendung wie Wordpress einrichten können.</p>
-  <section id="js-skript-zur-anlage-einer-domain" class="level5">
-  <h5>JS-Skript zur Anlage einer Domain</h5>
-  <p>Ein Skript, um eine Domain mit einem gesonderten Domain-Admin
-  anzulegen, könnte so aussehen:</p>
-  <div class="sourceCode" id="cb66"><pre
-  class="sourceCode bash"><code class="sourceCode bash"><span id="cb66-1"><a href="#cb66-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/local/bin/hsscript -f</span></span>
-<span id="cb66-2"><a href="#cb66-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb66-3"><a href="#cb66-3" aria-hidden="true" tabindex="-1"></a><span class="ex">createDomainAndDomainAdmin</span><span class="er">(</span><span class="ex">arguments</span><span class="kw">);</span></span>
-<span id="cb66-4"><a href="#cb66-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb66-5"><a href="#cb66-5" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> pwGen()</span> <span class="kw">{</span></span>
-<span id="cb66-6"><a href="#cb66-6" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> chars = <span class="st">&quot;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&amp;+!?=&quot;</span><span class="kw">;</span></span>
-<span id="cb66-7"><a href="#cb66-7" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> pwLength = 12<span class="kw">;</span></span>
-<span id="cb66-8"><a href="#cb66-8" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> randomstring = <span class="st">&#39;&#39;</span><span class="kw">;</span></span>
-<span id="cb66-9"><a href="#cb66-9" aria-hidden="true" tabindex="-1"></a>    <span class="cf">for</span> <span class="kw">(</span><span class="ex">var</span> i=0<span class="kw">;</span> <span class="ex">i</span><span class="op">&lt;</span>pwLength<span class="kw">;</span> <span class="ex">i++</span><span class="kw">)</span> <span class="kw">{</span></span>
-<span id="cb66-10"><a href="#cb66-10" aria-hidden="true" tabindex="-1"></a>        <span class="ex">var</span> rnum = Math.floor<span class="er">(</span><span class="fu">Math.random()</span> <span class="ex">*</span> chars.length<span class="kw">);</span></span>
-<span id="cb66-11"><a href="#cb66-11" aria-hidden="true" tabindex="-1"></a>        <span class="ex">randomstring</span> += chars.substring<span class="er">(</span><span class="ex">rnum,rnum+1</span><span class="kw">);</span></span>
-<span id="cb66-12"><a href="#cb66-12" aria-hidden="true" tabindex="-1"></a>    <span class="kw">}</span></span>
-<span id="cb66-13"><a href="#cb66-13" aria-hidden="true" tabindex="-1"></a>    <span class="cf">return</span> <span class="ex">randomstring</span><span class="kw">;</span></span>
-<span id="cb66-14"><a href="#cb66-14" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span>
-<span id="cb66-15"><a href="#cb66-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb66-16"><a href="#cb66-16" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> createDomainAndDomainAdmin</span><span class="kw">(</span><span class="ex">args</span><span class="kw">)</span> <span class="kw">{</span></span>
-<span id="cb66-17"><a href="#cb66-17" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> domainName = args[0]<span class="kw">;</span></span>
-<span id="cb66-18"><a href="#cb66-18" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> userName = <span class="st">&#39;xyz00-&#39;</span> + args[0].replace<span class="er">(</span><span class="st">&quot;-&quot;</span><span class="ex">,</span><span class="st">&quot;_&quot;</span><span class="kw">);</span></span>
-<span id="cb66-19"><a href="#cb66-19" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> randomPassword = pwGen<span class="er">(</span><span class="kw">);</span></span>
-<span id="cb66-20"><a href="#cb66-20" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> createdUser = user.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:userName</span><span class="op">,</span><span class="dt">password:randomPassword</span><span class="op">,</span><span class="dt">shell:</span><span class="st">&#39;/bin/bash&#39;</span><span class="dt">}</span><span class="ex">}</span><span class="kw">);</span></span>
-<span id="cb66-21"><a href="#cb66-21" aria-hidden="true" tabindex="-1"></a>    <span class="ex">var</span> createdDomain = domain.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:domainName</span><span class="op">,</span><span class="dt">user:userName}</span><span class="ex">}</span><span class="kw">);</span></span>
-<span id="cb66-22"><a href="#cb66-22" aria-hidden="true" tabindex="-1"></a>    <span class="ex">print</span><span class="er">(</span><span class="st">&quot;created domain &quot;</span> + createdDomain[0].name + <span class="st">&quot; with domainadmin &quot;</span> + createdUser[0].name + <span class="st">&quot; and password &quot;</span> + randomPassword<span class="kw">);</span></span>
-<span id="cb66-23"><a href="#cb66-23" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span></code></pre></div>
-  <p>Die Funktion <code>pwGen()</code> erzeugt ein achtstelliges
-  Passwort aus einer Reihe von vorgegebenen Zeichen. Empfehlenswert sind
-  längere Passworte. Die Funktion
-  <code>createDomainAndDomainAdmin(args)</code> erzeugt die Domain und
-  den Domain-Admin. Der Namen des Domain-Admin ergibt sich aus dem Namen
-  der Domain. Bei einer Domain, die einen Bindestrich enthält, muss
-  dieser durch einen Unterstrich ersetzt werden, da Benutzernamen nur
-  einen Bindestrich enthalten dürfen.</p>
-  <p>Das Skript wird im Benutzerverzeichnis des Paket-Admin gespeichert
-  und ausführbar gemacht:</p>
-  <pre class="console"><code>xyz00@h50:~$ chmod u+x createdomainandadmin.js</code></pre>
-  <p>Anschließend können Sie es folgendermaßen aufrufen:</p>
-  <pre class="console"><code>xyz00@h50:~$ ./createdomainandadmin.js my-domain.de
-created domain my-domain.de with domainadmin xyz00-my_domain.de and password slo%haY=</code></pre>
-  <p>Wenn Sie alle Domains mit einem einzigen Domain-Admin verwalten,
-  können Sie den Benutzernamen des Domain-Admin hart kodieren.</p>
-  <div class="sourceCode" id="cb69"><pre
-  class="sourceCode bash"><code class="sourceCode bash"><span id="cb69-1"><a href="#cb69-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/local/bin/hsscript -f</span></span>
-<span id="cb69-2"><a href="#cb69-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb69-3"><a href="#cb69-3" aria-hidden="true" tabindex="-1"></a><span class="ex">createDomainAndDomainAdmin</span><span class="er">(</span><span class="ex">arguments</span><span class="kw">);</span></span>
-<span id="cb69-4"><a href="#cb69-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb69-5"><a href="#cb69-5" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> pwGen()</span> <span class="kw">{</span></span>
-<span id="cb69-6"><a href="#cb69-6" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> chars = <span class="st">&quot;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&amp;+!?=&quot;</span><span class="kw">;</span></span>
-<span id="cb69-7"><a href="#cb69-7" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> string_length = 12<span class="kw">;</span></span>
-<span id="cb69-8"><a href="#cb69-8" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> randomstring = <span class="st">&#39;&#39;</span><span class="kw">;</span></span>
-<span id="cb69-9"><a href="#cb69-9" aria-hidden="true" tabindex="-1"></a>       <span class="cf">for</span> <span class="kw">(</span><span class="ex">var</span> i=0<span class="kw">;</span> <span class="ex">i</span><span class="op">&lt;</span>string_length<span class="kw">;</span> <span class="ex">i++</span><span class="kw">)</span> <span class="kw">{</span></span>
-<span id="cb69-10"><a href="#cb69-10" aria-hidden="true" tabindex="-1"></a>                  <span class="ex">var</span> rnum = Math.floor<span class="er">(</span><span class="fu">Math.random()</span> <span class="ex">*</span> chars.length<span class="kw">);</span></span>
-<span id="cb69-11"><a href="#cb69-11" aria-hidden="true" tabindex="-1"></a>                  <span class="ex">randomstring</span> += chars.substring<span class="er">(</span><span class="ex">rnum,rnum+1</span><span class="kw">);</span></span>
-<span id="cb69-12"><a href="#cb69-12" aria-hidden="true" tabindex="-1"></a>              <span class="kw">}</span></span>
-<span id="cb69-13"><a href="#cb69-13" aria-hidden="true" tabindex="-1"></a>       <span class="cf">return</span> <span class="ex">randomstring</span><span class="kw">;</span></span>
-<span id="cb69-14"><a href="#cb69-14" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span>
-<span id="cb69-15"><a href="#cb69-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb69-16"><a href="#cb69-16" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> createDomainAndDomainAdmin</span><span class="kw">(</span><span class="ex">args</span><span class="kw">)</span> <span class="kw">{</span></span>
-<span id="cb69-17"><a href="#cb69-17" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> domainName = args[0]<span class="kw">;</span></span>
-<span id="cb69-18"><a href="#cb69-18" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> userName = <span class="st">&#39;xyz00-doms&#39;</span><span class="kw">;</span></span>
-<span id="cb69-19"><a href="#cb69-19" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> randomPassword = pwGen<span class="er">(</span><span class="kw">);</span></span>
-<span id="cb69-20"><a href="#cb69-20" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> createdUser = user.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:userName</span><span class="op">,</span><span class="dt">password:randomPassword</span><span class="op">,</span><span class="dt">shell:</span><span class="st">&#39;/bin/bash&#39;</span><span class="dt">}</span><span class="ex">}</span><span class="kw">);</span></span>
-<span id="cb69-21"><a href="#cb69-21" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> createdDomain = domain.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:domainName</span><span class="op">,</span><span class="dt">user:userName}</span><span class="ex">}</span><span class="kw">);</span></span>
-<span id="cb69-22"><a href="#cb69-22" aria-hidden="true" tabindex="-1"></a>       <span class="ex">print</span><span class="er">(</span><span class="st">&quot;created domain &quot;</span> + createdDomain[0].name + <span class="st">&quot; with domainadmin &quot;</span> + createdUser[0].name + <span class="st">&quot; and password &quot;</span> + randomPassword<span class="kw">);</span></span></code></pre></div>
-  </section>
-  <section id="js-skript-zur-anlage-einer-datenbank" class="level5">
-  <h5>JS-Skript zur Anlage einer Datenbank</h5>
-  <p>Das Skript zur Anlage einer Datenbank und eines Datenbank-Nutzers
-  sieht ähnlich aus.</p>
-  <div class="sourceCode" id="cb70"><pre
-  class="sourceCode bash"><code class="sourceCode bash"><span id="cb70-1"><a href="#cb70-1" aria-hidden="true" tabindex="-1"></a><span class="co">#!/usr/local/bin/hsscript -f</span></span>
-<span id="cb70-2"><a href="#cb70-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb70-3"><a href="#cb70-3" aria-hidden="true" tabindex="-1"></a><span class="ex">createMySQLUserAndDB</span><span class="er">(</span><span class="ex">arguments</span><span class="kw">);</span></span>
-<span id="cb70-4"><a href="#cb70-4" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb70-5"><a href="#cb70-5" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> pwGen()</span> <span class="kw">{</span></span>
-<span id="cb70-6"><a href="#cb70-6" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> chars = <span class="st">&quot;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&amp;+!?=&quot;</span><span class="kw">;</span></span>
-<span id="cb70-7"><a href="#cb70-7" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> pwLength = 18<span class="kw">;</span></span>
-<span id="cb70-8"><a href="#cb70-8" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> randomstring = <span class="st">&#39;&#39;</span><span class="kw">;</span></span>
-<span id="cb70-9"><a href="#cb70-9" aria-hidden="true" tabindex="-1"></a>   <span class="cf">for</span> <span class="kw">(</span><span class="ex">var</span> i=0<span class="kw">;</span> <span class="ex">i</span><span class="op">&lt;</span>pwLength<span class="kw">;</span> <span class="ex">i++</span><span class="kw">)</span> <span class="kw">{</span></span>
-<span id="cb70-10"><a href="#cb70-10" aria-hidden="true" tabindex="-1"></a>       <span class="ex">var</span> rnum = Math.floor<span class="er">(</span><span class="fu">Math.random()</span> <span class="ex">*</span> chars.length<span class="kw">);</span></span>
-<span id="cb70-11"><a href="#cb70-11" aria-hidden="true" tabindex="-1"></a>       <span class="ex">randomstring</span> += chars.substring<span class="er">(</span><span class="ex">rnum,rnum+1</span><span class="kw">);</span></span>
-<span id="cb70-12"><a href="#cb70-12" aria-hidden="true" tabindex="-1"></a>   <span class="kw">}</span></span>
-<span id="cb70-13"><a href="#cb70-13" aria-hidden="true" tabindex="-1"></a>   <span class="cf">return</span> <span class="ex">randomstring</span><span class="kw">;</span></span>
-<span id="cb70-14"><a href="#cb70-14" aria-hidden="true" tabindex="-1"></a><span class="kw">}</span></span>
-<span id="cb70-15"><a href="#cb70-15" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb70-16"><a href="#cb70-16" aria-hidden="true" tabindex="-1"></a><span class="kw">function</span><span class="fu"> createMySQLUserAndDB</span><span class="kw">(</span><span class="ex">args</span><span class="kw">)</span> <span class="kw">{</span></span>
-<span id="cb70-17"><a href="#cb70-17" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> userName = <span class="st">&#39;xyz00_&#39;</span> + args[0]<span class="kw">;</span></span>
-<span id="cb70-18"><a href="#cb70-18" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> dbName = userName<span class="kw">;</span></span>
-<span id="cb70-19"><a href="#cb70-19" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> randomPassword = pwGen<span class="er">(</span><span class="kw">);</span></span>
-<span id="cb70-20"><a href="#cb70-20" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> createdUser = mysqluser.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:userName</span><span class="op">,</span><span class="dt">password:randomPassword}</span><span class="ex">}</span><span class="kw">);</span></span>
-<span id="cb70-21"><a href="#cb70-21" aria-hidden="true" tabindex="-1"></a>   <span class="ex">var</span> createdDatabase = mysqldb.add<span class="er">(</span><span class="ex">{set:</span><span class="dt">{name:dbName</span><span class="op">,</span><span class="dt">owner:userName}</span><span class="ex">}</span><span class="kw">);</span></span>
-<span id="cb70-22"><a href="#cb70-22" aria-hidden="true" tabindex="-1"></a>   <span class="ex">print</span><span class="er">(</span><span class="st">&quot;created user &quot;</span> + createdUser[0].name + <span class="st">&quot; and database &quot;</span> + createdDatabase[0].name + <span class="st">&quot; with password &quot;</span> + randomPassword<span class="kw">);</span></span></code></pre></div>
-  <p>Die Funktion <code>createMySQLUserAndDB(args)</code> erzeugt den
-  Datenbank-Nutzer und die Datenbank. Da sich Datenbank und
-  Datenbank-Nutzer nicht in die Quere kommen, haben sie der Einfachheit
-  halber den gleichen Namen.</p>
-  <p>Beim Aufruf des Skripts muss eine Zeichenkette übergeben werden,
-  die Bestandteil der Namen von Datenbank und Datenbank-Nutzer wird.</p>
-  <pre class="console"><code>xyz00@h50:~$ ./createuseranddb.js my_domain_wordpress
-created user and database xyz00_my_domain_wordpress with password 4fo=s3xY</code></pre>
-  <div class="attention">
-  <p>Merken Sie sich die Passworte, da Sie diese später benötigen. Bei
-  einer Datenbank-Anwendungen müssen Sie bei der Konfiguration den
-  Datenbank-Benutzer und sein Passwort angeben.</p>
-  </div>
-  </section>
-  </section>
-  <section id="kap-python-api" class="level4">
-  <h4>Nutzung der Python-API</h4>
-  <p>Sie können HSAdmin auch remote über die Python-API des Programms
-  ansprechen. Das ermöglicht es Ihnen von einem entfernten Rechner aus
-  HSAdmin zu bedienen. Um mit der Python-API zu arbeiten müssen Sie
-  zunächst die Python-Bindings für HSAdmin installieren.</p>
-  <section id="installation-von-hs.admin.api" class="level5">
-  <h5>Installation von hs.admin.api</h5>
-  <p>Wir installieren die Python-Bindings in einer virtuellen
-  Python-Umgebung, sodass wir diese zunächst einrichten und
-  aktivieren.</p>
-  <pre class="console"><code>$ python3 -m venv /hsadmin
-$ . /hsadmin/bin/activate</code></pre>
-  <!-- todo: pipenv? -->
-  <p>Anschließend klonen wir die Python-Bindings und installieren
-  sie.</p>
-  <pre class="console"><code>$ git clone https://dev.hostsharing.net//r/ansible/hs.admin.api.git
-$ cd hs.admin.api
-$ python setup.py install </code></pre>
-  <p>Nun steht uns das Modul mit dem Python-Bindings in der virtuellen
-  Umgebung zur Verfügung, sodass wir es in einem Skript importieren
-  können.</p>
-  </section>
-  <section id="python-skript" class="level5">
-  <h5>Python-Skript</h5>
-  <p>Um die API in einem Skript nutzen zu können, müssen wir mit
-  folgendem Code ein API-Objekt erzeugen.</p>
-  <div class="sourceCode" id="cb74"><pre
-  class="sourceCode python"><code class="sourceCode python"><span id="cb74-1"><a href="#cb74-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> hs.admin.api <span class="im">import</span> API</span>
-<span id="cb74-2"><a href="#cb74-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb74-3"><a href="#cb74-3" aria-hidden="true" tabindex="-1"></a>api <span class="op">=</span> API(cas<span class="op">=</span><span class="bu">dict</span>(</span>
-<span id="cb74-4"><a href="#cb74-4" aria-hidden="true" tabindex="-1"></a>    uri<span class="op">=</span><span class="st">&#39;https://login.hostsharing.net/cas/v1/tickets&#39;</span>,</span>
-<span id="cb74-5"><a href="#cb74-5" aria-hidden="true" tabindex="-1"></a>    service<span class="op">=</span><span class="st">&#39;https://config.hostsharing.net:443/hsar/backend&#39;</span>),</span>
-<span id="cb74-6"><a href="#cb74-6" aria-hidden="true" tabindex="-1"></a>    credentials<span class="op">=</span><span class="bu">dict</span>(username<span class="op">=</span><span class="st">&#39;xyz00&#39;</span>, password<span class="op">=</span><span class="st">&#39;sehr-geheim&#39;</span>),</span>
-<span id="cb74-7"><a href="#cb74-7" aria-hidden="true" tabindex="-1"></a>    backends<span class="op">=</span>[</span>
-<span id="cb74-8"><a href="#cb74-8" aria-hidden="true" tabindex="-1"></a>        <span class="st">&#39;https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin&#39;</span>,</span>
-<span id="cb74-9"><a href="#cb74-9" aria-hidden="true" tabindex="-1"></a>        <span class="st">&#39;https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin&#39;</span>])</span>
-<span id="cb74-10"><a href="#cb74-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb74-11"><a href="#cb74-11" aria-hidden="true" tabindex="-1"></a>api.user.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: <span class="st">&#39;xyz00-domain.de&#39;</span>, <span class="st">&#39;password&#39;</span>: <span class="st">&#39;geheim&#39;</span>, <span class="st">&#39;shell&#39;</span>: <span class="st">&#39;/bin/bash&#39;</span>})</span>
-<span id="cb74-12"><a href="#cb74-12" aria-hidden="true" tabindex="-1"></a>api.domain.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: <span class="st">&#39;domain.de&#39;</span>, <span class="st">&#39;user&#39;</span>: <span class="st">&#39;xyz00-domain.de&#39;</span>})</span></code></pre></div>
-  <p>Nun ist es möglich, mit der üblichen Syntax HSAdmin im Skript
-  anzusprechen.</p>
-  <p>Mit diesen beiden Befehlen legen wir beispielsweise einen
-  Domain-Admin und eine neue Domain an.</p>
-  <div class="sourceCode" id="cb75"><pre
-  class="sourceCode python"><code class="sourceCode python"><span id="cb75-1"><a href="#cb75-1" aria-hidden="true" tabindex="-1"></a>api.user.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: <span class="st">&#39;xyz00-domain.de&#39;</span>, <span class="st">&#39;password&#39;</span>: <span class="st">&#39;geheim&#39;</span>, <span class="st">&#39;shell&#39;</span>: <span class="st">&#39;/bin/bash&#39;</span>})</span>
-<span id="cb75-2"><a href="#cb75-2" aria-hidden="true" tabindex="-1"></a>api.domain.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: <span class="st">&#39;domain.de&#39;</span>, <span class="st">&#39;user&#39;</span>: <span class="st">&#39;xyz00-domain.de&#39;</span>})</span></code></pre></div>
-  <p>Eine Datenbank lässt sich folgendermaßen anlegen.</p>
-  <div class="sourceCode" id="cb76"><pre
-  class="sourceCode python"><code class="sourceCode python"><span id="cb76-1"><a href="#cb76-1" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> hs.admin.api <span class="im">import</span> API</span>
-<span id="cb76-2"><a href="#cb76-2" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb76-3"><a href="#cb76-3" aria-hidden="true" tabindex="-1"></a>api <span class="op">=</span> API(cas<span class="op">=</span><span class="bu">dict</span>(</span>
-<span id="cb76-4"><a href="#cb76-4" aria-hidden="true" tabindex="-1"></a>    uri<span class="op">=</span><span class="st">&#39;https://login.hostsharing.net/cas/v1/tickets&#39;</span>,</span>
-<span id="cb76-5"><a href="#cb76-5" aria-hidden="true" tabindex="-1"></a>    service<span class="op">=</span><span class="st">&#39;https://config.hostsharing.net:443/hsar/backend&#39;</span>),</span>
-<span id="cb76-6"><a href="#cb76-6" aria-hidden="true" tabindex="-1"></a>    credentials<span class="op">=</span><span class="bu">dict</span>(username<span class="op">=</span><span class="st">&#39;xyz00&#39;</span>, password<span class="op">=</span><span class="st">&#39;sehr-geheim&#39;</span>),</span>
-<span id="cb76-7"><a href="#cb76-7" aria-hidden="true" tabindex="-1"></a>    backends<span class="op">=</span>[</span>
-<span id="cb76-8"><a href="#cb76-8" aria-hidden="true" tabindex="-1"></a>        <span class="st">&#39;https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin&#39;</span>,</span>
-<span id="cb76-9"><a href="#cb76-9" aria-hidden="true" tabindex="-1"></a>        <span class="st">&#39;https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin&#39;</span>])</span>
-<span id="cb76-10"><a href="#cb76-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb76-11"><a href="#cb76-11" aria-hidden="true" tabindex="-1"></a>api.mysqluser.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: <span class="st">&#39;xyz00_domain_de&#39;</span>, <span class="st">&#39;password&#39;</span>: <span class="st">&#39;geheim&#39;</span>})</span>
-<span id="cb76-12"><a href="#cb76-12" aria-hidden="true" tabindex="-1"></a>api.mysqldb.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: <span class="st">&#39;xyz00_domain_de&#39;</span>, <span class="st">&#39;owner&#39;</span>: <span class="st">&#39;xyz00_domain_de&#39;</span>})</span></code></pre></div>
-  <p>Nun wollen wir diese Befehle in ein Skript einbauen, das noch
-  einige andere nützliche Dinge für uns erledigt. Reseller und
-  Webmaster, die viele Anwendungen betreuen, buchen häufig mehrere
-  Pakete bei Hostsharing, sodass sie gerne ein Skript hätten, dem sie
-  auch das Kürzel für das Paket übergeben können, in dem sie eine Domain
-  mit Datenbank einrichten möchten. Außerdem wäre es hilfreich, wenn das
-  Skript dafür sorgt, dass Benutzernamen und Datenbankenname immer nach
-  einem einheitlichen Schema erzeugt werden, sodass die Orientierung
-  leichter fällt. In unserem Beispielskript übergeben wir daher dem
-  Skript drei Argumente:</p>
-  <ol type="1">
-  <li>das Kürzel für das Paket</li>
-  <li>den Domainnamen</li>
-  <li>eine Projekt-ID</li>
-  </ol>
-  <p>Die Projekt-ID darf nicht mehr als 10 Zeichen umfassen, da sie
-  zusammen mit dem fünfstelligen Paketkürzel in den Namen für Datenbank
-  und Datenbank-Nutzer verwendet wird. Diese dürfen aber nicht länger
-  als 16 Zeichen sein. Als Schema für eine Projekt-ID kommt also
-  beispielsweise eine Kombination aus einer Kundennummer und einer
-  Abkürzung in Frage. Wir verwenden in unserem Beispiel dafür eine
-  dreistellige Kundennummer und die Abkürzung <code>wp</code> für
-  Wordpress. Die Elemente trennen wir mit dem Unterstrich, da nur dieser
-  als Namensbestandteil erlaubt ist.</p>
-  <p>Wenn wir für den Kunden mit der Kundennummer 23 im Paket
-  <code>xyz00</code> eine Domain für einen Wordpress-Blog einrichten
-  möchten, lautet der Aufruf des Skripts folgendermaßen:</p>
-  <pre class="console"><code>$ python createall.py xyz00 hs-example.de 023_wp</code></pre>
-  <p>Der Code des Skripts sieht so aus:</p>
-  <div class="sourceCode" id="cb78"><pre
-  class="sourceCode python"><code class="sourceCode python"><span id="cb78-1"><a href="#cb78-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> random</span>
-<span id="cb78-2"><a href="#cb78-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> string</span>
-<span id="cb78-3"><a href="#cb78-3" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> sys</span>
-<span id="cb78-4"><a href="#cb78-4" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> hs.admin.api <span class="im">import</span> API</span>
-<span id="cb78-5"><a href="#cb78-5" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> subprocess <span class="im">import</span> check_output</span>
-<span id="cb78-6"><a href="#cb78-6" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-7"><a href="#cb78-7" aria-hidden="true" tabindex="-1"></a>paketadmin <span class="op">=</span> sys.argv[<span class="dv">1</span>]</span>
-<span id="cb78-8"><a href="#cb78-8" aria-hidden="true" tabindex="-1"></a>domainname <span class="op">=</span> sys.argv[<span class="dv">2</span>]</span>
-<span id="cb78-9"><a href="#cb78-9" aria-hidden="true" tabindex="-1"></a>projektid <span class="op">=</span> sys.argv[<span class="dv">3</span>]</span>
-<span id="cb78-10"><a href="#cb78-10" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-11"><a href="#cb78-11" aria-hidden="true" tabindex="-1"></a>pw <span class="op">=</span> check_output([<span class="st">&quot;pass&quot;</span>, <span class="st">&quot;hostsharing/&quot;</span><span class="op">+</span>paketadmin]).decode(<span class="st">&quot;utf-8&quot;</span>).strip(<span class="st">&quot;</span><span class="ch">\n</span><span class="st">&quot;</span>)</span>
-<span id="cb78-12"><a href="#cb78-12" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-13"><a href="#cb78-13" aria-hidden="true" tabindex="-1"></a>api <span class="op">=</span> API(cas<span class="op">=</span><span class="bu">dict</span>(</span>
-<span id="cb78-14"><a href="#cb78-14" aria-hidden="true" tabindex="-1"></a>    uri<span class="op">=</span><span class="st">&#39;https://login.hostsharing.net/cas/v1/tickets&#39;</span>,</span>
-<span id="cb78-15"><a href="#cb78-15" aria-hidden="true" tabindex="-1"></a>    service<span class="op">=</span><span class="st">&#39;https://config.hostsharing.net:443/hsar/backend&#39;</span>),</span>
-<span id="cb78-16"><a href="#cb78-16" aria-hidden="true" tabindex="-1"></a>    credentials<span class="op">=</span><span class="bu">dict</span>(username<span class="op">=</span>paketadmin, password<span class="op">=</span>pw),</span>
-<span id="cb78-17"><a href="#cb78-17" aria-hidden="true" tabindex="-1"></a>    backends<span class="op">=</span>[</span>
-<span id="cb78-18"><a href="#cb78-18" aria-hidden="true" tabindex="-1"></a>        <span class="st">&#39;https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin&#39;</span>,</span>
-<span id="cb78-19"><a href="#cb78-19" aria-hidden="true" tabindex="-1"></a>        <span class="st">&#39;https://config2.hostsharing.net:443/hsar/xmlrpc/hsadmin&#39;</span>])</span>
-<span id="cb78-20"><a href="#cb78-20" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-21"><a href="#cb78-21" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> pwGen(stringLength<span class="op">=</span><span class="dv">12</span>):</span>
-<span id="cb78-22"><a href="#cb78-22" aria-hidden="true" tabindex="-1"></a>    <span class="co">&quot;&quot;&quot;Function to generate a random password &quot;&quot;&quot;</span></span>
-<span id="cb78-23"><a href="#cb78-23" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-24"><a href="#cb78-24" aria-hidden="true" tabindex="-1"></a>    password_characters <span class="op">=</span> string.ascii_letters <span class="op">+</span> string.digits</span>
-<span id="cb78-25"><a href="#cb78-25" aria-hidden="true" tabindex="-1"></a>    <span class="cf">return</span> <span class="st">&#39;&#39;</span>.join(random.choice(password_characters) <span class="cf">for</span> i <span class="kw">in</span> <span class="bu">range</span>(stringLength))</span>
-<span id="cb78-26"><a href="#cb78-26" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-27"><a href="#cb78-27" aria-hidden="true" tabindex="-1"></a>pw_dadmin <span class="op">=</span> pwGen()</span>
-<span id="cb78-28"><a href="#cb78-28" aria-hidden="true" tabindex="-1"></a>pw_dbuser <span class="op">=</span> pwGen()</span>
-<span id="cb78-29"><a href="#cb78-29" aria-hidden="true" tabindex="-1"></a>dadmin <span class="op">=</span> paketadmin<span class="op">+</span><span class="st">&#39;-&#39;</span><span class="op">+</span>domainname.replace(<span class="st">&quot;-&quot;</span>, <span class="st">&quot;_&quot;</span>)</span>
-<span id="cb78-30"><a href="#cb78-30" aria-hidden="true" tabindex="-1"></a>dbuser <span class="op">=</span> paketadmin<span class="op">+</span><span class="st">&#39;_&#39;</span><span class="op">+</span>projektid</span>
-<span id="cb78-31"><a href="#cb78-31" aria-hidden="true" tabindex="-1"></a>dbname <span class="op">=</span> paketadmin<span class="op">+</span><span class="st">&#39;_&#39;</span><span class="op">+</span>projektid</span>
-<span id="cb78-32"><a href="#cb78-32" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-33"><a href="#cb78-33" aria-hidden="true" tabindex="-1"></a>api.user.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: dadmin, <span class="st">&#39;password&#39;</span>: pw_dadmin, <span class="st">&#39;shell&#39;</span>: <span class="st">&#39;/bin/bash&#39;</span>})</span>
-<span id="cb78-34"><a href="#cb78-34" aria-hidden="true" tabindex="-1"></a>api.domain.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: domainname, <span class="st">&#39;user&#39;</span>: dadmin})</span>
-<span id="cb78-35"><a href="#cb78-35" aria-hidden="true" tabindex="-1"></a>api.mysqluser.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: dbuser, <span class="st">&#39;password&#39;</span>: pw_dbuser})</span>
-<span id="cb78-36"><a href="#cb78-36" aria-hidden="true" tabindex="-1"></a>api.mysqldb.add(<span class="bu">set</span><span class="op">=</span>{<span class="st">&#39;name&#39;</span>: dbname, <span class="st">&#39;owner&#39;</span>: dbuser})</span>
-<span id="cb78-37"><a href="#cb78-37" aria-hidden="true" tabindex="-1"></a></span>
-<span id="cb78-38"><a href="#cb78-38" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">&quot;Domainname:&quot;</span> <span class="op">+</span>domainname)</span>
-<span id="cb78-39"><a href="#cb78-39" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">&quot;Domain-Admin: &quot;</span> <span class="op">+</span> dadmin <span class="op">+</span> <span class="st">&quot; mit dem Passwort:&quot;</span> <span class="op">+</span>pw_dadmin)</span>
-<span id="cb78-40"><a href="#cb78-40" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">&quot;Datenbank-Nutzer: &quot;</span> <span class="op">+</span>dbuser <span class="op">+</span> <span class="st">&quot; Passwort:&quot;</span> <span class="op">+</span>pw_dbuser)</span>
-<span id="cb78-41"><a href="#cb78-41" aria-hidden="true" tabindex="-1"></a><span class="bu">print</span>(<span class="st">&quot;Datenbankname: &quot;</span> <span class="op">+</span>dbname)</span></code></pre></div>
-  <p>In den ersten fünf Zeilen importieren wir einige Module bzw.
-  Funktionen, die wir benötigen. In den Zeilen 7 bis 9 lesen wir die
-  übergebenen Argumente aus und speichern die Werte in entsprechenden
-  Variablen.</p>
-  <p>Um das API-Objekt zu erzeugen, benötigen wir das Passwort für den
-  übergebenen Paket-Admin. Wir lesen in Zeile 11 das Passwort aus dem
-  verschlüsselten Passwort-Tresor des Kommandozeilenprogramms
-  <code>pass</code> aus und speichern es in der Variablen
-  <code>pw</code>. Weitere Informationen zu dem Programm finden Sie auf
-  der Website <a href="https://www.passwordstore.org/"
-  class="uri">https://www.passwordstore.org/</a>. Sie können natürlich
-  andere Programme wählen, um ein Passwort aus einem Passwort-Tresor
-  auszulesen. Falls Sie nur ein Paket bei Hostsharing verwalten, können
-  Sie das Passwort auch direkt ins Skript eintragen. Aus
-  Sicherheitsgründen sollten Sie dies möglichst vermeiden.</p>
-  <p>Anschließend erzeugt das Skript das API-Objekt, wobei es als
-  Credentials den Namen des Paket-Admin und sein Passwort übergibt. Der
-  Namen des Paket-Admin ist identisch mit dem Paket, in dem die Domain
-  angelegt werden soll.</p>
-  <p>Danach wird ein Zufallsgenerator definiert, mit die Passworte
-  erzeugt werden, die später benötigt werden. In Zeile 27 und 28 werden
-  die Passworte für den Domain-Admin und den Datenbank-Nutzer erzeugt
-  und in Variablen gespeichert. Direkt anschließend erzeugt das Skript
-  aus den beim Aufruf übergebenen Werten die Namen für den Domain-Admin,
-  den Datenbank-Nutzer und die Datenbank.</p>
-  <p>In den Zeilen 33 bis 36 werden der Domain-Admin, die Domain, den
-  Datenbank-Nutzer und die Datenbank angelegt.</p>
-  <p>Und zum Schluss gibt das Skript alle Daten aus.</p>
-  <p>Idealerweise würde ein solches Skript die neuen Benutzernamen mit
-  den jeweiligen Passworten in den Passwort-Tresor eintragen, sodass
-  dies nicht mit der Hand erledigt werden muss.</p>
-  <!-- todo: Im Text werden Zeilennummern erwähnt. Wir brauchen eine Lösung dafür -->
-  </section>
-  </section>
-  </section>
-  <section id="hsadmin-webfrontend" class="level3">
-  <h3>HSAdmin-Webfrontend</h3>
-  <p>HSAdmin verfügt über ein Webfrontend <a
-  href="https://admin.hostsharing.net"
-  class="uri">https://admin.hostsharing.net</a> zur Verwaltung eines
-  Web-Pakets.</p>
-  <p>Die Bedienung wurde im Abschnitt <a
-  href="#kap-hsadmin-einstieg">Einführung in HSAdmin</a>
-  beschrieben.</p>
-  </section>
-  </section>
-  <section id="kap-htaccess" class="level2">
-  <h2>htaccess</h2>
-  <p>Das Verhalten des Apache Webservers lässt sich durch
-  <code>.htaccess</code>-Dateien im Verzeichnis einer Domain steuern.
-  Die zentrale Konfiguration lässt sich damit für einzelne Verzeichnisse
-  überschreiben. Eine <code>.htaccess</code>-Datei wirkt sich auf das
-  Verzeichnis aus, in dem sie sich befindet, und auf alle
-  Unterverzeichnisse. Konfigurationen, die es ermöglichen, dass der
-  Webserver Rechte anderer User erhalten kann, sind dabei nicht
-  erlaubt.</p>
-  <section id="bereiche-einer-website-mit-passwort-schützen"
-  class="level3">
-  <h3>Bereiche einer Website mit Passwort schützen</h3>
-  <p>Ein typischer Anwendungsfall ist der Schutz eines bestimmten
-  Verzeichnisses mit einem Passwort. Dazu muss zunächst eine
-  Passwort-Datei mit dem Namen <code>.htpasswd</code> im
-  <code>etc</code>-Verzeichnis der Domain angelegt werden. Dies erfolgt
-  mit dem Programm <code>htpasswd</code>.</p>
-  <pre class="console"><code>xyz00-doms@h97:~$ cd ~/doms/hs-example.de/etc
-xyz00-doms@h97:~$ htpasswd -c .htpasswd peter
-New password: *****
-Re-type new password: *****
-xyz00-doms@h97:~$</code></pre>
-  <p>Statt der Sternchen geben Sie das gewünschte Passwort ein. Es wird
-  verschlüsselt gespeichert. Die Option <code>-c</code> wird nur bei der
-  ersten Anlage der Passwort-Datei gesetzt. Wenn ein Passwort für einen
-  zweiten Benutzer eingerichtet wird, muss <code>htpasswd</code> ohne
-  die Option aufgerufen werden, da sonst die Datei komplett
-  überschrieben würde und das Passwort für den ersten Benutzer verloren
-  ginge.</p>
-  <pre class="console"><code>xyz00-doms@h97:~$ cd ~/doms/hs-example.de/etc
-xyz00-doms@h97:~$ htpasswd .htpasswd paula
-New password: *****
-Re-type new password: *****
-xyz00-doms@h97:~$</code></pre>
-  <p>Diese Passwort-Datei kann nun für beliebige Verzeichnisse der
-  Domain genutzt werden. Um ein Verzeichnis mit einem Passwort zu
-  schützen, legen Sie dazu einfach eine <code>htaccess</code>-Datei mit
-  folgendem Inhalt in dem betreffenden Verzeichnis an.</p>
-  <pre class="text"><code>order allow,deny
-allow from all
-require valid-user
-Authname &quot;Privater Bereich. Bitte melden Sie sich an.&quot;
-Authtype Basic
-AuthUserFile /home/doms/hs-example.de/etc/.htpasswd</code></pre>
-  <p>Beim Aufruf des Bereichs im Webbrowser wird der Besucher
-  aufgefordert, den Benutzernamen (in unserem Beispiel
-  <code>peter</code> oder <code>paula</code>) sowie das jeweilige
-  Passwort einzugeben.</p>
-  </section>
-  <section id="weiterleitungen-redirects" class="level3">
-  <h3>Weiterleitungen (Redirects)</h3>
-  <p>Ein anderer typischer Anwendungsfall sind Redirects.
-  Weiterleitungen werden benötigt, wenn alte Inhalte verschoben werden,
-  sodass sie unter einer neuen Webadresse erreichbar sind.
-  Weiterleitungen verhindern, dass Links, die von anderen Webseiten auf
-  den verschobenen Inhalt gesetzt wurden, ins Leere gehen. Dazu können
-  Sie eine <code>htaccess</code>-Datei im obersten Verzeichnis anlegen,
-  in dem Sie alle Weiterleitungen aufführen.</p>
-  <pre class="text"><code>Redirect permanent /alte-url-1/ /neue-url-1/ 
-Redirect permanent /alte-url-2/ /neue-url-2/
-Redirect permanent /alte-url-3/ /neue-url-3/</code></pre>
-  </section>
-  <section id="eigene-404-datei-festlegen" class="level3">
-  <h3>Eigene 404-Datei festlegen</h3>
-  <p>Wenn ein Benutzer auf Ihrer Website eine ungültige Webadresse
-  aufruft, zeigt der Browser eine 404-Meldung an. Sie können diese
-  Standardanzeige anpassen, indem Sie den Webserver anweisen, bei einem
-  404-Fehler eine besondere Webseite anzuzeigen.</p>
-  <pre class="text"><code>ErrorDocument 403 /404.html</code></pre>
-  <p>Weitere Möglichkeiten, das Verhalten des Webservers über
-  <code>htaccess</code>-Dateien zu steuern, finden Sie in der <a
-  href="https://httpd.apache.org/docs/2.4/">Apache-Dokumentation</a>.
-  Eine deutschsprachige Anleitung und Beispielkonfigurationen finden Sie
-  unter: <a href="https://wiki.selfhtml.org/wiki/Webserver/htaccess"
-  class="uri">https://wiki.selfhtml.org/wiki/Webserver/htaccess</a></p>
-  </section>
-  </section>
-  <section id="kap-php" class="level2">
-  <h2>PHP</h2>
-  <p>PHP ist standardmäßig über FastCGI konfiguriert. In den Ordnern
-  <code>fastcgi</code> und <code>fastcgi-ssl</code> unterhalb des
-  Domainordners findet sich eine phpstub-Datei; der Webserver liefert
-  php-Dateien mit den Rechten des Users aus.</p>
-  <section id="eigene-php-konfiguration" class="level3">
-  <h3>Eigene PHP Konfiguration</h3>
-  <p>Im Ordner <code>fastcgi</code> oder <code>fastcgi-ssl</code> wird
-  die Datei php.ini angelegt. In dieser Datei werden die Änderungen
-  gegenüber den Standardwerten eingetragen.</p>
-  <p>Eine Übersicht über die Standardwerte von PHP können unter
-  <code>/etc/php/7.4/cgi/php.ini</code> eingesehen werden.</p>
-  </section>
-  <section id="php-prozesse-stoppen" class="level3">
-  <h3>PHP Prozesse stoppen</h3>
-  <p>Nach Änderungen an der php.ini müssen alle PHP-Prozesse gestoppt
-  werden:</p>
-  <pre class="console"><code>$ killall php -u $USER</code></pre>
-  </section>
-  <section id="phpstub" class="level3">
-  <h3>phpstub</h3>
-  <p>Die Datei <code>phpstub</code> ist standardmäßig vorhanden,
-  alternativ kann sie aus dem Ordner <code>/usr/local/src/phpstub</code>
-  wiederhergestellt werden.</p>
-  </section>
-  <section id="vorinstallierte-php-version-wechseln" class="level3">
-  <h3>Vorinstallierte PHP Version wechseln</h3>
-  <p>Hostsharing bietet neben der vom Betriebssystem vorinstallierten
-  Standardversion 7.4 auch PHP 7.0, 7.1, 7.2, und 7.3 an.</p>
-  <p>Um die Version zu wechseln, genügt es, den jeweiligen phpstub
-  auszutauschen. Version 7.3 liegt unter
-  <code>/usr/local/src/phpstub/phpstub73</code>; das Versionformat ist
-  entsprechend <code>/usr/local/src/phpstub/phpstubXX</code>.</p>
-  <section id="phpstub-für-php-7.3-kopieren" class="level4">
-  <h4>phpstub für PHP 7.3 kopieren</h4>
-  <pre class="console"><code>$ cp /usr/local/src/phpstub/phpstub73 ~/doms/example.com/fastcgi/
-$ cp /usr/local/src/phpstub/phpstub73 ~/doms/example.com/fastcgi-ssl/</code></pre>
-  </section>
-  <section id="phpstub-für-php-7.3-aktivieren" class="level4">
-  <h4>phpstub für PHP 7.3 aktivieren</h4>
-  <p>In der jeweiligen .htaccess eines Ordners genügt es, die PHP
-  Dateizuordnung zu überschreiben:</p>
-  <pre><code>AddType application/x-httpd-php73 .php
-Action application/x-httpd-php73 /fastcgi-bin/phpstub73</code></pre>
-  <p>Damit wird für den aktuellen Ordner und alle Unterordner PHP 7.3
-  verwendet.</p>
-  <p>Auf die gleiche Weise können auch PHP 7.2, PHP 7.1 oder PHP 7.0
-  aktiviert werden.</p>
-  </section>
-  </section>
-  </section>
-  <section id="kap-logging" class="level2">
-  <h2>Logging</h2>
-  <section id="kap-traffic" class="level3">
-  <h3>Traffic</h3>
-  <p>Im Web-Paket wird jeden Monat eine Traffic-Log-Datei für den
-  erzeugten Traffic erzeugt, die den Verbrauch eines jeden Tages pro
-  Zeile enthält. Der Traffic setzt sich aus HTTP-, FTP- und Mail-Traffic
-  (POP3, IMAP) zusammen. Bei Überschreitung des gebuchten Traffics wird
-  der Paket-Admin automatisch per E-Mail informiert.</p>
-  <p>Der Traffic für einzelne Benutzer innerhalb eines Pakets kann nicht
-  beschränkt werden.</p>
-  </section>
-  <section id="kap-traffic-log" class="level3">
-  <h3>Traffic-Log-File</h3>
-  <p>Der im Web-Paket erzeugte Traffic wird dem Paket-Admin unter
-  <code>/home/pacs/xyz00/var/traffic-iptables-YYYY-MM.log</code>
-  zugänglich gemacht. Das Logfile hat folgenden Aufbau:</p>
-  <table style="width:100%;">
-  <colgroup>
-  <col style="width: 11%" />
-  <col style="width: 6%" />
-  <col style="width: 12%" />
-  <col style="width: 11%" />
-  <col style="width: 13%" />
-  <col style="width: 14%" />
-  <col style="width: 10%" />
-  <col style="width: 5%" />
-  <col style="width: 10%" />
-  </colgroup>
-  <thead>
-  <tr class="header">
-  <th>Datum</th>
-  <th>Paket</th>
-  <th>Monatslimit</th>
-  <th>Tageslimit</th>
-  <th>Trafficsumme</th>
-  <th>IP 1</th>
-  <th>Traffic 1</th>
-  <th>IP 2</th>
-  <th>Traffic 2</th>
-  </tr>
-  </thead>
-  <tbody>
-  <tr class="odd">
-  <td>2020-01-01</td>
-  <td>xyz00</td>
-  <td>10240</td>
-  <td>341.333</td>
-  <td>89.367</td>
-  <td>83.223.79.125</td>
-  <td>89.367</td>
-  <td></td>
-  <td>0.000</td>
-  </tr>
-  </tbody>
-  </table>
-  <p>Die Bedeutung der einzelnen Spalten:</p>
-  <p><code>Datum:</code> Datum der Messung</p>
-  <p><code>Paket:</code> Name des Web-Pakets</p>
-  <p><code>Monatslimit:</code> Gebuchter Gesamttraffic pro Monat in
-  Megabyte</p>
-  <p><code>Tageslimit:</code> Tägliches Traffic-Kontingent bei
-  gleichmäßigem Verbrauch in Megabyte</p>
-  <p><code>Trafficsumme:</code> Gesamtsumme des angefallenen Traffics am
-  angegebenen Tag in Megabyte</p>
-  <p><code>IP-Adresse 1:</code> Primäre IP-Adresse des Web-Pakets</p>
-  <p><code>Traffic 1:</code> Über die primäre IP-Adresse angefallener
-  Traffic in Megabyte</p>
-  <p><code>IP-Adresse 2:</code> Sekundäre IP-Adresse des Web-Pakets</p>
-  <p><code>Traffic 2:</code> Über die sekundäre IP-Adresse angefallener
-  Traffic in Megabyte</p>
-  </section>
-  <section id="kap-http-log" class="level3">
-  <h3>HTTP-Log</h3>
-  <p>Das in kurzen Abständen aktualisierte Logfile <code>web.log</code>
-  des Webservers steht im Paketverzeichnis
-  <code>/home/pacs/xyz00/var/</code> dem Paket-Admin zur Verfügung. Aus
-  dem Logfile werden nach Ablauf des Tages einzelne Logfiles für alle
-  abgerufenen Domains und Sub-Domains generiert und unter
-  <code>/home/pacs/xyz00/var/web-www.example.org-YYYYMMDD-HHMI.log.gz</code>
-  gespeichert. Diese Dateien werden 48 Tage archiviert und nach Ablauf
-  dieser Frist automatisch gelöscht. Das Error-Logfile
-  <code>web.err</code> des Webservers steht unter
-  <code>/home/pacs/xyz00/var</code> dem Paket-Admin zur Verfügung.</p>
-  </section>
-  </section>
-  <section id="kap-backup" class="level2">
-  <h2>Backup</h2>
-  <p>Hostsharing führt nächtliche Sicherungen der Daten durch. In der
-  Regel können jeweils mindestens die letzten 15 nächtlichen
-  Datensicherungen wiederhergestellt werden.</p>
-  <p>In der Datensicherung enthalten sind:</p>
-  <ul>
-  <li>die Paket-Konfiguration</li>
-  <li>die Dateien im Paket selbst, sofern diese nicht vom Paket-Admin
-  explizit ausgeschlossen wurden</li>
-  <li>die zum Paket gehörigen Datenbanken</li>
-  <li>die zum Paket gehörigen eingegangenen E-Mails</li>
-  <li>die Logfiles</li>
-  </ul>
-  <div class="attention">
-  <p>In der Datensicherung sind <strong>nicht</strong> enthalten:</p>
-  <ul>
-  <li>ausgehende, aber noch nicht versandte E-Mails</li>
-  <li>eingehende, aber noch nicht im Postfach abgelegte E-Mails</li>
-  <li>Dateien in Verzeichnissen für temporäre Daten</li>
-  </ul>
-  </div>
-  <section id="datenbanken" class="level3">
-  <h3>Datenbanken</h3>
-  <p>Unmittelbar vor Beginn der Sicherung der Daten des Dateisystems
-  werden MySQL-, PostgreSQL-Datenbanken und <code>crontab</code>-Dateien
-  in das Verzeichnis <code>/home/pacs/xyz00/.bak/</code> gesichert.
-  Diese Sicherungen fließen in die nachfolgende Dateisystemsicherung
-  ein. Die Rücksicherung von Datenbanken erfolgt durch den Paket-Admin
-  auf Basis der im Verzeichnis <code>/home/pacs/xyz00/.bak/</code>
-  abgelegten Datenbanksicherungen.</p>
-  </section>
-  <section id="rücksicherung" class="level3">
-  <h3>Rücksicherung</h3>
-  <p>Für die Rücksicherung der Datenbestände ist ein
-  Rücksicherungsauftrag für die betroffene Sicherungsdatei in Auftrag zu
-  geben. Der Rücksicherungsauftrag erfolgt per E-Mail an <a
-  href="mailto:service@hostsharing.net"
-  class="email">service@hostsharing.net</a> und beinhaltet folgende
-  Angaben:</p>
-  <ul>
-  <li>das betreffende Webpaket,</li>
-  <li>den Pfad des rückzusichernden Verzeichnisses oder alternativ den
-  Pfad und den Dateinamen der rückzusichernden Datei</li>
-  <li>sowie das Datum des angeforderten Sicherungslaufs.</li>
-  </ul>
-  <p>Die Rücksicherung wird vom Service unter:
-  <code>/home/restore/YYY-MM-DD</code> bereitgestellt.</p>
-  </section>
-  </section>
-  <section id="wartungsfenster" class="level2">
-  <h2>Wartungsfenster</h2>
-  <p>Es gibt Standard-Wartungsfenster von 1 bis 2 Uhr (<em>früh</em>)
-  und von 4 bis 5 Uhr (<em>spät</em>). Hives/Server mit ungeraden
-  Nummern (h01, h03, … h99) werden im Rahmen des frühen Wartungsfensters
-  gewartet, Hives/Server mit geraden Nummern (h02, h04, … h98) werden im
-  späten Wartungsfenster gewartet.</p>
-  <p>Im Fall von Managed Servern haben die Mitglieder folgende
-  Wahlmöglichkeiten:</p>
-  <ul>
-  <li><p>Tausch des Wartungsfensters <em>früh</em> gegen <em>spät</em>
-  oder umgekehrt. Die Festlegung kann individuell je Managed Server
-  getroffen werden. Dieser Service ist kostenfrei.</p></li>
-  <li><p>Vereinbarung individueller Wartungsfenster,
-  Vorankündigungsfristen, Absprachen und Vorgehensweisen. Die Berechnung
-  erfolgt dann abhängig vom konkreten Aufwand im Wartungsfall gemäß
-  unseres gültigen Abrechnungssatzes.</p>
-  <p>Mit dieser Änderung ermöglichen wir den Mitgliedern weitreichende
-  Flexibilität und die Möglichkeit, individuelle Prozesse verbindlich
-  festzulegen.</p></li>
-  </ul>
-  <p>Selbstverständlich werden auch im Falle der kostenfreien
-  Standardwartung angemessene Ankündigungsfristen eingehalten.</p>
-  </section>
-  <section id="ssh-hostkeys" class="level2">
-  <h2>SSH-Hostkeys</h2>
-  <p>Wenn Sie sich zum ersten Mal mit der Secure Shell
-  (<code>ssh</code>) bei Hostsharing anmelden, fragt das Programm nach,
-  ob Sie dem Hostkey des Servers vertrauen möchten. Das
-  Hostsharing-System identifiziert sich Ihnen gegenüber mit dem
-  Fingerabdruck des Hostkeys. Die Meldung sieht folgendermaßen aus:</p>
-  <pre class="console"><code>$ ssh xyz00@xyz00.hostsharing.net
-The authenticity of host &#39;xyz00.hostsharing.net (2a01:37:1000::53df:4fb1:0)&#39; can&#39;t be established.
-RSA key fingerprint is SHA256:rPqZO8FA+FQW/rQ1itbuNF9uWmBH82MSQp44fR1v6tQ.
-Are you sure you want to continue connecting (yes/no)? </code></pre>
-  <p>In der zweiten Zeile der Meldung zeigt die Secure Shell den
-  Fingerabdruck des Servers an:
-  <code>SHA256:rPqZO8FA+FQW/rQ1itbuNF9uWmBH82MSQp44fR1v6tQ</code> Diesen
-  können Sie mit dem in der folgenden Liste aufgeführten Fingerabdruck
-  vergleichen, um sicherzugehen, dass Sie sich wirklich auf einem Server
-  der Hostsharing eG anmelden. Wenn die Fingerabdrücke übereinstimmen,
-  können Sie die Frage mit <code>yes</code> beantworten. Die Secure
-  Shell setzt dann den Prozess des Einloggens fort und fragt nach dem
-  Passwort für den angegebenen Benutzer.</p>
-  <pre><code>SHA256:N1CtFnS1BwJrYoXUqZO61SM8RIpkfdhPOw+XVOaiYQo h01.hostsharing.net (RSA)
-SHA256:HVgsVWEw6pxUFPGEIIuZOrd9bBiGQu0jVoq+sDFqpGk h02.hostsharing.net (RSA)
-SHA256:bvMneyMq4dM0gCNtgVUfXAsh2JcWl0XXt4da6JI2wcI h03.hostsharing.net (RSA)
-SHA256:SF8/6oeb6aNO0iOgfprrQ7E+IJaoEBw2nAArW9o1jF0 h04.hostsharing.net (RSA)
-SHA256:oOarqh+jQBINNvFiFlg9Xvgf/kcT0LGfPvxnlZ685AA h05.hostsharing.net (RSA)
-SHA256:r6gz+eduk6Fmj+UqCLbX8bN5VDZ6JZ8o9AXJsdOZBEQ h06.hostsharing.net (RSA)
-SHA256:8/JolH0E37TGePP6vm92APo9klaXOBPkA1nM8C+SR+I h07.hostsharing.net (RSA)
-SHA256:AOvcGrr+x496rN7GeKZUIBJdyhaCcWc8SoL0wBcHoR8 h08.hostsharing.net (RSA)
-
-SHA256:YUntE5eqb6NSrZTY96i/B3C7dvWkoTyRjOdbonyXqKA h11.hostsharing.net (RSA)
-SHA256:uADmSWGXZX0y+uUg/2UgMKgc9sOovg15KbZK2rAfnfY h12.hostsharing.net (RSA)
-SHA256:YKe7xwXraKoUO5n+unZsMrbA4VlJX21tTaSq/1FenWc h13.hostsharing.net (RSA)
-SHA256:QXVugsok7f+lz2p784LU4J/ad9/eTmxj2IyVAmPQ5f0 h14.hostsharing.net (RSA)
-SHA256:zCth18agkjju4+qRsvJhOH2eYasjQsbrepTb6xUWNv4 h15.hostsharing.net (RSA)
-SHA256:pDPLmEB7FZ2/diAVSW5Dyz4fDAk2ooht7lEojO0u6i8 h16.hostsharing.net (RSA)
-SHA256:VmoYwYOovJfIaSCWAaw6ibvte69tZknzqwUCQbDtnbk h17.hostsharing.net (RSA)
-SHA256:I3oYA4H8fobTTR4T8Td+3+uJXIZgfr9RNYzoRWsW3A8 h18.hostsharing.net (RSA)
-
-SHA256:xh2Yy20Ksn4NaoE0c9qFQc7UffiFZwjE8LI2MqgCnu0 h20.hostsharing.net (RSA)
-SHA256:fFpK8WhB4uT5kupdU3ZZzaedeUZUubReoEiZ1qTwib0 h21.hostsharing.net (RSA)
-SHA256:bro6uRAAnLZnrvEr9D2Am7lnLChOsokACOHg+bL4wtg h22.hostsharing.net (RSA)
-SHA256:pd3TSPdt/JJOEASMgqS09pOra7X4/W42so3MQ9DhLzY h23.hostsharing.net (RSA)
-SHA256:0Xf3sWXjuNOsTmycGsnUOa6uDs6j2zg9bDVMKK4/K4k h24.hostsharing.net (RSA)
-
-SHA256:gTLnnTDiiAPLzPZI8ZNQ8pwKBTqEkW2Hh7tS/UZgheE h30.hostsharing.net (RSA)
-SHA256:g0aiLcfknMr+r1JsQj/A18odKbK3tZ8kN2YgkMdpU6g h31.hostsharing.net (RSA)
-SHA256:Jsmjp/Pm/+2azIYhZddSJ9F5l8ROkMLSKadxtIF3ovs h32.hostsharing.net (RSA)
-SHA256:t8dXxStA4IBaeeQLx/0RDWH2OdJGm0yjHyrZS8xGAzc h33.hostsharing.net (RSA)
-SHA256:2KMOx41kEP1iVNQ7pjf9ff+CxQ3CnQ41bgb9tJIuuD4 h34.hostsharing.net (RSA)
-SHA256:oD61B3ZGW+F776ppQy+GSKyAdYAdjqXo7aHPZZT+Cl4 h35.hostsharing.net (RSA)
-SHA256:pcn07clyBQ93z4H9yyjpYVmcaP/tmL8dXXN8uUIxfZ0 h36.hostsharing.net (RSA)
-SHA256:QJMaX7rUz+YHdjqutCP6LT/gWgPL14KtCHM47re5/As h37.hostsharing.net (RSA)
-SHA256:gAW61QQv4dEyjY1V11YdWULD8tYOcRSOkxZbCNJJhU8 h38.hostsharing.net (RSA)
-SHA256:z92YxH/cKI7+2yZnH1QH0b/wuaBOaVnUxlz2hsxZK0s h39.hostsharing.net (RSA)
-
-SHA256:P24ABx/GFTMnYCUfzpnTRoObArjy13CT40o2e5/1tq8 h40.hostsharing.net (RSA)
-SHA256:NDRW1c7gxS3GsGWkoSGd+g9ryu8atfYwYvvhbyetXj8 h41.hostsharing.net (RSA)
-SHA256:IPbPxK+TDPhZKyNrmmQ4zuLA4SOwRh1Lqpbi74Lieg4 h42.hostsharing.net (RSA)
-SHA256:xRAscjEwJd5fP3pW5yDh1FVhL5sAZYPCqdsdRzBjLQU h43.hostsharing.net (RSA)
-SHA256:77phLJuhe7GQqFiZ9rRaAMABEPULJc7sr4efey+XIL8 h44.hostsharing.net (RSA)
-
-SHA256:ues/X3zvkHY9D17zpcPyRiGyq/vmUhDJQK3ODqZj0hE h50.hostsharing.net (RSA)
-SHA256:Z/jJ3t/ISdXmU7BCtxK+nXqYwVMK7GcuHrBaun9V83M h51.hostsharing.net (RSA)
-SHA256:6OXalNTTqZ7RlStdoUx8WVWZuzHr46xbRX+XizsF9eM h52.hostsharing.net (RSA)
-SHA256:E178kADy/6ef9l84goS+0XVNsyVp2XnHKBk/QjhiMms h54.hostsharing.net (RSA)
-SHA256:YH4QNO7QLWKr3UTIX8A/5uZvI8zEPMTdoaok4QhtXCU h59.hostsharing.net (RSA)
-
-SHA256:VQa9kcj80wxW/RyGkpAmjRKZU8IQzepNenGSkDOK4/o h60.hostsharing.net (RSA)
-SHA256:VqzCGfUXG5PRoJztxla1NhQZo1Uo7osiwYQ37NvqfYk h61.hostsharing.net (RSA)
-SHA256:OPfU11pHC3qtHyOegF4h3fvZNgI6wDhZQ5lQ3tZHWJg h62.hostsharing.net (RSA)
-SHA256:k5m0KARxN1Xmf0NnV1h9ztWKzVBs7N7/dzgV75+sqRM h63.hostsharing.net (RSA)
-SHA256:vA65yRKft1a6doum6jdLm+Up5u9YHlMmmFnZ4mSw4TU h64.hostsharing.net (RSA)
-SHA256:fvpgXIQCYMk9RQaXcEvjUKf+EbSIMXu/rNm7DrDJP8E h67.hostsharing.net (RSA)
-SHA256:2V1PLyWI8hGTtlODD33I2G4342Vw1pBwYuBSCiHkVv4 h68.hostsharing.net (RSA)
-
-SHA256:qs/SSkPIH4WZak1/sFSD5XWrk+fJLQSBAz+mbbjp0Yg h70.hostsharing.net (RSA)
-SHA256:b158PhXSeEPoVNTS9ifEjfs3ZU6FjksWLOQyBf+4vmA h71.hostsharing.net (RSA)
-SHA256:LBc6PBLyz4Q20J7I8tzz1Vb7rcUhRr1Cm9pM+ru2D3E h72.hostsharing.net (RSA)
-SHA256:5xMCpXiFyhP7SuqDqDRy9hm0Vw9usqH6f/5GkNA6SiA h73.hostsharing.net (RSA)
-SHA256:c6ciBK7eciSilcs1e7tNMUA6xLiXiedRcV78brB6/hI h74.hostsharing.net (RSA)
-SHA256:Qwix7tr1RcK8yppfG58KM9DMZO+LS+uZbKl2GSCob1I h75.hostsharing.net (RSA)
-SHA256:JLo/6ezAxCmouKmtTu9vsZ276TjvotcYje9uwaKnNFU h76.hostsharing.net (RSA)
-SHA256:tSg96I1l6JUP8yUPIzsy3bbMWvfNwwBGUaNf5vNGV0I h79.hostsharing.net (RSA)
-
-SHA256:eVyAJ/wA/goxwNrwhbS8Qw0mAaj0X/+dx3k5TL6hSYU h80.hostsharing.net (RSA)
-SHA256:JqpaMMumkFdqQF3YYdqPbnkXReBralBNzr2DcokPmec h81.hostsharing.net (RSA)
-SHA256:C1niDEd/8JyaDoLBA3Ak34o7xce6o4lfuk+X6H0IAfE h82.hostsharing.net (RSA)
-SHA256:JHPJTq4mqdzXktiE7aopf4PM0Ve4y2mDE0ReEDiTFkI h83.hostsharing.net (RSA)
-SHA256:bNR5bPNQ7mMQ+uD+yRakH7pML5m6xf0yB8nVodPzA2Y h84.hostsharing.net (RSA)
-SHA256:3LGhMnZNFP+ClkqsG8X1X7r149Rq9hK06d5GyN2i6WE h85.hostsharing.net (RSA)
-SHA256:TXEFHfmEAkwQ+8H7BAYes+cVk7hiVL9wO4prQgO7Lg0 h86.hostsharing.net (RSA)
-SHA256:1Cl+C6nVzg8kGjZYHJQJR0zJ4skjWbhywwbfBzb4/+A h87.hostsharing.net (RSA)
-SHA256:OHAYV/r5EMdEEsO7n9ZfKq0To/kZ6g9IxQ17TI58yIE h88.hostsharing.net (RSA)
-SHA256:buSwCu/6FDbEJfQfrvjKcDZGT+gZYMgg6THI7e26sPo h89.hostsharing.net (RSA)
-
-SHA256:QZ6sHxJMueXFOYwbN/r4Awnx+Nl/VCJddZnlckFAJ+M h90.hostsharing.net (RSA)
-SHA256:MnnyrqLYnY04iyM930hFSMDHP6+9pzcZOa4cQTtTCi0 h91.hostsharing.net (RSA)
-SHA256:7QZ54GTzdmOBZ9Uhc09ljjPyhLIB3udUSkjtoTnGaEI h92.hostsharing.net (RSA)
-SHA256:ifHlyDjiJ2OTJq5+M3YnP/nlXIQcKlQbRs51okAfWHI h93.hostsharing.net (RSA)
-SHA256:8NFXZyUVkEgCQZV7+LV8m3HI5aOqwi7zdbg+2aHtnUQ h95.hostsharing.net (RSA)
-SHA256:rPqZO8FA+FQW/rQ1itbuNF9uWmBH82MSQp44fR1v6tQ h97.hostsharing.net (RSA)
-SHA256:N0iSQTm3AFAhdgQ4OhSptQ0vhuURPUyAt33L72ZeLM8 h98.hostsharing.net (RSA)</code></pre>
-  <p>Den Namen des Servers, auf dem Ihr Web-Paket liegt, erfahren Sie in
-  HSAdmin. Gehen Sie dazu in den Bereich <code>Web-Paket</code>, wählen
-  Sie Ihr Web-Paket aus (in unserem Beispiel <code>xyz00</code>). Es
-  öffnet sich rechts der Reiter <code>Web-Paket</code> und es werden
-  Informationen zu Ihrem Paket angezeigt. In der Zeile Server/Hive
-  finden Sie die Bezeichnung des Servers, auf dem Ihr Webpaket sich
-  befindet.</p>
-  <div id="fig_hsadmin-paket-info">
-  <figure>
-  <img src="images/hsadmin-paket-infos.jpg" style="width:100.0%"
-  alt="Informationen über das Web-Paket." />
-  <figcaption aria-hidden="true">Informationen über das
-  Web-Paket.</figcaption>
-  </figure>
-  </div>
-  <p>In unserem Beispiel müssten Sie den Fingerabdruck von
-  h97.hostsharing.net mit dem von der Secure Shell angezeigten
-  vergleichen.</p>
-  </section>
-  </section>
-  <section id="managed-operations-platform" class="level1">
-  <h1>Managed Operations Platform</h1>
-  <div class="intro">
-  <p>In diesem Kapitel beschreiben wir Komponenten der Managed
-  Operations Platform.</p>
-  </div>
-  <section id="rechenzentren" class="level2">
-  <h2>Rechenzentren</h2>
-  <section id="berlin-primärer-standort" class="level3">
-  <h3>Berlin, primärer Standort</h3>
-  <p>Die Hostsharing eG betreibt ihre Community Cloud im <a
-  href="https://www.e-shelter.de/de/location/berlin-1-data-center">Berlin
-  1 Data Center</a> von NTT Global Data Centers. Das Rechenzentrum ist
-  nach ISO 9001, ISO 27001 und ISO 50001 zertifiziert.</p>
-  <dl>
-  <dt>Wachschutz</dt>
-  <dd>
-  <p>Das Rechenzentrum wird durch ein 7-stufiges Sicherheitssystem vor
-  unbefugtem Zutritt geschützt. Wachschutz und Sicherheitspersonal sind
-  24 Stunden am Tag anwesend, an 365 Tagen im Jahr.</p>
-  </dd>
-  <dt>Betriebssicherheit</dt>
-  <dd>
-  <p>Ebenfalls rund um die Uhr an sieben Tagen in der Woche vor Ort ist
-  kompetentes Betriebspersonal, das die ausfallkritische Infrastruktur
-  überwacht. Bei einer Störung kann es sofort eingreifen, sodass
-  Ausfälle verhindert und maximale Verfügbarkeit gewährleistet ist.</p>
-  <p>Das Rechenzentrum bietet standardmäßig Tier 3. Auf Anfrage kann
-  Hostsharing Tier 4 gewährleisten.</p>
-  </dd>
-  <dt>Georedundanz</dt>
-  <dd>
-  <p>Das Berlin 1 Data Center ist eins von 160 Rechenzentren von NTT in
-  über 20 Ländern. Auf Anfrage können mit dem Rechenzentrumsbetreiber
-  georedundante Lösungen realisiert werden.</p>
-  </dd>
-  </dl>
-  </section>
-  <section id="berlin-sekundärer-standort" class="level3">
-  <h3>Berlin, sekundärer Standort</h3>
-  <p>Hostsharing erstellt jeden Tag eine Datensicherung (Backup) in
-  einem zweiten, entfernten Rechenzentrum. Es ist nach ISO/IEC
-  27001:2013 zertifiziert und wird von der Firma <a
-  href="https://www.ipb.de/">I/P/B Internet Provider in Berlin GmbH</a>
-  betrieben.</p>
-  </section>
-  </section>
-  <section id="netze" class="level2">
-  <h2>Netze</h2>
-  <section id="separierte-netzwerke" class="level3">
-  <h3>Separierte Netzwerke</h3>
-  <p>Die Aufteilung in private, abgeschottete Netze (VLANs) zwischen den
-  Managed Servern eines Nutzers erlaubt effiziente und sichere
-  Verbindungen.</p>
-  <p>Dabei wird zwischen den folgenden Netzen unterschieden, die nicht
-  nur durch VLANs, sondern zusätzlich durch Verkabelung und separate
-  Switches oder Router getrennt sind:</p>
-  <dl>
-  <dt>Frontend-Netzwerk</dt>
-  <dd>
-  <p>Dieses Netzwerk ist für allgemeine Anfragen gedacht. Die Firewall
-  erlaubt aktuell den Zugang zu allen Adressen in diesem Netzwerk.
-  Mittelfristig ist geplant, nur beabsichtigt belegte Ports
-  freizugeben.</p>
-  </dd>
-  <dt>Server-Netzwerk</dt>
-  <dd>
-  <p>Physikalisch getrenntes Netzwerk zur Kommunikation der Anwendungen
-  untereinander. In diesem Netzwerk lassen sich VLANs aufschalten, um
-  den Traffic zwischen verschiedenen Anwendungskomponenten sicher
-  übertragen zu können. Darüberhinaus können auch verschiedene
-  Traffic-Arten einer Anwendung separiert werden, so z.B. die Verbindung
-  einer Anwendung zur Datenbank von derjenigen zu einem Cache oder
-  Load-Balancer.</p>
-  </dd>
-  <dt>Speichernetzwerk</dt>
-  <dd>
-  <p>Dieses Netzwerk wird verwendet für Storage-Traffic. Es basiert auf
-  dedizierten Punkt-zu-Punkt-Verkabelungen, die von außen nicht
-  erreichbar sind. Das Netzwerk nutzt private IPv4-Adressen und ist
-  nicht nur von außen nicht erreichbar, sondern auch nur zugänglich für
-  die Backup-Server, nicht jedoch für die Managed Server.</p>
-  </dd>
-  <dt>Management-Netzwerk</dt>
-  <dd>
-  <p>Dieses physikalische Netzwerk wird verwendet für den Zugang zu
-  IPMI-Controllern (Intelligent Platform Management Interface
-  Controller), RAC (Remote Access Controller), Switches und Routern. Es
-  verwendet private IPv4-Adressen, die von außen nicht erreichbar sind.
-  Es wird auch noch verfügbar sein, wenn Probleme in den anderen Netzen
-  auftauchen.</p>
-  </dd>
-  </dl>
-  </section>
-  </section>
-  <section id="redundanz" class="level2">
-  <h2>Redundanz</h2>
-  <p>Hostsharing hält Hardware und aktive Netzwerkkomponenten, welche
-  für den Produktiv-Betrieb erforderlich sind, redundant vor.
-  Entsprechendes gilt für die Netzwerk- und Stromverkabelung.</p>
-  <p>Auch die Stromversorgung und Peerings mit den Carrieren sind
-  redundant ausgelegt, letztere sogar mehrfach. So hat das Versagen
-  einer einzelnen Komponente – abgesehen von Umschaltzeiten – keine
-  Auswirkungen auf den Produktivbetrieb.</p>
-  </section>
-  <section id="replikation" class="level2">
-  <h2>Replikation</h2>
-  <p>Hostsharing repliziert mit Hilfe der Software DRBD die
-  Festplatteninhalte aller Produktivsysteme in Echtzeit auf ein
-  Standby-System (RAID 1 über das Netzwerk).</p>
-  <p>Auf diese Weise stellt Hostsharing sicher, dass im Fall eines
-  Hardwareschadens der Betrieb mit allen persistent gespeicherten Daten
-  unverzüglich fortgesetzt werden kann, ohne dass durch das Einspielen
-  des Backups Datenänderungen, die sich in der Zwischenzeit ergeben
-  haben - etwa eingegangene E-Mails oder Datenbanktransaktionen -
-  verloren gehen.</p>
-  </section>
-  <section id="monitoring" class="level2">
-  <h2>Monitoring</h2>
-  <p>Es werden folgende Dienste/Services/Kenngrößen überwacht:</p>
-  <ul>
-  <li>HTTP (Webserver)</li>
-  <li>Mailsystem (SMTP, POP3, IMAP)</li>
-  <li>Datenbanken (MySQL, PostgreSQL)</li>
-  <li>Serverlast</li>
-  <li>Festplatten (Speicherplatzauslastung)</li>
-  </ul>
-  <p>Unter <a href="https://status.hostsharing.net"
-  class="uri">https://status.hostsharing.net</a> können der Status und
-  evtl. Meldungen der Hostmaster nachgelesen werden.</p>
-  </section>
-  <section id="backup" class="level2">
-  <h2>Backup</h2>
-  <p>Hostsharing führt täglich Sicherungen der Daten der
-  Produktivsysteme durch. Die Datensicherungen werden in einem vom
-  Produktivrechenzentrum rund 5 km entfernten Rechenzentrum aufbewahrt.
-  Die Datenübertragung zwischen den Standorten erfolgt ssh-verschlüsselt
-  über eigene Leitungen. Die Backups jedes Produktivsystems werden
-  separat archiviert und können nur von diesem System zur Rücksicherung
-  angefordert werden. Ferner wird gewährleistet, dass Backups nicht
-  nachträglich kompromittiert werden können.</p>
-  <p>In der Regel werden mindestens 15 Backups vorgehalten.</p>
-  </section>
-  </section>
-    </div>
-    </div>
-
-            <aside class="col-lg-4 order-lg-2">
-                <div class="card shadow-sm w-100 mb-4">
-                    <div class="card-header d-none d-lg-block">
-                        <img class="card-img-top img-fluid" src="https://www.hostsharing.net/images/icons/icon-wod.svg" alt="Hostsharing Dokumentation" title="Hostsharing Dokumentation">
-                    </div>
-                    <div class="card-body">
-                      <nav id="TOC" role="doc-toc">
-<ul>
-<li><a href="#kap-einfuehrung" id="toc-kap-einfuehrung">Einleitung</a>
-<ul>
-<li><a href="#web-pakete" id="toc-web-pakete">Web-Pakete</a></li>
-<li><a href="#managed-webspace" id="toc-managed-webspace">Managed
-Webspace</a></li>
-<li><a href="#managed-server" id="toc-managed-server">Managed
-Server</a></li>
-<li><a href="#best-practice" id="toc-best-practice">Best
-Practice</a></li>
-<li><a href="#weitere-informationsquellen"
-id="toc-weitere-informationsquellen">Weitere
-Informationsquellen</a></li>
-</ul></li>
-<li><a href="#kap-hsadmin-einstieg"
-id="toc-kap-hsadmin-einstieg">Einführung in HSAdmin</a>
-<ul>
-<li><a href="#rundgang-durch-hsadmin"
-id="toc-rundgang-durch-hsadmin">Rundgang durch HSAdmin</a></li>
-<li><a href="#kap-erstes-einloggen" id="toc-kap-erstes-einloggen">Erstes
-Einloggen und Änderung des Passworts</a></li>
-<li><a href="#domain-benutzer-anlegen"
-id="toc-domain-benutzer-anlegen">Domain-Benutzer anlegen</a></li>
-<li><a href="#domain-anlegen-und-bestellen"
-id="toc-domain-anlegen-und-bestellen">Domain anlegen und
-bestellen</a></li>
-<li><a href="#webspace-einrichten" id="toc-webspace-einrichten">Webspace
-einrichten</a></li>
-<li><a href="#kap-ssh-key-hochladen"
-id="toc-kap-ssh-key-hochladen">Hochladen des SSH-Keys</a></li>
-<li><a href="#e-mail-einrichten" id="toc-e-mail-einrichten">E-Mail
-einrichten</a></li>
-<li><a href="#datenbank-einrichten"
-id="toc-datenbank-einrichten">Datenbank einrichten</a></li>
-</ul></li>
-<li><a href="#kap-emails-lesen" id="toc-kap-emails-lesen">E-Mails senden
-und empfangen</a>
-<ul>
-<li><a href="#webmail-einrichten" id="toc-webmail-einrichten">Webmail
-einrichten</a></li>
-<li><a href="#mail-client-einrichten"
-id="toc-mail-client-einrichten">Mail-Client einrichten</a></li>
-<li><a href="#e-mail-passwort-ändern"
-id="toc-e-mail-passwort-ändern">E-Mail-Passwort ändern</a></li>
-</ul></li>
-<li><a href="#kap-referenz" id="toc-kap-referenz">Referenz</a>
-<ul>
-<li><a href="#kap-benutzerrollen"
-id="toc-kap-benutzerrollen">Benutzerrollen</a></li>
-<li><a href="#kap-benutzerrechte"
-id="toc-kap-benutzerrechte">Benutzerrechte</a></li>
-<li><a href="#kap-webpaket" id="toc-kap-webpaket">Web-Paket</a></li>
-<li><a href="#kap-ref-domain" id="toc-kap-ref-domain">Domains</a></li>
-<li><a href="#e-mail" id="toc-e-mail">E-Mail</a></li>
-<li><a href="#kap-ref-db" id="toc-kap-ref-db">Datenbanken</a></li>
-<li><a href="#tls-zertifikate" id="toc-tls-zertifikate">TLS
-Zertifikate</a></li>
-<li><a href="#kap-ref-zonefile"
-id="toc-kap-ref-zonefile">Zonefile</a></li>
-<li><a href="#kap-hsadmin" id="toc-kap-hsadmin">HSAdmin</a></li>
-<li><a href="#kap-htaccess" id="toc-kap-htaccess">htaccess</a></li>
-<li><a href="#kap-php" id="toc-kap-php">PHP</a></li>
-<li><a href="#kap-logging" id="toc-kap-logging">Logging</a></li>
-<li><a href="#kap-backup" id="toc-kap-backup">Backup</a></li>
-<li><a href="#wartungsfenster"
-id="toc-wartungsfenster">Wartungsfenster</a></li>
-<li><a href="#ssh-hostkeys" id="toc-ssh-hostkeys">SSH-Hostkeys</a></li>
-</ul></li>
-<li><a href="#managed-operations-platform"
-id="toc-managed-operations-platform">Managed Operations Platform</a>
-<ul>
-<li><a href="#rechenzentren"
-id="toc-rechenzentren">Rechenzentren</a></li>
-<li><a href="#netze" id="toc-netze">Netze</a></li>
-<li><a href="#redundanz" id="toc-redundanz">Redundanz</a></li>
-<li><a href="#replikation" id="toc-replikation">Replikation</a></li>
-<li><a href="#monitoring" id="toc-monitoring">Monitoring</a></li>
-<li><a href="#backup" id="toc-backup">Backup</a></li>
-</ul></li>
-</ul>
-</nav>
-                    </div>
-                </div>
-            </aside>
-</div>
-</main>
-<footer class="container">
-  <div class="row d-flex align-items-stretch border-top">
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Vorteile</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/ziele/digitale-souveraenitaet/">Digitale Souveränität</a>
-        </li>
-
-        <li></li>
-        <li>
-          <a href="https://www.hostsharing.net/ziele/digitale-nachhaltigkeit/">Digitale Nachhaltigkeit</a>
-        </li>
-
-        <li></li>
-        <li>
-          <a href="https://www.hostsharing.net/ziele/digitale-exzellenz/">Digitale Exzellenz</a>
-        </li>
-
-        <li>
-          <a href="https://www.hostsharing.net/vorteile/service-beratung/">Service und Beratung</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/vorteile/datensicherheit-hochverfuegbarkeit/">Datensicherheit und Hochverfügbarkeit</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/vorteile/datenschutz-mandantenfaehigkeit/">Datenschutz und Mandantenfähigkeit</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/vorteile/flexibilitaet-und-planungssicherheit/">Flexibilität und Planungssicherheit</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/vorteile/nachhaltigkeit-und-soziale-gemeinschaft/">Nachhaltigkeit und Gemeinschaft</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/vorteile/devops-automatisierung/">DevOps und Automatisierung</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Lösungen</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/hosting/agenturen/">für Agenturen</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/hosting/genossenschaften/">für Genossenschaften</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/hosting/startups/">für Startups</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/hosting/vereine/">für Vereine</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/loesungen/">Open Source Software</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/bigbluebutton/bbb-meeting">BBB Meeting</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/bigbluebutton/bbb-conference">BBB Conference</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/bigbluebutton/bbb-server">BBB Server</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Hosting</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/features/">Leistungsmerkmale</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/angebote/managed-webspace/">Managed Webspace</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/angebote/managed-server/">Managed Server</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/angebote/cloud-server/">Cloud Server</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/angebote/domains/">Domains</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/angebote/ssl-tls-zertifikate/">SSL/TLS-Zertifikate</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/angebote/spam-abwehr/">Spam-Abwehr</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Beratung und Service</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/service/sla-service-level-agreements/">Service Level Agreements</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/service/webmaster-on-demand/">Webmaster on Demand</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/service/webmaster-as-a-service/">Webmaster as a Service</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/service/installationsservice/">Installationsservice</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/service/umzugsservice/">Umzugsservice</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Aktuell</h6>
-      <ul class="list-unstyled">
-        <li><a href="https://www.hostsharing.net/blog/">Blog</a></li>
-        <li><a href="https://www.hostsharing.net/termine/">Termine</a></li>
-        <li>
-          <a href="https://www.hostsharing.net/newsletter/">Newsletter</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Social Media</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a rel="me" href="https://geno.social/@hostsharing">geno.social</a>
-        </li>
-        <li>
-          <a rel="me" href="https://hostsharing.coop/@hostsharing">hostsharing.coop</a>
-        </li>
-        <li><a rel="me" href="https://twitter.com/hostsharing">Twitter</a></li>
-        <li>
-          <a rel="me" href="https://www.facebook.com/hostsharing">Facebook</a>
-        </li>
-        <li><a rel="me" href="https://github.com/hostsharing">Github</a></li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Genossenschaft</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/genossenschaft/grundsaetze/">Grundsätze</a>
-        </li>
-        <li><a href="https://www.hostsharing.net/ziele/">Ziele</a></li>
-        <li>
-          <a href="https://www.hostsharing.net/genossenschaft/mitgliedschaften/">Mitgliedschaften</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/referenzen/">Referenzen</a>
-        </li>
-        <li><a href="https://www.hostsharing.net/team/">Team</a></li>
-        <li>
-          <a href="https://www.hostsharing.net/genossenschaft/mitgliedschaft/">Mitglied werden</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Tools</h6>
-      <ul class="list-unstyled">
-        <li><a href="https://webmail.hostsharing.net/">Webmail</a></li>
-        <li><a href="https://meeting.hs.coop/">BBB Meeting</a></li>
-        <li><a href="https://admin.hostsharing.net/">HSAdmin</a></li>
-        <li>
-          <a href="https://www.domain-bestellsystem.de/">Domainverwaltung</a>
-        </li>
-        <li><a href="https://invoices.hostsharing.net/">Rechnungsarchiv</a></li>
-        <li><a href="https://phpmyadmin.hostsharing.net/">phpMyAdmin</a></li>
-        <li><a href="https://phppgadmin.hostsharing.net/">phpPgAdmin</a></li>
-        <li><a href="https://status.hostsharing.net/">Status</a></li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Hilfe</h6>
-      <ul class="list-unstyled">
-        <li><a href="https://doc.hostsharing.net/">Dokumentation</a></li>
-        <li><a href="https://wiki.hostsharing.net/">Wiki</a></li>
-        <li><a href="https://lists.hostsharing.net/">Mailinglisten</a></li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Kontakt</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/webform/contact">Kontakt</a>
-        </li>
-        <li><a href="https://www.hostsharing.net/impressum/">Impressum</a></li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Datenschutz</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/datenschutz-webangebot/">Datenschutz Web-Angebot</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/datenschutz-social-media/">Datenschutz Social Media</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-vereinbarung-zur-auftragsverarbeitung.pdf">Vereinbarung zur Auftragsverarbeitung</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-besondere-bedingungen-zur-auftragsverarbeitung.pdf">Besondere Bedingungen zur Auftragsverarbeitung</a>
-        </li>
-      </ul>
-    </div>
-    <div class="card col-xs-12 col-sm-6 col-md-4 col-lg-3 w-100 d-flex flex-wrap border-0">
-      <h6>Rechtliches</h6>
-      <ul class="list-unstyled">
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-satzung.pdf">Satzung</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-allgemeine-geschaeftsbedingungen.pdf">Allgemeine Geschäftsbedingungen</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-leistungsbeschreibungen.pdf">Leistungsbeschreibungen</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-brutto-preisliste.pdf">Preisliste für Verbraucher</a>
-        </li>
-        <li>
-          <a href="https://www.hostsharing.net/downloads/hostsharing-netto-preisliste.pdf">Preisliste für Unternehmen und Organisationen</a>
-        </li>
-      </ul>
-    </div>
-  </div>
-</footer>
-<aside class="promotion">
-  <a href="https://www.hostsharing.net/2020" title="20 Jahre Hostsharing eG"></a>
-</aside>
- 
-
-</body></html>
diff --git a/source/managed-operations-platform/managed-operations-platform.pdf b/source/managed-operations-platform/managed-operations-platform.pdf
deleted file mode 100644
index 7c612d1..0000000
--- a/source/managed-operations-platform/managed-operations-platform.pdf
+++ /dev/null
Binary files differ

--
Gitblit v1.9.3