<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Stalwart – Serverküche</title><link>https://serverkueche.de/tags/stalwart/</link><description>Stalwart – Neueste Beiträge von Serverküche</description><generator>Hugo</generator><language>de-DE</language><managingEditor>feedback@serverkueche.de (Serverküche)</managingEditor><webMaster>feedback@serverkueche.de (Serverküche)</webMaster><copyright>2026 Serverküche</copyright><lastBuildDate>Tue, 11 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://serverkueche.de/tags/stalwart/index.xml" rel="self" type="application/rss+xml"/><item><title>Stalwart: der schlanke Mailserver in einem Container</title><link>https://serverkueche.de/tutorials/stalwart-mailserver/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/stalwart-mailserver/</guid><description>Stalwart Mail Server mit Docker aufsetzen: SMTP, IMAP, JMAP und Spam-Filter in einem einzigen, schlanken Container – die moderne Alternative zu Mailcow.</description><content:encoded><![CDATA[<p>Ein eigener Mailserver muss nicht aus zwei Dutzend Containern bestehen. <strong>Stalwart</strong> packt den
kompletten Mailserver – SMTP, IMAP, JMAP, Spam-Filter und Speicher – in <strong>einen einzigen</strong>,
in Rust geschriebenen Container. Das macht ihn schlank, schnell und wartungsarm: die moderne,
leichtgewichtige Alternative zu Schwergewichten wie <a href="/tutorials/mailserver-mailcow-aufsetzen/">Mailcow</a>.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-amber-400 bg-amber-50 dark:border-amber-700 dark:bg-amber-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">⚠️</span>Mailserver bleiben anspruchsvoll – egal wie schlank
  </p>
  <div class="prose-kitchen text-sm">Stalwart ist einfacher aufzusetzen als klassische Stacks, nimmt dir aber die Kernaufgabe eines
Mailserver-Betreibers nicht ab: <strong>Zustellbarkeit</strong>. Ob deine Mails ankommen oder im Spam landen,
entscheiden SPF, DKIM, DMARC und ein sauberer Reverse-DNS-Eintrag – nicht die Software. Genau
das behandeln wir im Folge-Tutorial. Wer keine Lust auf diese Dauerpflege hat, fährt mit einem
seriösen Mail-Hoster oft besser. Das ist eine ehrliche Abwägung, keine Schwäche.</div>
</div>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Am Ende läuft <strong>Stalwart 0.16.14</strong> als <strong>einzelner Docker-Container</strong> auf deinem Server und stellt
alles bereit, was ein vollwertiger Mailserver braucht:</p>
<ul>
<li><strong>SMTP</strong> (Senden/Empfangen) auf den Ports 25, 465 und 587,</li>
<li><strong>IMAP</strong> (993) und das moderne <strong>JMAP</strong> für schnelle, effiziente Clients,</li>
<li><strong>ManageSieve</strong> (4190) für serverseitige Filterregeln,</li>
<li>einen <strong>eingebauten Spam- und Phishing-Filter</strong> (kein separater Rspamd/ClamAV nötig),</li>
<li>einen <strong>integrierten Speicher</strong> (RocksDB) – keine externe Datenbank,</li>
<li>eine <strong>moderne Weboberfläche</strong> zur Verwaltung von Domains, Konten und Einstellungen.</li>
</ul>
<p>Der große Unterschied zu Mailcow: Es ist <strong>ein</strong> Prozess, <strong>ein</strong> Container, wenige Hundert
Megabyte Image. Das senkt RAM-Bedarf, Angriffsfläche und Wartungsaufwand deutlich. Getestet mit
<strong>Docker 29</strong> auf <strong>Debian 13</strong>.</p>
<p>Warum lohnt sich der schlanke Ansatz? Ein klassischer Mailserver-Stack besteht aus einem guten
Dutzend Diensten – Postfix, Dovecot, Rspamd, ein Datenbankserver, ein Virenscanner, Redis, ein
Webserver – die alle einzeln laufen, aktualisiert und aufeinander abgestimmt werden müssen. Jeder
davon ist eine potenzielle Fehlerquelle und ein Stück Angriffsfläche. Stalwart bündelt dieselbe
Funktionalität in einer einzigen, in Rust geschriebenen Anwendung. Rust bringt zudem
Speichersicherheit von Haus aus mit – für eine Software, die ungefiltert Daten aus dem ganzen
Internet entgegennimmt, ist das ein echtes Sicherheitsargument.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein <strong>eigener Server</strong> mit <strong>Debian 13</strong> und <a href="/tutorials/docker-installieren/">installiertem Docker</a>,
auf dem die Mail- und Web-Ports frei sind (kein Reverse Proxy, der 25/443 belegt).</li>
<li>Eine <strong>Domain</strong>, deren <a href="/tutorials/domain-mit-server-verbinden/">DNS du selbst steuerst</a> – für
den A-Record des Mailservers und den MX-Record.</li>
<li><strong>Port 25 ausgehend muss offen sein.</strong> Viele Provider sperren ihn gegen Spam; bei netcup
schaltest du ihn per Support-Ticket frei. Ohne offenen Port 25 kannst du keine Mails an fremde
Server zustellen.</li>
<li>Ein <strong>PTR-/Reverse-DNS-Eintrag</strong> für die Server-IP (im netcup-SCP), der auf deinen
Mail-Hostnamen zeigt.</li>
</ul>
<p>Stalwart ist genügsam – für den Einstieg reicht ein kleiner Server. Wie viel dein Setup insgesamt
braucht, schätzt dir der <a href="/serverempfehlung/">Server-Rechner</a>.</p>
<div class="not-prose my-6 overflow-hidden rounded-xl border border-paprika-200 bg-paprika-50 dark:border-paprika-800 dark:bg-paprika-900/20"
     data-track-content data-content-name="Affiliate-Box · /tutorials/stalwart-mailserver/" data-content-piece="VPS 1000 G12">
  <div class="flex items-center justify-between border-b border-paprika-200 bg-paprika-100 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-paprika-700 dark:border-paprika-800 dark:bg-paprika-900/40 dark:text-paprika-300">
    <span>🍳 Empfehlung</span>
    <span title="Mit * markierte Links sind Affiliate-Links.">Anzeige</span>
  </div>
  <div class="flex flex-col gap-4 p-4 sm:flex-row sm:items-center sm:justify-between">
    <div>
      <p class="text-lg font-bold text-slate-900 dark:text-white">VPS 1000 G12</p>
      <p class="mt-1 text-sm text-slate-600 dark:text-slate-300">4 vCore · 8 GB RAM · 256 GB NVMe</p>
      <p class="mt-1 text-sm font-semibold text-paprika-700 dark:text-paprika-400">ab 10,36 €/Monat</p>
      <p class="mt-2 text-sm text-slate-600 dark:text-slate-400">Stalwart ist schlank – der VPS 1000 reicht für den Einstieg gut aus.</p>
    </div>
    <a href="https://www.netcup.com/de/server/vps/vps-1000-g12-12m?ref=44083" rel="sponsored noopener" target="_blank"
   data-track-event="Affiliate|netcup: Affiliate-Box|VPS 1000 G12 · {page}"
   class="inline-flex shrink-0 items-center justify-center rounded-lg bg-paprika-600 px-5 py-2.5 font-semibold text-white transition-colors hover:bg-paprika-700">
  Zu netcup →
</a>

  </div><div class="px-4 pb-4"><p class="not-prose my-3 flex flex-wrap items-center gap-x-2 gap-y-1 rounded-lg border border-herb-500/40 bg-herb-50 px-3 py-2 text-sm text-slate-700 dark:bg-herb-900/20 dark:text-slate-200">
  <span>💶 <strong>5 € Gutschein</strong> für netcup-Neukunden:</span><code data-track-voucher="36nc17844976032"
        class="rounded bg-white px-2 py-0.5 font-mono text-sm font-semibold text-herb-800 dark:bg-slate-800 dark:text-herb-400">36nc17844976032</code>
  <span class="text-xs text-slate-500 dark:text-slate-400">(nur Neukunden, keine Domains)</span>
</p></div>
</div>

<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<h3 id="schritt-1-dns-records-anlegen">Schritt 1: DNS-Records anlegen</h3>
<p>Richte zuerst die DNS-Einträge ein – sie brauchen Zeit zum Propagieren. <code>DEINE_DOMAIN</code> ist deine
Mail-Domain, <code>DEINE_SERVER_IP</code> die IPv4-Adresse des Servers:</p>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">mail.DEINE_DOMAIN.   A     DEINE_SERVER_IP
</span></span><span class="line"><span class="cl">DEINE_DOMAIN.        MX    10 mail.DEINE_DOMAIN.</span></span></code></pre></div>
</div>
<p>Der <strong>MX-Record</strong> verweist andere Mailserver an <code>mail.DEINE_DOMAIN</code>. Dieser Hostname ist die
Identität deines Servers. SPF, DKIM und DMARC ergänzen wir im Zustellbarkeits-Tutorial – die
DKIM-Schlüssel erzeugt Stalwart im Setup selbst.</p>
<h3 id="schritt-2-die-composeyaml-schreiben">Schritt 2: Die <code>compose.yaml</code> schreiben</h3>
<p>Lege einen Ordner an und wechsle hinein:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir -p /opt/stalwart <span class="o">&amp;&amp;</span> <span class="nb">cd</span> /opt/stalwart</span></span></code></pre></div>
</div>
<p>Erstelle die Datei <code>compose.yaml</code>:</p>
<div class="sk-code">
  <span class="sk-code-head">YAML</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">services</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">stalwart</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">stalwartlabs/stalwart:v0.16.14</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l">stalwart</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">restart</span><span class="p">:</span><span class="w"> </span><span class="l">unless-stopped</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;25:25&#34;</span><span class="w">       </span><span class="c"># SMTP (Server-zu-Server)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;465:465&#34;</span><span class="w">     </span><span class="c"># SMTPS (Senden, implizites TLS)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;587:587&#34;</span><span class="w">     </span><span class="c"># Submission (Senden, STARTTLS)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;143:143&#34;</span><span class="w">     </span><span class="c"># IMAP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;993:993&#34;</span><span class="w">     </span><span class="c"># IMAPS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;4190:4190&#34;</span><span class="w">   </span><span class="c"># ManageSieve</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;8080:8080&#34;</span><span class="w">   </span><span class="c"># Weboberfläche &amp; JMAP (Ersteinrichtung)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="s2">&#34;443:443&#34;</span><span class="w">     </span><span class="c"># HTTPS (nach der Einrichtung, eigenes Zertifikat)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="l">stalwart_data:/opt/stalwart</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="l">stalwart_data:</span></span></span></code></pre></div>
</div>
<p>Das Wichtigste: <strong>ein</strong> Service, <strong>ein</strong> Volume für alle Daten. Stalwart holt sich sein
TLS-Zertifikat später selbst per Let&rsquo;s Encrypt – einen separaten Reverse Proxy brauchst du dafür
nicht. Achte darauf, dass Port <strong>443</strong> auf dem Host frei ist (Stalwart nutzt ihn auch für den
Zertifikatsabruf, siehe Schritt 4).</p>
<h3 id="schritt-3-den-container-starten-und-das-startpasswort-holen">Schritt 3: Den Container starten und das Startpasswort holen</h3>
<p>Starte Stalwart:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker compose up -d</span></span></code></pre></div>
</div>
<p>Beim allerersten Start läuft Stalwart im <strong>Bootstrap-Modus</strong>: Es gibt noch keine Konfiguration,
und Port 8080 ist für die Ersteinrichtung offen. Dabei erzeugt es ein <strong>einmaliges
Administrator-Passwort</strong>, das du aus den Logs abliest:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">docker compose logs <span class="p">|</span> grep -A2 <span class="s2">&#34;temporary administrator&#34;</span></span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">🔑 Stalwart bootstrap mode - temporary administrator account
</span></span><span class="line"><span class="cl">   password: &lt;EINMAL-PASSWORT&gt;</span></span></code></pre></div>
</div>
<p>Notiere dieses Passwort – es wird nur einmal angezeigt. (Wenn du lieber ein festes Passwort
setzt, kannst du in der <code>compose.yaml</code> unter <code>environment:</code> ein
<code>STALWART_RECOVERY_ADMIN=admin:DEIN_PASSWORT</code> hinterlegen.)</p>
<h3 id="schritt-4-anmelden-und-den-einrichtungs-assistenten-durchlaufen">Schritt 4: Anmelden und den Einrichtungs-Assistenten durchlaufen</h3>
<p>Rufe die Weboberfläche im Browser auf: <code>http://DEINE_SERVER_IP:8080/admin</code>. Du landest auf der
Anmeldung. Melde dich als Benutzer <strong><code>admin</code></strong> mit dem Einmal-Passwort aus Schritt 3 an – die
Eingabe erfolgt in zwei Schritten (erst Benutzername, dann Passwort):</p>
<p><figure class="my-6"><img src="/tutorials/stalwart-mailserver/stalwart-login_hu_6a97246da2b059b6.webp" srcset="/tutorials/stalwart-mailserver/stalwart-login_hu_f98585ce477f211.webp 480w, /tutorials/stalwart-mailserver/stalwart-login_hu_6a97246da2b059b6.webp 768w, /tutorials/stalwart-mailserver/stalwart-login_hu_f8ca7e9283e1c12d.webp 1200w, /tutorials/stalwart-mailserver/stalwart-login_hu_dc0b1cbec541fe27.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/stalwart-mailserver/stalwart-login_hu_bf8b30e5adbfa6dc.webp"
    alt="Die Anmeldemaske der Stalwart-Weboberfläche mit Feld für den Benutzernamen." title="Der Login der Stalwart-Weboberfläche."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Der Login der Stalwart-Weboberfläche.</figcaption></figure></p>
<p>Nach der Anmeldung begrüßt dich der <strong>Einrichtungs-Assistent</strong>. Im ersten Schritt legst du die
<strong>Server-Identität</strong> fest:</p>
<ul>
<li><strong>Server Hostname:</strong> <code>mail.DEINE_DOMAIN</code> – der FQDN aus deinem A-Record.</li>
<li><strong>Default Email Domain:</strong> <code>DEINE_DOMAIN</code> – deine Mail-Domain.</li>
<li><strong>Automatically Obtain TLS Certificate</strong> aktiviert lassen – Stalwart holt das Let&rsquo;s-Encrypt-Zertifikat
selbst. Dafür muss <strong>Port 443</strong> von außen erreichbar sein: Stalwart nutzt standardmäßig die
<strong>TLS-ALPN-01</strong>-Challenge über 443, Port 80 braucht es dafür nicht.</li>
<li><strong>Generate Email Signing Keys</strong> aktiviert lassen – das erzeugt gleich deine <strong>DKIM-Schlüssel</strong>.</li>
</ul>
<p><figure class="my-6"><img src="/tutorials/stalwart-mailserver/stalwart-ersteinrichtung_hu_296e4e2801320a99.webp" srcset="/tutorials/stalwart-mailserver/stalwart-ersteinrichtung_hu_6414bf32979fd589.webp 480w, /tutorials/stalwart-mailserver/stalwart-ersteinrichtung_hu_296e4e2801320a99.webp 768w, /tutorials/stalwart-mailserver/stalwart-ersteinrichtung_hu_a27e4938f244fea7.webp 1200w, /tutorials/stalwart-mailserver/stalwart-ersteinrichtung_hu_8c9c2eb13d269dce.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/stalwart-mailserver/stalwart-ersteinrichtung_hu_832316163c36a06e.webp"
    alt="Der Ersteinrichtungs-Assistent von Stalwart mit den Feldern für Server-Hostname und Standard-Domain." title="Schritt 1 des Assistenten: die Server-Identität."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Schritt 1 des Assistenten: die Server-Identität.</figcaption></figure></p>
<p>Klick dich durch die weiteren Schritte des Assistenten:</p>
<ul>
<li><strong>Speicher (Storage):</strong> Die Voreinstellung <em>RocksDB</em> ist ein eingebetteter Schlüssel-Wert-Speicher
und für Einzelserver-Setups perfekt – kein externer Datenbankserver nötig. Nur für große,
geclusterte Installationen greifst du zu PostgreSQL o. Ä.</li>
<li><strong>Verzeichnis (Directory):</strong> Das <em>interne Verzeichnis</em> verwaltet Konten und Passwörter direkt in
Stalwart. Wer bereits ein zentrales LDAP/Active Directory betreibt, kann es hier stattdessen
anbinden – für den Einstieg bleibst du beim internen Verzeichnis.</li>
<li><strong>Logging:</strong> Legt fest, wie ausführlich Stalwart protokolliert. <code>Info</code> ist im Alltag ein guter
Kompromiss; bei Problemen drehst du kurzzeitig auf <code>Debug</code>.</li>
<li><strong>DNS:</strong> Für den Anfang genügt die manuelle Verwaltung – die anzulegenden Records zeigt dir
Stalwart später unter der jeweiligen Domain an.</li>
</ul>
<p>Zum Abschluss erzeugt Stalwart dein <strong>dauerhaftes Administrator-Konto</strong> und zeigt dessen Passwort
<strong>ein einziges Mal</strong> an – schreib es dir sofort weg. Ab jetzt ist der Bootstrap-Modus beendet und
Port 8080 nicht mehr offen für die Einrichtung; die Konsole erreichst du künftig über HTTPS.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-herb-400 bg-herb-50 dark:border-herb-700 dark:bg-herb-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🧑‍🍳</span>Schon ein Reverse Proxy im Einsatz?
  </p>
  <div class="prose-kitchen text-sm">Anders als klassische Mailserver kann Stalwart seine <strong>Weboberfläche</strong> problemlos hinter einem
bestehenden <a href="/tutorials/reverse-proxy-traefik/">Traefik</a> laufen – route dann einfach den HTTP-Port
<strong>8080</strong> dorthin. Die <strong>Mail-Ports</strong> (25, 465, 587, 993 …) müssen aber weiterhin direkt am Server
anliegen, denn sie sprechen kein HTTP und lassen sich nicht über einen HTTP-Proxy leiten.</div>
</div>
<h3 id="schritt-5-domain-und-erstes-postfach-anlegen">Schritt 5: Domain und erstes Postfach anlegen</h3>
<p>Nach dem Setup bist du in der <strong>Verwaltungskonsole</strong>. Über die linke Navigation erreichst du
<em>Directory → Domains</em> und <em>Directory → Accounts</em>. Lege bei Bedarf weitere Domains an und dann dein
erstes Postfach:</p>
<p><figure class="my-6"><img src="/tutorials/stalwart-mailserver/stalwart-konsole_hu_2ef5c76733e28449.webp" srcset="/tutorials/stalwart-mailserver/stalwart-konsole_hu_9fc8af4a5ccc8ba2.webp 480w, /tutorials/stalwart-mailserver/stalwart-konsole_hu_2ef5c76733e28449.webp 768w, /tutorials/stalwart-mailserver/stalwart-konsole_hu_afc30161afa073ab.webp 1200w, /tutorials/stalwart-mailserver/stalwart-konsole_hu_19cde03b3a66ce0e.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/stalwart-mailserver/stalwart-konsole_hu_bd242b0b392c7da7.webp"
    alt="Die Stalwart-Verwaltungskonsole mit der Kontenübersicht." title="Die Verwaltungskonsole: Konten verwalten."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Die Verwaltungskonsole: Konten verwalten.</figcaption></figure></p>
<p>Über <strong>Create account</strong> (bzw. <em>Konto anlegen</em>) legst du ein Postfach an – E-Mail-Adresse,
angezeigter Name und ein starkes Passwort (Passwortmanager!). Dieses Konto kann sich anschließend
per IMAP/JMAP und SMTP anmelden:</p>
<p><figure class="my-6"><img src="/tutorials/stalwart-mailserver/stalwart-konto-anlegen_hu_1a34a4be611e9c1c.webp" srcset="/tutorials/stalwart-mailserver/stalwart-konto-anlegen_hu_861e75c9986096d3.webp 480w, /tutorials/stalwart-mailserver/stalwart-konto-anlegen_hu_1a34a4be611e9c1c.webp 768w, /tutorials/stalwart-mailserver/stalwart-konto-anlegen_hu_6f6515fa35490bf6.webp 1200w, /tutorials/stalwart-mailserver/stalwart-konto-anlegen_hu_27303f9e2190956f.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/stalwart-mailserver/stalwart-konto-anlegen_hu_630cbc48b81a2a18.webp"
    alt="Das Formular zum Anlegen eines neuen Postfachs in Stalwart." title="Ein neues Postfach anlegen."
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Ein neues Postfach anlegen.</figcaption></figure></p>
<h3 id="schritt-6-in-einem-mailprogramm-einrichten">Schritt 6: In einem Mailprogramm einrichten</h3>
<p>Trage das neue Konto in deinem Mailprogramm ein. Stalwart unterstützt <strong>Autodiscovery</strong>, meist
reicht also E-Mail-Adresse und Passwort. Manuell nutzt du:</p>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">IMAP:        mail.DEINE_DOMAIN, Port 993, SSL/TLS
</span></span><span class="line"><span class="cl">SMTP:        mail.DEINE_DOMAIN, Port 587, STARTTLS
</span></span><span class="line"><span class="cl">Benutzer:    die volle E-Mail-Adresse</span></span></code></pre></div>
</div>
<p>Neben dem altbewährten IMAP spricht Stalwart auch <strong>JMAP</strong> – ein modernes, JSON-basiertes Protokoll,
das für heutige Netze entworfen wurde. JMAP überträgt nur echte Änderungen statt ganze Ordner neu
zu synchronisieren, kommt mit einer einzigen Verbindung aus und ist damit spürbar sparsamer mit
Akku und Datenvolumen – gerade auf dem Handy. Unterstützt dein Mail-Client JMAP (z. B. die
Thunderbird-Familie in neueren Versionen), profitierst du direkt davon; ansonsten bleibst du bei
IMAP, das genauso funktioniert.</p>
<p>Eine Mail von dir an dich selbst sollte sofort im Posteingang landen – das beweist, dass lokale
Zustellung, IMAP und SMTP stehen. Der Härtetest ist aber das Senden <strong>nach außen</strong> und der Empfang
<strong>von außen</strong>, und da entscheidet die Zustellbarkeit.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-sky-300 bg-sky-50 dark:border-sky-800 dark:bg-sky-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">ℹ️</span>Hinweis
  </p>
  <div class="prose-kitchen text-sm">Prüfe deine Zustellbarkeit nach dem Setup mit einem Dienst wie
<a href="https://www.mail-tester.com">mail-tester.com</a>: Er bewertet SPF, DKIM, DMARC und Reverse DNS. Wie
du auf die volle Punktzahl kommst, ist Thema des Zustellbarkeits-Tutorials.</div>
</div>
<h3 id="schritt-7-spam-filter-und-sieve-regeln">Schritt 7: Spam-Filter und Sieve-Regeln</h3>
<p>Ein großer Vorteil von Stalwart: Der <strong>Spam- und Phishing-Filter ist bereits eingebaut</strong> und aktiv
– du musst keinen separaten Rspamd-Container betreiben und pflegen. Er bewertet eingehende Mails
anhand zahlreicher Merkmale (Reputation, SPF/DKIM/DMARC-Ergebnis, Inhaltsheuristiken) und markiert
oder blockiert Verdächtiges. In der Konsole unter <em>Settings → Spam Filter</em> kannst du die
Empfindlichkeit anpassen und Absender auf Allow- oder Blocklisten setzen.</p>
<p>Für eigene Regeln beim Ein- und Ausgang unterstützt Stalwart <strong>Sieve</strong> – die standardisierte
Filtersprache. Damit sortierst du z. B. Newsletter automatisch in einen Ordner oder leitest
bestimmte Absender weiter. Sieve-Skripte verwaltest du serverseitig (über ManageSieve auf Port
4190) oder direkt in der Weboberfläche, sodass die Regeln unabhängig vom Mailprogramm greifen –
auch dann, wenn dein Rechner aus ist.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-herb-400 bg-herb-50 dark:border-herb-700 dark:bg-herb-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🧑‍🍳</span>Tipp
  </p>
  <div class="prose-kitchen text-sm">Weil der Filter serverseitig arbeitet, gilt er für <strong>alle</strong> deine Geräte gleichzeitig. Eine einmal
angelegte Sieve-Regel oder eine Spam-Entscheidung wirkt am Handy genauso wie am Laptop – anders als
bei clientseitigen Filtern, die du auf jedem Gerät neu einrichten müsstest.</div>
</div>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<div class="troubleshoot not-prose">
<p><strong>Die Weboberfläche auf Port 8080 antwortet nicht.</strong> Der Container ist noch am Hochfahren oder Port
8080 ist belegt/geblockt. <code>docker compose ps</code> prüfen, <code>docker compose logs</code> lesen und
sicherstellen, dass die <a href="/tutorials/firewall-ufw-einrichten/">Firewall</a> Port 8080 (und später 443)
durchlässt.</p>
<p><strong>Ich habe das Bootstrap-Passwort verpasst.</strong> Es wird nur einmal geloggt. Setze in der
<code>compose.yaml</code> ein <code>STALWART_RECOVERY_ADMIN=admin:DEIN_PASSWORT</code> unter <code>environment:</code> und starte
mit <code>docker compose up -d</code> neu – damit hast du ein festes Recovery-Admin-Konto.</p>
<p><strong>Kein TLS-Zertifikat, die HTTPS-Adresse zeigt eine Warnung.</strong> Let&rsquo;s Encrypt erreicht deinen Server
nicht auf Port 443 (Stalwart nutzt die TLS-ALPN-01-Challenge über 443), oder der A-Record von
<code>mail.DEINE_DOMAIN</code> stimmt nicht. A-Record prüfen und Port 443 in der Firewall öffnen – Stalwart
wiederholt die Zertifikatsanforderung danach automatisch.</p>
<p><strong>Mails nach außen bleiben hängen, Logs zeigen Timeouts auf Port 25.</strong> Dein Provider sperrt
ausgehenden SMTP-Verkehr auf Port 25. Port 25 ausgehend beim Provider freischalten lassen (bei
netcup per Ticket). Ohne das ist keine Zustellung an fremde Server möglich.</p>
<p><strong>Andere Server nehmen deine Mails nicht an oder sie landen im Spam.</strong> Fehlender oder falscher
PTR-Eintrag, kein SPF/DKIM/DMARC. Das ist kein Fehler von Stalwart, sondern Sache der
DNS-/Reputations-Konfiguration – siehe das Zustellbarkeits-Tutorial.</p>

</div>

<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<p><strong>Updates.</strong> Stalwart ist ein einzelner Container – ein Update ist entsprechend einfach:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /opt/stalwart
</span></span><span class="line"><span class="cl">docker compose pull <span class="o">&amp;&amp;</span> docker compose up -d</span></span></code></pre></div>
</div>
<p>Lies vor größeren Sprüngen die Release-Notes auf
<a href="https://github.com/stalwartlabs/stalwart/releases">GitHub</a>; bleib bei einem konkreten Versions-Tag
(wie hier <code>v0.16.14</code>) statt <code>latest</code>, damit Updates reproduzierbar bleiben.</p>
<p><strong>Backups.</strong> Alle Daten – Nachrichten, Konten, Konfiguration und die <strong>DKIM-Schlüssel</strong> – liegen im
Volume <code>stalwart_data</code>. Sichere dieses Volume regelmäßig weg vom Server, am saubersten verschlüsselt
mit <a href="/tutorials/backups-mit-restic/">restic</a>. Weil Stalwart die Daten im laufenden Betrieb
schreibt, sicherst du am konsistentesten, indem du den Container kurz stoppst
(<code>docker compose stop</code>), das Volume sicherst und wieder startest. Die DKIM-Schlüssel sind besonders
wichtig: Gehen sie verloren, brechen nach einer Wiederherstellung deine Signaturen, bis du die
DNS-Records neu setzt. Ein Backup, das du nie zurückgespielt hast, ist nur ein Hoffnungswert –
teste die Wiederherstellung einmal auf einem Testsystem.</p>
<p><strong>Reputation im Blick behalten.</strong> Prüfe gelegentlich, ob deine Server-IP auf einer Blockliste
gelandet ist, und wirf einen Blick in die Stalwart-Konsole unter <em>Observability</em>. Ein
kompromittiertes Postfach, das Spam verschickt, ruiniert die Reputation deiner ganzen Domain
schnell.</p>
]]></content:encoded></item></channel></rss>