mailcow-dockerized-docs/de/third_party/roundcube/third_party-roundcube/index.html

3762 Zeilen
Kein EOL
135 KiB
HTML

<!doctype html>
<html lang="de" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://docs.mailcow.email/de/third_party/roundcube/third_party-roundcube/">
<link rel="prev" href="../../portainer/third_party-portainer/">
<link rel="icon" href="../../../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18">
<title>Roundcube - mailcow: dockerized Dokumentation</title>
<link rel="stylesheet" href="../../../../assets/stylesheets/main.26e3688c.min.css">
<link rel="stylesheet" href="../../../../assets/stylesheets/palette.ecc896b0.min.css">
<link rel="stylesheet" href="../../../../assets/stylesheets/extra.css">
<script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="Roundcube - mailcow: dockerized documentation" >
<meta property="og:description" content="None" >
<meta property="og:image" content="https://docs.mailcow.email/assets/images/social/third_party/roundcube/third_party-roundcube.de.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="https://docs.mailcow.email/de/third_party/roundcube/third_party-roundcube/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="Roundcube - mailcow: dockerized documentation" >
<meta name="twitter:description" content="None" >
<meta name="twitter:image" content="https://docs.mailcow.email/assets/images/social/third_party/roundcube/third_party-roundcube.de.png" >
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#installation-von-roundcube" class="md-skip">
Zum Inhalt
</a>
</div>
<div data-md-component="announce">
<aside class="md-banner">
<div class="md-banner__inner md-grid md-typeset">
<button class="md-banner__button md-icon" aria-label="Nicht mehr anzeigen">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
<center><h4>Alle Befehle sind gemäß der Syntax des <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/linux/">Docker Compose Plugin</a> und der <a style="color:#6390e5;" href="https://docs.docker.com/compose/install/other/">Standalone Variante</a> anwählbar.<br></h4></center>
</div>
<script>var content,el=document.querySelector("[data-md-component=announce]");el&&(content=el.querySelector(".md-typeset"),__md_hash(content.innerHTML)===__md_get("__announce")&&(el.hidden=!0))</script>
</aside>
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Kopfzeile">
<a href="../../../" title="mailcow: dockerized Dokumentation" class="md-header__button md-logo" aria-label="mailcow: dockerized Dokumentation" data-md-component="logo">
<img src="../../../../assets/images/logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
mailcow: dockerized Dokumentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Roundcube
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
</label>
</form>
<div class="md-header__option">
<div class="md-select">
<button class="md-header__button md-icon" aria-label="Sprache wechseln">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"/></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a href="../../../../third_party/roundcube/third_party-roundcube/" hreflang="en" class="md-select__link">
English
</a>
</li>
<li class="md-select__item">
<a href="./" hreflang="de" class="md-select__link">
Deutsch
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Suche" placeholder="Suche" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Suche">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Teilen" aria-label="Teilen" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Zurücksetzen" aria-label="Zurücksetzen" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Suche wird initialisiert
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/mailcow/mailcow-dockerized" title="Zum Repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
mailcow/mailcow-dockerized
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../../" title="mailcow: dockerized Dokumentation" class="md-nav__button md-logo" aria-label="mailcow: dockerized Dokumentation" data-md-component="logo">
<img src="../../../../assets/images/logo.svg" alt="logo">
</a>
mailcow: dockerized Dokumentation
</label>
<div class="md-nav__source">
<a href="https://github.com/mailcow/mailcow-dockerized" title="Zum Repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
mailcow/mailcow-dockerized
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../" class="md-nav__link">
Informationen & Support
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
Voraussetzungen
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Voraussetzungen
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../prerequisite/prerequisite-system/" class="md-nav__link">
Systemvoraussetzungen
</a>
</li>
<li class="md-nav__item">
<a href="../../../prerequisite/prerequisite-dns/" class="md-nav__link">
DNS Einstellungen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
Installation, Update und Migration
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Installation, Update und Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../i_u_m/i_u_m_install/" class="md-nav__link">
Installation
</a>
</li>
<li class="md-nav__item">
<a href="../../../i_u_m/i_u_m_update/" class="md-nav__link">
Update
</a>
</li>
<li class="md-nav__item">
<a href="../../../i_u_m/i_u_m_migration/" class="md-nav__link">
Migration
</a>
</li>
<li class="md-nav__item">
<a href="../../../i_u_m/i_u_m_deinstall/" class="md-nav__link">
Deinstallation
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
Post-Installationsaufgaben
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Post-Installationsaufgaben
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-ssl/" class="md-nav__link">
Erweitertes SSL
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-disable_ipv6/" class="md-nav__link">
IPv6 deaktivieren
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-dmarc_reporting/" class="md-nav__link">
DMARC Reporting
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-ip_bindings/" class="md-nav__link">
IP-Bindings
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-local_mta/" class="md-nav__link">
Lokaler MTA auf Docker-Host
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-logging/" class="md-nav__link">
Logging
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
<label class="md-nav__link" for="__nav_4_7" id="__nav_4_7_label" tabindex="0">
Reverse Proxy
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_7">
<span class="md-nav__icon md-icon"></span>
Reverse Proxy
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../post_installation/reverse-proxy/r_p/" class="md-nav__link">
Übersicht
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/reverse-proxy/r_p-apache24/" class="md-nav__link">
Apache 2.4
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/reverse-proxy/r_p-nginx/" class="md-nav__link">
Nginx
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/reverse-proxy/r_p-haproxy/" class="md-nav__link">
HAProxy (von der Community unterstützt)
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/reverse-proxy/r_p-traefik2/" class="md-nav__link">
Traefik v2 (von der Community unterstützt)
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/reverse-proxy/r_p-caddy2/" class="md-nav__link">
Caddy v2 (von der Community unterstützt)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-rspamd_ui/" class="md-nav__link">
Rspamd UI
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-snat/" class="md-nav__link">
SNAT
</a>
</li>
<li class="md-nav__item">
<a href="../../../post_installation/firststeps-sync_jobs_migration/" class="md-nav__link">
Migration mit Sync Jobs
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
Modelle
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Modelle
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../models/model-acl/" class="md-nav__link">
ACL
</a>
</li>
<li class="md-nav__item">
<a href="../../../models/model-passwd/" class="md-nav__link">
Passwort-Hashing
</a>
</li>
<li class="md-nav__item">
<a href="../../../models/model-sender_rcv/" class="md-nav__link">
Sender- und Empfängermodell
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
Allgemeine Fehlersuche
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Allgemeine Fehlersuche
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug/" class="md-nav__link">
Einführung
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-admin_login_sogo/" class="md-nav__link">
Admin-Anmeldung bei SOGo
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-rspamd_memory_leaks/" class="md-nav__link">
Fortgeschritten: Memory-Leaks in Rspamd finden
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-attach_service/" class="md-nav__link">
In einen Container wechseln (CLI)
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-common_problems/" class="md-nav__link">
Häufig auftretende Probleme
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-logs/" class="md-nav__link">
Logs
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-mysql_upgrade/" class="md-nav__link">
Manuelles MySQL-Upgrade
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-mysql_aria/" class="md-nav__link">
Abgestürzte Aria-Speicher-Engine wiederherstellen
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-rm_volumes/" class="md-nav__link">
Persistente Daten löschen
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-reset_pw/" class="md-nav__link">
Passwörter zurücksetzen (inkl. SQL)
</a>
</li>
<li class="md-nav__item">
<a href="../../../troubleshooting/debug-reset_tls/" class="md-nav__link">
TLS-Zertifikate zurücksetzen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
Sichern & Wiederherstellen
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Sichern & Wiederherstellen
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_1" >
<label class="md-nav__link" for="__nav_7_1" id="__nav_7_1_label" tabindex="0">
Sicherung und Wiederherstellung von Komponenten
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_1">
<span class="md-nav__icon md-icon"></span>
Sicherung und Wiederherstellung von Komponenten
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../backup_restore/b_n_r-backup/" class="md-nav__link">
Sicherung
</a>
</li>
<li class="md-nav__item">
<a href="../../../backup_restore/b_n_r-restore/" class="md-nav__link">
Wiederherstellung
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../backup_restore/b_n_r-coldstandby/" class="md-nav__link">
Cold-standby (rollende Sicherung)
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_3" >
<label class="md-nav__link" for="__nav_7_3" id="__nav_7_3_label" tabindex="0">
Manuelle Sicherung
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_3">
<span class="md-nav__icon md-icon"></span>
Manuelle Sicherung
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../backup_restore/b_n_r-backup_restore-maildir/" class="md-nav__link">
Mail-Verzeichnis
</a>
</li>
<li class="md-nav__item">
<a href="../../../backup_restore/b_n_r-backup_restore-mysql/" class="md-nav__link">
MySQL (mysqldump)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_4" >
<label class="md-nav__link" for="__nav_7_4" id="__nav_7_4_label" tabindex="0">
Interne mailcow Sicherungen
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_4">
<span class="md-nav__icon md-icon"></span>
Interne mailcow Sicherungen
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../backup_restore/b_n_r-accidental_deletion/" class="md-nav__link">
Versehentlich gelöschte Daten wiederherstellen
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
Anleitungen/Beispiele
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Anleitungen/Beispiele
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_1" >
<label class="md-nav__link" for="__nav_8_1" id="__nav_8_1_label" tabindex="0">
mailcow UI
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_1">
<span class="md-nav__icon md-icon"></span>
mailcow UI
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-bl_wl/" class="md-nav__link">
Blacklist / Whitelist
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-config/" class="md-nav__link">
Konfiguration
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-css/" class="md-nav__link">
CSS-Überschreibungen
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-netfilter/" class="md-nav__link">
Netfilter
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-pushover/" class="md-nav__link">
Pushover
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter/" class="md-nav__link">
Spamfilter
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-sub_addressing/" class="md-nav__link">
Sub-Adressierung
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-tags/" class="md-nav__link">
Tags (für Domains und Mailboxen)
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-spamalias/" class="md-nav__link">
Temporäre E-Mail-Aliase
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class="md-nav__link">
Zwei-Faktor Authentifizierung
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/mailcow-UI/u_e-mailcow_ui-fido/" class="md-nav__link">
WebAuthn / FIDO2
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_2" >
<label class="md-nav__link" for="__nav_8_2" id="__nav_8_2_label" tabindex="0">
Postfix
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_2">
<span class="md-nav__icon md-icon"></span>
Postfix
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-trust_networks/" class="md-nav__link">
Vertrauenswürdige Netzwerke hinzufügen
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-custom_transport/" class="md-nav__link">
Benutzerdefinierte Transportmaps
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-extra_cf/" class="md-nav__link">
main.cf anpassen/erweitern
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-disable_sender_verification/" class="md-nav__link">
Überprüfung der Absenderadressen deaktivieren
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-attachment_size/" class="md-nav__link">
Maximale Nachrichtengröße (Größe des Anhangs)
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-relayhost/" class="md-nav__link">
Relayhosts
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-pflogsumm/" class="md-nav__link">
Statistik mit pflogsumm
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Postfix/u_e-postfix-postscreen_whitelist/" class="md-nav__link">
IP in Postscreen auf die Whitelist setzen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_3" >
<label class="md-nav__link" for="__nav_8_3" id="__nav_8_3_label" tabindex="0">
Unbound
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_3">
<span class="md-nav__icon md-icon"></span>
Unbound
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/Unbound/u_e-unbound-fwd/" class="md-nav__link">
Verwendung eines externen DNS-Dienstes
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_4" >
<label class="md-nav__link" for="__nav_8_4" id="__nav_8_4_label" tabindex="0">
Dovecot
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_4">
<span class="md-nav__icon md-icon"></span>
Dovecot
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-extra_conf/" class="md-nav__link">
Anpassen/Erweitern von dovecot.conf
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-any_acl/" class="md-nav__link">
Aktivierung von "any" ACL-Einstellungen
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-expunge/" class="md-nav__link">
Löschen der Mails eines Benutzers
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-fts/" class="md-nav__link">
FTS (Solr)
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-idle_interval/" class="md-nav__link">
IMAP IDLE-Intervall
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-mail-crypt/" class="md-nav__link">
Mail crypt
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-more/" class="md-nav__link">
Weitere Beispiele mit DOVEADM
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-vmail-volume/" class="md-nav__link">
Maildir verschieben (vmail)
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-performance/" class="md-nav__link">
Performance Optimierungen
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-public_folder/" class="md-nav__link">
Öffentliche Ordner
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-static_master/" class="md-nav__link">
Statischer Hauptbenutzer
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Dovecot/u_e-dovecot-catchall_vacation/" class="md-nav__link">
Urlaubsantworten für Catchall-Adressen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_5" >
<label class="md-nav__link" for="__nav_8_5" id="__nav_8_5_label" tabindex="0">
Nginx
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_5">
<span class="md-nav__icon md-icon"></span>
Nginx
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/Nginx/u_e-nginx_webmail-site/" class="md-nav__link">
Subdomäne webmail.example.org erstellen
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Nginx/u_e-nginx_custom/" class="md-nav__link">
Benutzerdefinierte Seiten
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_6" >
<label class="md-nav__link" for="__nav_8_6" id="__nav_8_6_label" tabindex="0">
Watchdog
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_6">
<span class="md-nav__icon md-icon"></span>
Watchdog
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/Watchdog/u_e-watchdog-thresholds/" class="md-nav__link">
Thresholds
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Redis/u_e-redis/" class="md-nav__link">
Redis
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/Rspamd/u_e-rspamd/" class="md-nav__link">
Rspamd
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_9" >
<label class="md-nav__link" for="__nav_8_9" id="__nav_8_9_label" tabindex="0">
ClamAV
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_9">
<span class="md-nav__icon md-icon"></span>
ClamAV
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/ClamAV/u_e-clamav-whitelist/" class="md-nav__link">
Whitelist
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/ClamAV/u_e-clamav-additional_dbs/" class="md-nav__link">
Weitere Datenbanken
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/SOGo/u_e-sogo/" class="md-nav__link">
SOGo
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_11" >
<label class="md-nav__link" for="__nav_8_11" id="__nav_8_11_label" tabindex="0">
Docker
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_11">
<span class="md-nav__icon md-icon"></span>
Docker
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../manual-guides/Docker/u_e-docker-cust_dockerfiles/" class="md-nav__link">
Dockerfiles anpassen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/u_e-why_unbound/" class="md-nav__link">
Warum unbound?
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/u_e-autodiscover_config/" class="md-nav__link">
Autodiscover / Autoconfig
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/u_e-80_to_443/" class="md-nav__link">
HTTP auf HTTPS umleiten
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/u_e-reeanble-weak-protocols/" class="md-nav__link">
TLS 1.0 und TLS 1.1 wieder aktivieren
</a>
</li>
<li class="md-nav__item">
<a href="../../../manual-guides/u_e-update-hooks/" class="md-nav__link">
Skripte vor und nach Aktualisierungen ausführen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
Client-Konfiguration
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Client-Konfiguration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../client/client/" class="md-nav__link">
Übersicht
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-android/" class="md-nav__link">
Android
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-apple/" class="md-nav__link">
Apple macOS / iOS
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-emclient/" class="md-nav__link">
eM Client
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-kontact/" class="md-nav__link">
KDE Kontact
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-outlook/" class="md-nav__link">
Microsoft Outlook
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-thunderbird/" class="md-nav__link">
Mozilla Thunderbird
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-windows/" class="md-nav__link">
Windows Mail
</a>
</li>
<li class="md-nav__item">
<a href="../../../client/client-manual/" class="md-nav__link">
Manuelle Konfiguration
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" checked>
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
Anwendungen von Drittanbietern
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Anwendungen von Drittanbietern
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../borgmatic/third_party-borgmatic/" class="md-nav__link">
Borgmatic-Sicherung
</a>
</li>
<li class="md-nav__item">
<a href="../../checkmk/u_e-checkmk/" class="md-nav__link">
CheckMK
</a>
</li>
<li class="md-nav__item">
<a href="../../exchange_onprem/third_party-exchange_onprem/" class="md-nav__link">
Exchange Hybrid Setup
</a>
</li>
<li class="md-nav__item">
<a href="../../gitea/third_party-gitea/" class="md-nav__link">
Gitea
</a>
</li>
<li class="md-nav__item">
<a href="../../gogs/third_party-gogs/" class="md-nav__link">
Gogs
</a>
</li>
<li class="md-nav__item">
<a href="../../mailman3/third_party-mailman3/" class="md-nav__link">
Mailman 3
</a>
</li>
<li class="md-nav__item">
<a href="../../mailpiler/third_party-mailpiler_integration/" class="md-nav__link">
Mailpiler Integration
</a>
</li>
<li class="md-nav__item">
<a href="../../nextcloud/third_party-nextcloud/" class="md-nav__link">
Nextcloud
</a>
</li>
<li class="md-nav__item">
<a href="../../portainer/third_party-portainer/" class="md-nav__link">
Portainer
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Roundcube
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
Roundcube
</a>
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#installation-von-roundcube" class="md-nav__link">
Installation von Roundcube
</a>
<nav class="md-nav" aria-label="Installation von Roundcube">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#hinweise-zur-verwendung-von-composer" class="md-nav__link">
Hinweise zur Verwendung von composer
</a>
</li>
<li class="md-nav__item">
<a href="#vorbereitung" class="md-nav__link">
Vorbereitung
</a>
</li>
<li class="md-nav__item">
<a href="#optional-rechtschreibprufung" class="md-nav__link">
Optional: Rechtschreibprüfung
</a>
</li>
<li class="md-nav__item">
<a href="#installation-des-mime-typ-verzeichnisses" class="md-nav__link">
Installation des MIME-Typ-Verzeichnisses
</a>
</li>
<li class="md-nav__item">
<a href="#anlegen-der-roundcube-datenbank" class="md-nav__link">
Anlegen der Roundcube-Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#roundcube-konfigurationsdatei" class="md-nav__link">
Roundcube-Konfigurationsdatei
</a>
</li>
<li class="md-nav__item">
<a href="#initialisierung-der-datenbank" class="md-nav__link">
Initialisierung der Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#webserver-konfiguration" class="md-nav__link">
Webserver-Konfiguration
</a>
</li>
<li class="md-nav__item">
<a href="#deaktivieren-und-entfernen-des-installationsprogramms" class="md-nav__link">
Deaktivieren und entfernen des Installationsprogramms
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-der-roundcube-abhangigkeiten" class="md-nav__link">
Aktualisierung der Roundcube-Abhängigkeiten
</a>
</li>
<li class="md-nav__item">
<a href="#ermoglichen-der-klartext-authentifizierung-fur-den-php-fpm-container-ohne-die-verwendung-von-tls" class="md-nav__link">
Ermöglichen der Klartext-Authentifizierung für den php-fpm-Container ohne die Verwendung von TLS
</a>
</li>
<li class="md-nav__item">
<a href="#ofelia-job-fur-roundcube-aufraumtatigkeiten" class="md-nav__link">
Ofelia-Job für Roundcube-Aufräumtätigkeiten
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#optionale-zusatz-funktionalitaten" class="md-nav__link">
Optionale Zusatz-Funktionalitäten
</a>
</li>
<li class="md-nav__item">
<a href="#aktivieren-der-funktion-passwort-andern-in-roundcube" class="md-nav__link">
Aktivieren der Funktion "Passwort ändern" in Roundcube
</a>
</li>
<li class="md-nav__item">
<a href="#carddav-adressbucher-in-roundcube-einbinden" class="md-nav__link">
CardDAV-Adressbücher in Roundcube einbinden
</a>
<nav class="md-nav" aria-label="CardDAV-Adressbücher in Roundcube einbinden">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ubermittlung-der-client-netzwerkadresse-an-dovecot" class="md-nav__link">
Übermittlung der Client-Netzwerkadresse an Dovecot
</a>
</li>
<li class="md-nav__item">
<a href="#roundcube-zur-mailcow-apps-liste-hinzufugen" class="md-nav__link">
Roundcube zur mailcow Apps-Liste hinzufügen
</a>
</li>
<li class="md-nav__item">
<a href="#administratoren-ohne-passwort-in-roundcube-einloggen-lassen" class="md-nav__link">
Administratoren ohne Passwort in Roundcube einloggen lassen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#abschluss-der-installation" class="md-nav__link">
Abschluss der Installation
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-von-roundcube" class="md-nav__link">
Aktualisierung von Roundcube
</a>
<nav class="md-nav" aria-label="Aktualisierung von Roundcube">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#aktualisierung-von-composer-plugins" class="md-nav__link">
Aktualisierung von composer-Plugins
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-des-mime-typ-verzeichnisses" class="md-nav__link">
Aktualisierung des MIME-Typ-Verzeichnisses
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#deinstallation-von-roundcube" class="md-nav__link">
Deinstallation von Roundcube
</a>
<nav class="md-nav" aria-label="Deinstallation von Roundcube">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#entfernen-des-web-verzeichnisses" class="md-nav__link">
Entfernen des Web-Verzeichnisses
</a>
</li>
<li class="md-nav__item">
<a href="#entfernen-der-datenbank" class="md-nav__link">
Entfernen der Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#entfernen-der-konfigurationsanpassungen-fur-mailcow" class="md-nav__link">
Entfernen der Konfigurationsanpassungen für mailcow
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#migration-von-einer-alteren-mailcow-roundcube-installation" class="md-nav__link">
Migration von einer älteren mailcow-Roundcube-Installation
</a>
<nav class="md-nav" aria-label="Migration von einer älteren mailcow-Roundcube-Installation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#anlegen-eines-neuen-roundcube-datenbankbenutzers-und-der-datenbank" class="md-nav__link">
Anlegen eines neuen roundcube-Datenbankbenutzers und der Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#migration-der-roundcube-daten-aus-der-mailcow-datenbank" class="md-nav__link">
Migration der Roundcube-Daten aus der mailcow-Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-der-roundcube-konfiguration" class="md-nav__link">
Aktualisierung der Roundcube-Konfiguration
</a>
</li>
<li class="md-nav__item">
<a href="#umstellung-des-rcmcarddav-plugins-auf-die-installation-mittels-composer" class="md-nav__link">
Umstellung des RCMCardDAV-Plugins auf die Installation mittels composer
</a>
</li>
<li class="md-nav__item">
<a href="#umschalten-von-roundcube-auf-die-neue-datenbank" class="md-nav__link">
Umschalten von Roundcube auf die neue Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#roundcube-web-zugriff-reaktivieren" class="md-nav__link">
Roundcube Web-Zugriff reaktivieren
</a>
</li>
<li class="md-nav__item">
<a href="#andere-anpassungen" class="md-nav__link">
Andere Anpassungen
</a>
</li>
<li class="md-nav__item">
<a href="#entfernen-der-roundcube-tabellen-aus-der-mailcow-datenbank" class="md-nav__link">
Entfernen der Roundcube-Tabellen aus der mailcow-Datenbank
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#installation-von-roundcube" class="md-nav__link">
Installation von Roundcube
</a>
<nav class="md-nav" aria-label="Installation von Roundcube">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#hinweise-zur-verwendung-von-composer" class="md-nav__link">
Hinweise zur Verwendung von composer
</a>
</li>
<li class="md-nav__item">
<a href="#vorbereitung" class="md-nav__link">
Vorbereitung
</a>
</li>
<li class="md-nav__item">
<a href="#optional-rechtschreibprufung" class="md-nav__link">
Optional: Rechtschreibprüfung
</a>
</li>
<li class="md-nav__item">
<a href="#installation-des-mime-typ-verzeichnisses" class="md-nav__link">
Installation des MIME-Typ-Verzeichnisses
</a>
</li>
<li class="md-nav__item">
<a href="#anlegen-der-roundcube-datenbank" class="md-nav__link">
Anlegen der Roundcube-Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#roundcube-konfigurationsdatei" class="md-nav__link">
Roundcube-Konfigurationsdatei
</a>
</li>
<li class="md-nav__item">
<a href="#initialisierung-der-datenbank" class="md-nav__link">
Initialisierung der Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#webserver-konfiguration" class="md-nav__link">
Webserver-Konfiguration
</a>
</li>
<li class="md-nav__item">
<a href="#deaktivieren-und-entfernen-des-installationsprogramms" class="md-nav__link">
Deaktivieren und entfernen des Installationsprogramms
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-der-roundcube-abhangigkeiten" class="md-nav__link">
Aktualisierung der Roundcube-Abhängigkeiten
</a>
</li>
<li class="md-nav__item">
<a href="#ermoglichen-der-klartext-authentifizierung-fur-den-php-fpm-container-ohne-die-verwendung-von-tls" class="md-nav__link">
Ermöglichen der Klartext-Authentifizierung für den php-fpm-Container ohne die Verwendung von TLS
</a>
</li>
<li class="md-nav__item">
<a href="#ofelia-job-fur-roundcube-aufraumtatigkeiten" class="md-nav__link">
Ofelia-Job für Roundcube-Aufräumtätigkeiten
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#optionale-zusatz-funktionalitaten" class="md-nav__link">
Optionale Zusatz-Funktionalitäten
</a>
</li>
<li class="md-nav__item">
<a href="#aktivieren-der-funktion-passwort-andern-in-roundcube" class="md-nav__link">
Aktivieren der Funktion "Passwort ändern" in Roundcube
</a>
</li>
<li class="md-nav__item">
<a href="#carddav-adressbucher-in-roundcube-einbinden" class="md-nav__link">
CardDAV-Adressbücher in Roundcube einbinden
</a>
<nav class="md-nav" aria-label="CardDAV-Adressbücher in Roundcube einbinden">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ubermittlung-der-client-netzwerkadresse-an-dovecot" class="md-nav__link">
Übermittlung der Client-Netzwerkadresse an Dovecot
</a>
</li>
<li class="md-nav__item">
<a href="#roundcube-zur-mailcow-apps-liste-hinzufugen" class="md-nav__link">
Roundcube zur mailcow Apps-Liste hinzufügen
</a>
</li>
<li class="md-nav__item">
<a href="#administratoren-ohne-passwort-in-roundcube-einloggen-lassen" class="md-nav__link">
Administratoren ohne Passwort in Roundcube einloggen lassen
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#abschluss-der-installation" class="md-nav__link">
Abschluss der Installation
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-von-roundcube" class="md-nav__link">
Aktualisierung von Roundcube
</a>
<nav class="md-nav" aria-label="Aktualisierung von Roundcube">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#aktualisierung-von-composer-plugins" class="md-nav__link">
Aktualisierung von composer-Plugins
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-des-mime-typ-verzeichnisses" class="md-nav__link">
Aktualisierung des MIME-Typ-Verzeichnisses
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#deinstallation-von-roundcube" class="md-nav__link">
Deinstallation von Roundcube
</a>
<nav class="md-nav" aria-label="Deinstallation von Roundcube">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#entfernen-des-web-verzeichnisses" class="md-nav__link">
Entfernen des Web-Verzeichnisses
</a>
</li>
<li class="md-nav__item">
<a href="#entfernen-der-datenbank" class="md-nav__link">
Entfernen der Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#entfernen-der-konfigurationsanpassungen-fur-mailcow" class="md-nav__link">
Entfernen der Konfigurationsanpassungen für mailcow
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#migration-von-einer-alteren-mailcow-roundcube-installation" class="md-nav__link">
Migration von einer älteren mailcow-Roundcube-Installation
</a>
<nav class="md-nav" aria-label="Migration von einer älteren mailcow-Roundcube-Installation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#anlegen-eines-neuen-roundcube-datenbankbenutzers-und-der-datenbank" class="md-nav__link">
Anlegen eines neuen roundcube-Datenbankbenutzers und der Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#migration-der-roundcube-daten-aus-der-mailcow-datenbank" class="md-nav__link">
Migration der Roundcube-Daten aus der mailcow-Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#aktualisierung-der-roundcube-konfiguration" class="md-nav__link">
Aktualisierung der Roundcube-Konfiguration
</a>
</li>
<li class="md-nav__item">
<a href="#umstellung-des-rcmcarddav-plugins-auf-die-installation-mittels-composer" class="md-nav__link">
Umstellung des RCMCardDAV-Plugins auf die Installation mittels composer
</a>
</li>
<li class="md-nav__item">
<a href="#umschalten-von-roundcube-auf-die-neue-datenbank" class="md-nav__link">
Umschalten von Roundcube auf die neue Datenbank
</a>
</li>
<li class="md-nav__item">
<a href="#roundcube-web-zugriff-reaktivieren" class="md-nav__link">
Roundcube Web-Zugriff reaktivieren
</a>
</li>
<li class="md-nav__item">
<a href="#andere-anpassungen" class="md-nav__link">
Andere Anpassungen
</a>
</li>
<li class="md-nav__item">
<a href="#entfernen-der-roundcube-tabellen-aus-der-mailcow-datenbank" class="md-nav__link">
Entfernen der Roundcube-Tabellen aus der mailcow-Datenbank
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>Roundcube</h1>
<h2 id="installation-von-roundcube">Installation von Roundcube<a class="headerlink" href="#installation-von-roundcube" title="Permanent link">&para;</a></h2>
<p>Sofern nicht abweichend angegeben wird für alle aufgeführten Kommandos angenommen, dass diese im mailcow
Installationsverzeichnis ausgeführt werden, d. h. dem Verzeichnis, welches <code>mailcow.conf</code> usw. enthält. Bitte führen Sie
die Kommandos nicht blind aus, sondern verstehen Sie was diese bewirken. Keines der Kommandos sollte einen Fehler
ausgeben; sollten Sie dennoch auf einen Fehler stoßen, beheben Sie diesen sofern notwendig bevor Sie mit den
nachfolgenden Kommandos fortfahren.</p>
<h3 id="hinweise-zur-verwendung-von-composer">Hinweise zur Verwendung von composer<a class="headerlink" href="#hinweise-zur-verwendung-von-composer" title="Permanent link">&para;</a></h3>
<p>Diese Anweisungen verwenden das Programm composer zur Aktualisierung der Abhängigkeiten von Roundcube und um
Roundcube-Plugins zu installieren bzw. zu aktualisieren.</p>
<p>Das roundcube-plugin-installer composer Plugin hat eine <a href="https://github.com/roundcube/plugin-installer/issues/38">Design-Schwäche</a>,
die dazu führen kann, dass composer bei Operationen fehlschlägt, im Rahmen derer Pakete aktualisiert oder deinstalliert
werden.</p>
<p>Die Fehlermeldung in diesem Falle besagt, dass eine <code>require</code>-Anweisung in <code>autoload_real.php</code> fehlgeschlagen ist, weil
eine Datei nicht gefunden werden konnte. Beispiel:</p>
<div class="highlight"><pre><span></span><code>In autoload_real.php line 43:
require(/web/rc/vendor/composer/../guzzlehttp/promises/src/functions_include.php): Failed to open stream: No such file or directory
</code></pre></div>
<p>Leider treten diese Fehler relativ häufig auf, sie lassen sich jedoch leicht beheben indem der Autoloader aktualisiert
wird und das fehlgeschlagene Kommando im Anschluss erneut ausgeführt wird:</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>-w<span class="w"> </span>/web/rc<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>composer<span class="w"> </span>dump-autoload<span class="w"> </span>-o
<span class="c1"># Nun das fehlgeschlagene Kommando erneut ausführen</span>
</code></pre></div>
<h3 id="vorbereitung">Vorbereitung<a class="headerlink" href="#vorbereitung" title="Permanent link">&para;</a></h3>
<p>Zunächst laden wir <code>mailcow.conf</code> um Zugriff auf die mailcow-Einstellungen innerhalb der nachfolgenden Kommandos zu
erhalten.</p>
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span>mailcow.conf
</code></pre></div>
<p>Laden Sie Roundcube 1.6.x (prüfen Sie das aktuellste Release und passen Sie die URL entsprechend an) in das web
Verzeichnis herunter und entpacken Sie es (hier <code>rc/</code>):</p>
<div class="highlight"><pre><span></span><code>mkdir<span class="w"> </span>-m<span class="w"> </span><span class="m">755</span><span class="w"> </span>data/web/rc
wget<span class="w"> </span>-O<span class="w"> </span>-<span class="w"> </span>https://github.com/roundcube/roundcubemail/releases/download/1.6.1/roundcubemail-1.6.1-complete.tar.gz<span class="w"> </span><span class="p">|</span><span class="w"> </span>tar<span class="w"> </span>-xvz<span class="w"> </span>--no-same-owner<span class="w"> </span>-C<span class="w"> </span>data/web/rc<span class="w"> </span>--strip-components<span class="o">=</span><span class="m">1</span><span class="w"> </span>-f<span class="w"> </span>-
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>chown<span class="w"> </span>www-data:www-data<span class="w"> </span>/web/rc/logs<span class="w"> </span>/web/rc/temp
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>chown<span class="w"> </span>root:www-data<span class="w"> </span>/web/rc/config
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>chmod<span class="w"> </span><span class="m">750</span><span class="w"> </span>/web/rc/logs<span class="w"> </span>/web/rc/temp<span class="w"> </span>/web/rc/config
</code></pre></div>
<h3 id="optional-rechtschreibprufung">Optional: Rechtschreibprüfung<a class="headerlink" href="#optional-rechtschreibprufung" title="Permanent link">&para;</a></h3>
<p>Wenn Sie eine Rechtschreibprüfung benötigen, erstellen Sie eine Datei <code>data/hooks/phpfpm/aspell.sh</code> mit folgendem Inhalt
und geben Sie dann <code>chmod +x data/hooks/phpfpm/aspell.sh</code> ein. Dadurch wird eine lokale Rechtschreibprüfung installiert.
Beachten Sie, dass die meisten modernen Webbrowser eine eingebaute Rechtschreibprüfung haben, so dass Sie diese
vielleicht nicht benötigen.</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
apk<span class="w"> </span>update
apk<span class="w"> </span>add<span class="w"> </span>aspell-de<span class="w"> </span><span class="c1"># oder jede andere Sprache</span>
</code></pre></div>
<h3 id="installation-des-mime-typ-verzeichnisses">Installation des MIME-Typ-Verzeichnisses<a class="headerlink" href="#installation-des-mime-typ-verzeichnisses" title="Permanent link">&para;</a></h3>
<p>Laden Sie die <code>mime.types</code> Datei herunter, da diese nicht im <code>php-fpm</code>-Container enthalten ist.</p>
<div class="highlight"><pre><span></span><code>wget<span class="w"> </span>-O<span class="w"> </span>data/web/rc/config/mime.types<span class="w"> </span>http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
</code></pre></div>
<h3 id="anlegen-der-roundcube-datenbank">Anlegen der Roundcube-Datenbank<a class="headerlink" href="#anlegen-der-roundcube-datenbank" title="Permanent link">&para;</a></h3>
<p>Erstellen Sie eine Datenbank für Roundcube im mailcow mysql Container. Dies erstellt einen neuen <code>roundcube</code>
Datenbank-Benutzer mit einem Zufallspasswort, welches in die Shell ausgegeben wird und in einer Shell-Variable für die
Verwendung durch die nachfolgenden Kommandos gespeichert wird. Beachten Sie, dass Sie die <code>DBROUNDCUBE</code>-Shell-Variable
manuell auf das ausgegebene Passwort setzen müssen, falls sie den Installationsprozess unterbrechen und später in einer
neuen Shell fortsetzen sollten.</p>
<div class="highlight"><pre><span></span><code><span class="nv">DBROUNDCUBE</span><span class="o">=</span><span class="k">$(</span><span class="nv">LC_ALL</span><span class="o">=</span>C<span class="w"> </span>&lt;/dev/urandom<span class="w"> </span>tr<span class="w"> </span>-dc<span class="w"> </span>A-Za-z0-9<span class="w"> </span><span class="m">2</span>&gt;<span class="w"> </span>/dev/null<span class="w"> </span><span class="p">|</span><span class="w"> </span>head<span class="w"> </span>-c<span class="w"> </span><span class="m">28</span><span class="k">)</span>
<span class="nb">echo</span><span class="w"> </span>Das<span class="w"> </span>Datenbank-Password<span class="w"> </span>für<span class="w"> </span>den<span class="w"> </span>Benutzer<span class="w"> </span>roundcube<span class="w"> </span>lautet<span class="w"> </span><span class="nv">$DBROUNDCUBE</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&quot;</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;CREATE USER &#39;roundcube&#39;@&#39;%&#39; IDENTIFIED BY &#39;</span><span class="si">${</span><span class="nv">DBROUNDCUBE</span><span class="si">}</span><span class="s2">&#39;;&quot;</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;GRANT ALL PRIVILEGES ON roundcubemail.* TO &#39;roundcube&#39;@&#39;%&#39;;&quot;</span>
</code></pre></div>
<h3 id="roundcube-konfigurationsdatei">Roundcube-Konfigurationsdatei<a class="headerlink" href="#roundcube-konfigurationsdatei" title="Permanent link">&para;</a></h3>
<p>Erstellen Sie eine Datei <code>data/web/rc/config/config.inc.php</code> mit dem folgenden Inhalt.
- Die <code>des_key</code>-Einstellung wird auf einen Zufallswert gesetzt. Sie wird u. a. zur Verschlüsselung vorübergehend
gespeicherter IMAP-Passwörter verwendet.
- Die Liste der Plugins kann nach Belieben angepasst werden. Die folgende Liste enthält eine Liste von
Standard-Plugins, welche ich als allgemein nützlich empfinde und die gut mit mailcow zusammenspielen:
- Das archive-Plugin fügt einen Archiv-Button hinzu, der ausgewählte E-Mails in ein konfigurierbares
Archiv-Verzeichnis verschiebt.
- Das managesieve-Plugin bietet eine benutzerfreundliche Oberfläche zur Verwaltung serverseitiger E-Mail-Filter und
Abwesenheits-Benachrichtigungen.
- Das acl-Plugin ermöglicht die Verwaltung von Zugriffskontroll-Listen auf IMAP-Verzeichnissen, mit der Möglichkeit
IMAP-Verzeichnisse mit anderen Benutzern zu teilen.
- Das markasjunk-Plugin fügt Buttons hinzu, um ausgewählte E-Mails als Spam (oder E-Mails im Junk-Verzeichnis nicht
als Spam) zu markieren und diese in das Junk-Verzeichnis (oder zurück in den Posteingang) zu verschieben. Die in
mailcow enthaltenen Sieve-Filter lösen automatisch die zugehörige Lern-Operation in rspamd aus, so dass keine
weitere Konfiguration des Plugins erforderlich ist.
- Das zipdownload-Plugin erlaubt es, mehrere E-Mail-Anhänge oder E-Mails als ZIP-Archiv herunterzuladen.
- Wenn Sie die Rechtschreibprüfung im obigen Schritt nicht installiert haben, entfernen Sie den Parameter
<code>spellcheck_engine</code>.</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/web/rc/config/config.inc.php</span>
<span class="s">&lt;?php</span>
<span class="s">\$config[&#39;db_dsnw&#39;] = &#39;mysql://roundcube:${DBROUNDCUBE}@mysql/roundcubemail&#39;;</span>
<span class="s">\$config[&#39;imap_host&#39;] = &#39;dovecot:143&#39;;</span>
<span class="s">\$config[&#39;smtp_host&#39;] = &#39;postfix:588&#39;;</span>
<span class="s">\$config[&#39;smtp_user&#39;] = &#39;%u&#39;;</span>
<span class="s">\$config[&#39;smtp_pass&#39;] = &#39;%p&#39;;</span>
<span class="s">\$config[&#39;support_url&#39;] = &#39;&#39;;</span>
<span class="s">\$config[&#39;product_name&#39;] = &#39;Roundcube Webmail&#39;;</span>
<span class="s">\$config[&#39;cipher_method&#39;] = &#39;chacha20-poly1305&#39;;</span>
<span class="s">\$config[&#39;des_key&#39;] = &#39;$(LC_ALL=C &lt;/dev/urandom tr -dc &quot;A-Za-z0-9 !#$%&amp;()*+,-./:;&lt;=&gt;?@[\\]^_{|}~&quot; 2&gt; /dev/null | head -c 32)&#39;;</span>
<span class="s">\$config[&#39;plugins&#39;] = [</span>
<span class="s"> &#39;archive&#39;,</span>
<span class="s"> &#39;managesieve&#39;,</span>
<span class="s"> &#39;acl&#39;,</span>
<span class="s"> &#39;markasjunk&#39;,</span>
<span class="s"> &#39;zipdownload&#39;,</span>
<span class="s">];</span>
<span class="s">\$config[&#39;spellcheck_engine&#39;] = &#39;aspell&#39;;</span>
<span class="s">\$config[&#39;mime_types&#39;] = &#39;/web/rc/config/mime.types&#39;;</span>
<span class="s">\$config[&#39;enable_installer&#39;] = true;</span>
<span class="s">\$config[&#39;managesieve_host&#39;] = &#39;dovecot:4190&#39;;</span>
<span class="s">// Enables separate management interface for vacation responses (out-of-office)</span>
<span class="s">// 0 - no separate section (default); 1 - add Vacation section; 2 - add Vacation section, but hide Filters section</span>
<span class="s">\$config[&#39;managesieve_vacation&#39;] = 1;</span>
<span class="s">EOCONFIG</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>chown<span class="w"> </span>root:www-data<span class="w"> </span>/web/rc/config/config.inc.php
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>chmod<span class="w"> </span><span class="m">640</span><span class="w"> </span>/web/rc/config/config.inc.php
</code></pre></div>
<h3 id="initialisierung-der-datenbank">Initialisierung der Datenbank<a class="headerlink" href="#initialisierung-der-datenbank" title="Permanent link">&para;</a></h3>
<p>Richten Sie Ihren Browser auf <code>https://myserver/rc/installer</code>. Prüfen Sie, dass die Webseite in keinem der Schritte "NOT
OK"-Testergebnisse zeigt. Einige "NOT AVAILABLE"-Testergebnisse sind bzgl. der verschiedenen Datenbank-Erweiterungen
erwartet, von denen nur MySQL benötigt wird.</p>
<p>Initialisieren Sie die Datenbank und verlassen Sie das Installationsprogramm. Es ist nicht notwendig, die
Konfigurationsdatei mit der heruntergeladenen Datei zu aktualisieren, sofern Sie keine Änderungen an den Einstellungen
innerhalb des Installationsprogramms durchgeführt habe, die Sie übernehmen möchten.</p>
<h3 id="webserver-konfiguration">Webserver-Konfiguration<a class="headerlink" href="#webserver-konfiguration" title="Permanent link">&para;</a></h3>
<p>Das Roundcube-Verzeichnis enthält einige Inhalte, die nicht an Web-Nutzer ausgeliefert werden sollen. Wir erstellen
daher eine Konfigurations-Ergänzung für nginx, um nur die öffentlichen Teile von Roundcube im Web zu exponieren:</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/conf/nginx/site.roundcube.custom</span>
<span class="s">location /rc/ {</span>
<span class="s"> alias /web/rc/public_html/;</span>
<span class="s">}</span>
<span class="s">EOCONFIG</span>
</code></pre></div>
<h3 id="deaktivieren-und-entfernen-des-installationsprogramms">Deaktivieren und entfernen des Installationsprogramms<a class="headerlink" href="#deaktivieren-und-entfernen-des-installationsprogramms" title="Permanent link">&para;</a></h3>
<p>Löschen Sie das Verzeichnis <code>data/web/rc/installer</code> nach einer erfolgreichen Installation, und setzen Sie die
<code>enable_installer</code>-Option in <code>data/web/rc/config/config.inc.php</code> auf <code>false</code>:</p>
<div class="highlight"><pre><span></span><code>rm<span class="w"> </span>-r<span class="w"> </span>data/web/rc/installer
sed<span class="w"> </span>-i<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;s/\(\$config\[&#39;enable_installer&#39;\].* = \)true/\1false/&quot;</span><span class="w"> </span>data/web/rc/config/config.inc.php
</code></pre></div>
<h3 id="aktualisierung-der-roundcube-abhangigkeiten">Aktualisierung der Roundcube-Abhängigkeiten<a class="headerlink" href="#aktualisierung-der-roundcube-abhangigkeiten" title="Permanent link">&para;</a></h3>
<p>Dieser Schritt ist nicht unbedingt notwendig, aber zumindest zum Zeitpunkt der Erstellung dieser Anweisungen enthielten
die mit Roundcube ausgelieferten Abhängigkeiten Versionen mit Sicherheitslücken, daher könnte es eine gute Idee sein,
die Abhängigkeiten auf die neusten Versionen zu aktualisieren. Aus demselben Grund sollte composer update hin und wieder
ausgeführt werden.</p>
<div class="highlight"><pre><span></span><code>cp<span class="w"> </span>-n<span class="w"> </span>data/web/rc/composer.json-dist<span class="w"> </span>data/web/rc/composer.json
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>-w<span class="w"> </span>/web/rc<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>composer<span class="w"> </span>update<span class="w"> </span>--no-dev<span class="w"> </span>-o
</code></pre></div>
<p>Sie können außerdem <code>composer audit</code> verwenden, um bekannte Sicherheitslücken in den installierten composer-Paketen
anzuzeigen.</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>-w<span class="w"> </span>/web/rc<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>composer<span class="w"> </span>audit
</code></pre></div>
<h3 id="ermoglichen-der-klartext-authentifizierung-fur-den-php-fpm-container-ohne-die-verwendung-von-tls">Ermöglichen der Klartext-Authentifizierung für den php-fpm-Container ohne die Verwendung von TLS<a class="headerlink" href="#ermoglichen-der-klartext-authentifizierung-fur-den-php-fpm-container-ohne-die-verwendung-von-tls" title="Permanent link">&para;</a></h3>
<p>Wir müssen die Verwendung von Klartext-Authentifizierung über nicht verschlüsselte Verbindungen (innerhalb der
Container-Netzwerks) in Dovecot zulassen, was in der Standard-Installation von mailcow nur für den SOGo-Container
zum gleichen Zweck möglich ist. Danach starten Sie den Dovecot-Container neu, damit die Änderung wirksam wird.</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;&gt;data/conf/dovecot/extra.conf</span>
<span class="s">remote ${IPV4_NETWORK}.0/24 {</span>
<span class="s"> disable_plaintext_auth = no</span>
<span class="s">}</span>
<span class="s">remote ${IPV6_NETWORK} {</span>
<span class="s"> disable_plaintext_auth = no</span>
<span class="s">}</span>
<span class="s">EOCONFIG</span>
docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>dovecot-mailcow
</code></pre></div>
<h3 id="ofelia-job-fur-roundcube-aufraumtatigkeiten">Ofelia-Job für Roundcube-Aufräumtätigkeiten<a class="headerlink" href="#ofelia-job-fur-roundcube-aufraumtatigkeiten" title="Permanent link">&para;</a></h3>
<p>Roundcube muss regelmässig die Datenbank von nicht mehr benötigter Information befreien. Wir legen einen Ofelia-Job an,
der das Roundcube <code>cleandb.sh</code>-Skript regelmässig ausführt.</p>
<p>Um dies zu tun, fügen Sie folgendes zu <code>docker-compose.override.yml</code> hinzu (falls Sie bereits einige Anpassungen für den
php-fpm-Container durchgeführt haben, fügen Sie die Label dem bestehenden Abschnitt hinzu):</p>
<div class="highlight"><pre><span></span><code>version: &#39;2.1&#39;
services:
php-fpm-mailcow:
labels:
ofelia.enabled: &quot;true&quot;
ofelia.job-exec.roundcube_cleandb.schedule: &quot;@every 168h&quot;
ofelia.job-exec.roundcube_cleandb.user: &quot;www-data&quot;
ofelia.job-exec.roundcube_cleandb.command: &quot;/bin/bash -c \&quot;[ -f /web/rc/bin/cleandb.sh ] &amp;&amp; /web/rc/bin/cleandb.sh\&quot;&quot;
</code></pre></div>
<h2 id="optionale-zusatz-funktionalitaten">Optionale Zusatz-Funktionalitäten<a class="headerlink" href="#optionale-zusatz-funktionalitaten" title="Permanent link">&para;</a></h2>
<h2 id="aktivieren-der-funktion-passwort-andern-in-roundcube">Aktivieren der Funktion "Passwort ändern" in Roundcube<a class="headerlink" href="#aktivieren-der-funktion-passwort-andern-in-roundcube" title="Permanent link">&para;</a></h2>
<p>Das Ändern des mailcow Passworts aus der Roundcube-Benutzeroberfläche wird durch das password-Plugin ermöglicht. Wir
konfigurieren dieses zur Verwendung der mailcow-API zur Passwort-Aktualisierung, was es zunächst erfordert, die API zu
aktivieren und den API-Schlüssel zu ermitteln (Lese-/Schreib-Zugriff notwendig). Die API kann in der
mailcow-Administrationsoberfläche aktiviert werden, wo Sie auch den API-Schlüssel finden.</p>
<p>Öffnen Sie <code>data/web/rc/config/config.inc.php</code> und aktivieren Sie das Passwort-Plugin, indem Sie es dem
<code>$config['plugins']</code>-Array hinzufügen, zum Beispiel:</p>
<div class="highlight"><pre><span></span><code><span class="x">$config[&#39;plugins&#39;] = array(</span>
<span class="x"> &#39;archive&#39;,</span>
<span class="x"> &#39;managesieve&#39;,</span>
<span class="x"> &#39;acl&#39;,</span>
<span class="x"> &#39;markasjunk&#39;,</span>
<span class="x"> &#39;zipdownload&#39;,</span>
<span class="x"> &#39;password&#39;,</span>
<span class="x">);</span>
</code></pre></div>
<p>Konfigurieren Sie das password-Plugin (stellen Sie sicher, <strong>**API_KEY**</strong> auf Ihren mailcow Lese-/Schreib-API-Schlüssel
anzupassen):</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/web/rc/plugins/password/config.inc.php</span>
<span class="s">&lt;?php</span>
<span class="s">\$config[&#39;password_driver&#39;] = &#39;mailcow&#39;;</span>
<span class="s">\$config[&#39;password_confirm_current&#39;] = true;</span>
<span class="s">\$config[&#39;password_mailcow_api_host&#39;] = &#39;http://nginx&#39;;</span>
<span class="s">\$config[&#39;password_mailcow_api_token&#39;] = &#39;**API_KEY**&#39;;</span>
<span class="s">EOCONFIG</span>
</code></pre></div>
<p>Hinweis: Sollten Sie die mailcow nginx-Konfiguration so angepasst haben, dass http-Anfragen auf https umgeleitet werden
(wie z. B. <a href="https://docs.mailcow.email/manual-guides/u_e-80_to_443/">hier</a> beschrieben), dann wird die direkte
Verbindung zum nginx-Container via HTTP nicht funktionieren, da nginx kein im Zertifikat enthaltener Hostname ist. In
solchen Fällen setzen Sie <code>password_mailcow_api_host</code> stattdessen auf die öffentliche URI:</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/web/rc/plugins/password/config.inc.php</span>
<span class="s">&lt;?php</span>
<span class="s">\$config[&#39;password_driver&#39;] = &#39;mailcow&#39;;</span>
<span class="s">\$config[&#39;password_confirm_current&#39;] = true;</span>
<span class="s">\$config[&#39;password_mailcow_api_host&#39;] = &#39;https://${MAILCOW_HOSTNAME}&#39;;</span>
<span class="s">\$config[&#39;password_mailcow_api_token&#39;] = &#39;**API_KEY**&#39;;</span>
<span class="s">EOCONFIG</span>
</code></pre></div>
<h2 id="carddav-adressbucher-in-roundcube-einbinden">CardDAV-Adressbücher in Roundcube einbinden<a class="headerlink" href="#carddav-adressbucher-in-roundcube-einbinden" title="Permanent link">&para;</a></h2>
<p>Installieren Sie die neuste v5-Version (die untenstehende Konfiguration ist kompatibel zu v5-Releases) mit composer.
Antworten Sie <code>Y</code>, wenn Sie gefragt werden, ob Sie das Plugin aktivieren möchten.</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>-w<span class="w"> </span>/web/rc<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>composer<span class="w"> </span>require<span class="w"> </span>--update-no-dev<span class="w"> </span>-o<span class="w"> </span><span class="s2">&quot;roundcube/carddav:~5&quot;</span>
</code></pre></div>
<p>Editieren Sie die Datei <code>data/web/rc/plugins/carddav/config.inc.php</code> und fügen Sie folgenden Inhalt hinzu:</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/web/rc/plugins/carddav/config.inc.php</span>
<span class="s">&lt;?php</span>
<span class="s">\$prefs[&#39;_GLOBAL&#39;][&#39;pwstore_scheme&#39;] = &#39;des_key&#39;;</span>
<span class="s">\$prefs[&#39;SOGo&#39;] = [</span>
<span class="s"> &#39;accountname&#39; =&gt; &#39;SOGo&#39;,</span>
<span class="s"> &#39;username&#39; =&gt; &#39;%u&#39;,</span>
<span class="s"> &#39;password&#39; =&gt; &#39;%p&#39;,</span>
<span class="s"> &#39;discovery_url&#39; =&gt; &#39;http://sogo:20000/SOGo/dav/&#39;,</span>
<span class="s"> &#39;name&#39; =&gt; &#39;%N&#39;,</span>
<span class="s"> &#39;use_categories&#39; =&gt; true,</span>
<span class="s"> &#39;fixed&#39; =&gt; [&#39;username&#39;, &#39;password&#39;],</span>
<span class="s">];</span>
<span class="s">EOCONFIG</span>
</code></pre></div>
<p>RCMCardDAV legt alle Adressbücher des Benutzers beim Login in Roundcube an, einschließlich <strong>abonnierten</strong> Adressbüchern
die mit dem Benutzers von anderen Benutzern geteilt werden.</p>
<p>Wenn Sie das Standard-Adressbuch (gespeichert in der Roundcube-Datenbank) entfernen möchten, so dass nur
CardDAV-Adressbücher verwendet werden können, fügen Sie der Konfigurationsdatei <code>data/web/rc/config/config.inc.php</code> die
Option <code>$config['address_book_type'] = '';</code> hinzu.</p>
<p>Hinweis: RCMCardDAV verwendet zusätzliche Datenbank-Tabellen. Nach der Installation (oder Aktualisierung) von RCMCardDAV
ist es notwendig, sich in Roundcube neu anzumelden (melden Sie sich vorher ab, wenn Sie bereits eingeloggt sind), da die
Erzeugung der Datenbank-Tabellen bzw. Änderungen nur bei der Anmeldung in Roundcube durchgeführt werden.</p>
<h3 id="ubermittlung-der-client-netzwerkadresse-an-dovecot">Übermittlung der Client-Netzwerkadresse an Dovecot<a class="headerlink" href="#ubermittlung-der-client-netzwerkadresse-an-dovecot" title="Permanent link">&para;</a></h3>
<p>Normalerweise sieht der IMAP-Server Dovecot die Netzwerkadresse des php-fpm-Containers wenn Roundcube zu diesem
Verbindungen aufbaut. Durch Verwendung einer IMAP-Erweiterung und dem <code>roundcube-dovecot_client_ip</code> Roundcube-Plugin ist
es möglich, dass Roundcube Dovecot die Client-Netzwerkadresse übermittelt, so dass in den Log-Dateien die
Client-Netzwerkadresse erscheint. Dies führt dazu, dass Login-Versuche an Roundcube in den Dovecot-Logs genauso wie
direkte Client-Verbindungen zu Dovecot aufgezeichnet werden, und fehlgeschlagene Login-Versuche an Roundcube
analog zu fehlgeschlagenen direkten IMAP-Logins durch den netfilter-Container oder andere ggf. verfügbare Mechanismen
zur Behandlung von Bruteforce-Attacken auf den IMAP-Server aufgegriffen werden und z. B. zu einer Blockierung des
Clients führen.</p>
<p>Hierzu muss das Roundcube-Plugin installiert werden:</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>-w<span class="w"> </span>/web/rc<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>composer<span class="w"> </span>require<span class="w"> </span>--update-no-dev<span class="w"> </span>-o<span class="w"> </span><span class="s2">&quot;takerukoushirou/roundcube-dovecot_client_ip:~1&quot;</span>
</code></pre></div>
<p>Weiterhin müssen wir Dovecot konfigurieren, so dass der php-fpm-Container als Teil eines vertrauenswürdigen Netzwerks
betrachtet wird und somit die Client-Netzwerkadresse innerhalb einer IMAP-Sitzung überschreiben darf. Beachten Sie, dass
dies auch die Klartext-Authentifizierung für die aufgeführten Netzwerkbereiche erlaubt, so dass das explizite
Überschreiben von <code>disable_plaintext_auth</code> weiter oben in diesem Fall nicht notwendig ist.</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;&gt;data/conf/dovecot/extra.conf</span>
<span class="s">login_trusted_networks = ${IPV4_NETWORK}.0/24 ${IPV6_NETWORK}</span>
<span class="s">EOCONFIG</span>
docker<span class="w"> </span>compose<span class="w"> </span>restart<span class="w"> </span>dovecot-mailcow
</code></pre></div>
<h3 id="roundcube-zur-mailcow-apps-liste-hinzufugen">Roundcube zur mailcow Apps-Liste hinzufügen<a class="headerlink" href="#roundcube-zur-mailcow-apps-liste-hinzufugen" title="Permanent link">&para;</a></h3>
<p>Optional können Sie Roundcubes Link zu der mailcow Apps Liste hinzufügen.
Um dies zu tun, öffnen oder erstellen Sie <code>data/web/inc/vars.local.inc.php</code> und stellen Sie sicher, dass es den
folgenden Konfigurationsblock beinhaltet:</p>
<div class="highlight"><pre><span></span><code><span class="cp">&lt;?php</span>
<span class="nv">$MAILCOW_APPS</span> <span class="o">=</span> <span class="p">[</span>
<span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;SOGo&#39;</span><span class="p">,</span>
<span class="s1">&#39;link&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;/SOGo/&#39;</span>
<span class="p">],</span>
<span class="p">[</span>
<span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;Roundcube&#39;</span><span class="p">,</span>
<span class="s1">&#39;link&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;/rc/&#39;</span>
<span class="p">]</span>
<span class="p">];</span>
</code></pre></div>
<h3 id="administratoren-ohne-passwort-in-roundcube-einloggen-lassen">Administratoren ohne Passwort in Roundcube einloggen lassen<a class="headerlink" href="#administratoren-ohne-passwort-in-roundcube-einloggen-lassen" title="Permanent link">&para;</a></h3>
<p>Installieren Sie zunächst das Plugin <a href="https://github.com/corbosman/dovecot_impersonate/">dovecot_impersonate</a> und fügen Sie Roundcube als App hinzu (siehe oben).</p>
<p>Editieren Sie <code>mailcow.conf</code> und fügen Sie folgendes hinzu:</p>
<div class="highlight"><pre><span></span><code># Erlaube Admins, sich in Roundcube als Email-Benutzer einzuloggen (ohne Passwort)
# Roundcube mit Plugin dovecot_impersonate muss zuerst installiert werden
ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE=y
</code></pre></div>
<p>Editieren Sie <code>docker-compose.override.yml</code> und verfassen/erweitern Sie den Abschnitt für <code>php-fpm-mailcow</code>:</p>
<div class="highlight"><pre><span></span><code>version: &#39;2.1&#39;
services:
php-fpm-mailcow:
environment:
- ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE=${ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE:-n}
</code></pre></div>
<p>Bearbeiten Sie <code>data/web/js/site/mailbox.js</code> und den folgenden Code nach <a href="https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/js/site/mailbox.js#L485-L487"><code>if (ALLOW_ADMIN_EMAIL_LOGIN) { ... }</code></a></p>
<div class="highlight"><pre><span></span><code><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nx">item</span><span class="p">.</span><span class="nx">action</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s1">&#39;&lt;a href=&quot;/rc-auth.php?login=&#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">encodeURIComponent</span><span class="p">(</span><span class="nx">item</span><span class="p">.</span><span class="nx">username</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39;&quot; class=&quot;login_as btn btn-xs &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">btnSize</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s1">&#39; btn-primary&quot; target=&quot;_blank&quot;&gt;&lt;i class=&quot;bi bi-envelope-fill&quot;&gt;&lt;/i&gt; Roundcube&lt;/a&gt;&#39;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p>Bearbeiten Sie <code>data/web/mailbox.php</code> und fügen Sie diese Zeile zum Array <a href="https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/mailbox.php#L33-L43"><code>$template_data</code></a> hinzu:</p>
<div class="highlight"><pre><span></span><code><span class="x"> &#39;allow_admin_email_login_roundcube&#39; =&gt; (preg_match(&quot;/^(yes|y)+$/i&quot;, $_ENV[&quot;ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE&quot;])) ? &#39;true&#39; : &#39;false&#39;,</span>
</code></pre></div>
<p>Bearbeiten Sie <code>data/web/templates/mailbox.twig</code> und fügen Sie diesen Code am Ende des <a href="https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/templates/mailbox.twig#L49-L57">Javascript-Abschnitts</a> ein:</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{{</span><span class="w"> </span><span class="nx">allow_admin_email_login_roundcube</span><span class="w"> </span><span class="p">}};</span>
</code></pre></div>
<p>Kopieren Sie den Inhalt der folgenden Dateien aus diesem <a href="https://gitlab.com/-/snippets/2038244">Snippet</a>:</p>
<ul>
<li><code>data/web/inc/lib/RoundcubeAutoLogin.php</code></li>
<li><code>data/web/rc-auth.php</code></li>
</ul>
<h2 id="abschluss-der-installation">Abschluss der Installation<a class="headerlink" href="#abschluss-der-installation" title="Permanent link">&para;</a></h2>
<p>Starten Sie schließlich mailcow neu</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">docker compose (Plugin)</label><label for="__tabbed_1_2">docker-compose (Standalone)</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span>down
docker<span class="w"> </span>compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>docker-compose<span class="w"> </span>down
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
</code></pre></div>
</div>
</div>
</div>
<h2 id="aktualisierung-von-roundcube">Aktualisierung von Roundcube<a class="headerlink" href="#aktualisierung-von-roundcube" title="Permanent link">&para;</a></h2>
<p>Ein Upgrade von Roundcube ist recht einfach: Gehen Sie auf die
<a href="https://github.com/roundcube/roundcubemail/releases">GitHub releases</a> Seite für Roundcube und holen Sie sich den Link
für die "complete.tar.gz" Datei für die gewünschte Version. Dann folgen Sie den untenstehenden Befehlen und ändern Sie
die URL und den Namen des Roundcube-Ordners, falls nötig.</p>
<div class="highlight"><pre><span></span><code><span class="c1"># Starten Sie eine Bash-Sitzung des mailcow PHP-Containers</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>mailcowdockerized-php-fpm-mailcow-1<span class="w"> </span>bash
<span class="c1"># Installieren Sie die erforderliche Upgrade-Abhängigkeit, dann aktualisieren Sie Roundcube auf die gewünschte Version</span>
apk<span class="w"> </span>add<span class="w"> </span>rsync
<span class="nb">cd</span><span class="w"> </span>/tmp
wget<span class="w"> </span>-O<span class="w"> </span>-<span class="w"> </span>https://github.com/roundcube/roundcubemail/releases/download/1.6.1/roundcubemail-1.6.1-complete.tar.gz<span class="w"> </span><span class="p">|</span><span class="w"> </span>tar<span class="w"> </span>xfvz<span class="w"> </span>-
<span class="nb">cd</span><span class="w"> </span>roundcubemail-1.6.1
bin/installto.sh<span class="w"> </span>/web/rc
<span class="c1"># Geben Sie &#39;Y&#39; ein und drücken Sie die Eingabetaste, um Ihre Installation von Roundcube zu aktualisieren.</span>
<span class="c1"># Geben Sie &#39;N&#39; ein, wenn folgender Dialog erscheint: &quot;Do you want me to fix your local configuration&quot;.</span>
<span class="c1"># Sollte im Output eine Notice kommen &quot;NOTICE: Update dependencies by running php composer.phar update --no-dev&quot; führen</span>
Sie<span class="w"> </span>composer<span class="w"> </span>aus:
<span class="nb">cd</span><span class="w"> </span>/web/rc
composer<span class="w"> </span>update<span class="w"> </span>--no-dev<span class="w"> </span>-o
<span class="c1"># Auf die Frage &quot;Do you trust &quot;roundcube/plugin-installer&quot; to execute code and wish to enable it now? (writes &quot;allow-plugins&quot; to composer.json) [y,n,d,?] &quot; bitte mit y antworten.</span>
<span class="c1"># Entfernen Sie übrig gebliebene Dateien</span>
rm<span class="w"> </span>-rf<span class="w"> </span>/tmp/roundcube*
<span class="c1"># Falls Sie von Version 1.5 auf 1.6 updaten, dann führen Sie folgende Befehle aus, um die Konfigurationsdatei anzupassen:`</span>
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;s/\$config\[&#39;default_host&#39;\].*</span>$<span class="s2">/\$config\[&#39;imap_host&#39;\]\ =\ &#39;dovecot:143&#39;\;/&quot;</span><span class="w"> </span>/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;default_port&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;s/\$config\[&#39;smtp_server&#39;\].*</span>$<span class="s2">/\$config\[&#39;smtp_host&#39;\]\ =\ &#39;postfix:588&#39;\;/&quot;</span><span class="w"> </span>/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;smtp_port&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;s/\$config\[&#39;managesieve_host&#39;\].*</span>$<span class="s2">/\$config\[&#39;managesieve_host&#39;\]\ =\ &#39;dovecot:4190&#39;\;/&quot;</span><span class="w"> </span>/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;managesieve_port&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>/web/rc/config/config.inc.php
</code></pre></div>
<h3 id="aktualisierung-von-composer-plugins">Aktualisierung von composer-Plugins<a class="headerlink" href="#aktualisierung-von-composer-plugins" title="Permanent link">&para;</a></h3>
<p>Um Roundcube-Plugins und -Abhängigkeiten zu aktualisieren, die mit composer installiert wurden (z. B.
RCMCardDAV-Plugin), führen Sie einfach composer im Container aus:</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>-w<span class="w"> </span>/web/rc<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>php-fpm-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>composer<span class="w"> </span>update<span class="w"> </span>--no-dev<span class="w"> </span>-o
</code></pre></div>
<h3 id="aktualisierung-des-mime-typ-verzeichnisses">Aktualisierung des MIME-Typ-Verzeichnisses<a class="headerlink" href="#aktualisierung-des-mime-typ-verzeichnisses" title="Permanent link">&para;</a></h3>
<p>Um das MIME-Typ-Verzeichnis zu aktualisieren, laden Sie dieses erneut mit dem Kommando aus den
<a href="#Installation-des-MIME-Typ-Verzeichnisses">Installations-Anweisungen</a> herunter.</p>
<h2 id="deinstallation-von-roundcube">Deinstallation von Roundcube<a class="headerlink" href="#deinstallation-von-roundcube" title="Permanent link">&para;</a></h2>
<p>Für die Deinstallation wird ebenfalls angenommen, dass die Kommandos im mailcow-Installationsverzeichnis ausgeführt
werden und dass <code>mailcow.conf</code> in die Shell geladen wurde, siehe Abschnitt <a href="#Vorbereitung">Vorbereitung</a> oben.</p>
<h3 id="entfernen-des-web-verzeichnisses">Entfernen des Web-Verzeichnisses<a class="headerlink" href="#entfernen-des-web-verzeichnisses" title="Permanent link">&para;</a></h3>
<p>Dies entfernt die Roundcube-Installation mit allen Plugins und Abhängigkeiten die Sie ggf. installiert haben,
einschließlich solcher, die mit composer installiert wurden.</p>
<p>Hinweis: Dies entfernt auch alle angepassten Konfigurationen die Sie ggf. in Roundcube durchgeführt haben. Sollten Sie
diese erhalten wollen, verschieben Sie das Verzeichnis an einen anderen Ort statt es zu entfernen.</p>
<div class="highlight"><pre><span></span><code>rm<span class="w"> </span>-r<span class="w"> </span>data/web/rc
</code></pre></div>
<h3 id="entfernen-der-datenbank">Entfernen der Datenbank<a class="headerlink" href="#entfernen-der-datenbank" title="Permanent link">&para;</a></h3>
<p>Hinweis: Dies löscht alle Daten, die Roundcube abgespeichert hat. Wenn Sie diese erhalten möchten, können Sie
<code>mysqldump</code> ausführen, bevor Sie die Datenbank löschen, oder die Datenbank einfach nicht löschen.</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;DROP USER &#39;roundcube&#39;@&#39;%&#39;;&quot;</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;DROP DATABASE roundcubemail;&quot;</span>
</code></pre></div>
<h3 id="entfernen-der-konfigurationsanpassungen-fur-mailcow">Entfernen der Konfigurationsanpassungen für mailcow<a class="headerlink" href="#entfernen-der-konfigurationsanpassungen-fur-mailcow" title="Permanent link">&para;</a></h3>
<p>Um die Dateien zu ermitteln, lesen Sie bitte die Installationsanweisungen und machen Sie die Schritte, die Sie dort
zuvor durchgeführt haben, rückgängig.</p>
<h2 id="migration-von-einer-alteren-mailcow-roundcube-installation">Migration von einer älteren mailcow-Roundcube-Installation<a class="headerlink" href="#migration-von-einer-alteren-mailcow-roundcube-installation" title="Permanent link">&para;</a></h2>
<p>Ältere Versionen dieser Anleitung verwendeten die mailcow-Datenbank auch für Roundcube, mit einem konfigurierten Präfix
<code>mailcow_rc1</code> für alle Roundcube-Tabellen.</p>
<p>Zur Migration wird ebenfalls angenommen, dass alle Kommandos im mailcow-Installationsverzeichnis ausgeführt werden und
<code>mailcow.conf</code> in die Shell geladen wurde, siehe <a href="#Vorbereitung">Vorbereitung</a> oben. Dies Kommandos der verschiedenen
Schritte bauen aufeinander auf und müssen innerhalb derselben Shell ausgeführt werden. Insbesondere setzen einige
Schritte Shell-Variablen (besonders die <code>DBROUNDCUBE</code>-Variable mit dem Datenbank-Passwort für den
roundcube-Datenbankbenutzer), die in späteren Schritten verwendet werden.</p>
<h3 id="anlegen-eines-neuen-roundcube-datenbankbenutzers-und-der-datenbank">Anlegen eines neuen roundcube-Datenbankbenutzers und der Datenbank<a class="headerlink" href="#anlegen-eines-neuen-roundcube-datenbankbenutzers-und-der-datenbank" title="Permanent link">&para;</a></h3>
<p>Folgen Sie den <a href="#Anlegen-der-Roundcube-Datenbank">Anweisungen oben</a> um den roundcube-Datenbankbenutzer und die getrennte
Datenbank anzulegen.</p>
<h3 id="migration-der-roundcube-daten-aus-der-mailcow-datenbank">Migration der Roundcube-Daten aus der mailcow-Datenbank<a class="headerlink" href="#migration-der-roundcube-daten-aus-der-mailcow-datenbank" title="Permanent link">&para;</a></h3>
<p>Bevor wir mit der Migration starten, deaktivieren wir Roundcube, um weitere Änderungen an dessen Datenbank-Tabellen zu
vermeiden.</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/conf/nginx/site.roundcube.custom</span>
<span class="s">location ^~ /rc/ {</span>
<span class="s"> return 503;</span>
<span class="s">}</span>
<span class="s">EOCONFIG</span>
docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>nginx-mailcow<span class="w"> </span>nginx<span class="w"> </span>-s<span class="w"> </span>reload
</code></pre></div>
<p>Nun kopieren wir die Roundcube-Daten in die neue Datenbank. Wir entfernen das Datenbank-Tabellen-Präfix in diesem
Schritt, welches Sie ggf. anpassen müssen, wenn Sie ein anderes Präfix als <code>mailcow_rc1</code> verwendet haben. Es ist auch
möglich, das Präfix beizubehalten (in diesem Fall behalten Sie auch die zugehörige Roundcube-Einstellung <code>db_prefix</code>
bei).</p>
<div class="highlight"><pre><span></span><code><span class="nv">RCTABLES</span><span class="o">=</span><span class="k">$(</span>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-sN<span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;show tables like &#39;mailcow_rc1%&#39;;&quot;</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>tr<span class="w"> </span><span class="s1">&#39;\n\r&#39;</span><span class="w"> </span><span class="s1">&#39; &#39;</span><span class="k">)</span>
docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>/bin/bash<span class="w"> </span>-c<span class="w"> </span><span class="s2">&quot;mysqldump -uroot -p</span><span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="s2"> mailcow </span><span class="nv">$RCTABLES</span><span class="s2"> | sed &#39;s/mailcow_rc1//&#39; | mysql -uroot -p</span><span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="s2"> roundcubemail&quot;</span>
</code></pre></div>
<h3 id="aktualisierung-der-roundcube-konfiguration">Aktualisierung der Roundcube-Konfiguration<a class="headerlink" href="#aktualisierung-der-roundcube-konfiguration" title="Permanent link">&para;</a></h3>
<p>Führen Sie folgende Kommandos aus, um die nicht mehr notwendige <code>db_prefix</code> Option zu entfernen. Wir aktivieren außerdem
das Logging in Roundcube, indem wir die Einstellungen <code>log_dir</code> und <code>temp_dir</code> entfernen, welche Teil der alten
Anweisungen waren.</p>
<div class="highlight"><pre><span></span><code>sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;db_prefix&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>data/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;log_dir&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>data/web/rc/config/config.inc.php
sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;temp_dir&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>data/web/rc/config/config.inc.php
</code></pre></div>
<p>Wir müssen die nginx-Konfiguration anpassen, so dass nicht-öffentliche Verzeichnisse von Roundcube nicht exponiert
werden, insbesondere die Verzeichnisse, welche Log-Dateien und temporäre Dateien enthalten:</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;data/conf/nginx/site.roundcube.custom</span>
<span class="s">location /rc/ {</span>
<span class="s"> alias /web/rc/public_html/;</span>
<span class="s">}</span>
<span class="s">EOCONFIG</span>
</code></pre></div>
<p>Wir können auch die <code>cipher_method</code>-Einstellung auf eine sicherere Einstellung ändern, aber beachten Sie, dass mit der
alten Methode verschlüsselte Daten danach nicht mehr entschlüsselt werden können. Dies betrifft insbesondere
CardDAV-Passwörter, sofern Sie RCMCardDAV verwenden und Ihre Nutzer benutzerdefinierte Adressbücher hinzugefügt haben
(die Admin-Voreinstellungen für die SOGo-Adressbücher werden automatisch beim nächsten Login für den jeweiligen Nutzer
korrigiert). Wenn Sie die <code>cipher_method</code> ändern wollen, führen Sie folgendes Kommando aus:</p>
<div class="highlight"><pre><span></span><code>cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;&gt;data/web/rc/config/config.inc.php</span>
<span class="s">\$config[&#39;cipher_method&#39;] = &#39;chacha20-poly1305&#39;;</span>
<span class="s">EOCONFIG</span>
</code></pre></div>
<h3 id="umstellung-des-rcmcarddav-plugins-auf-die-installation-mittels-composer">Umstellung des RCMCardDAV-Plugins auf die Installation mittels composer<a class="headerlink" href="#umstellung-des-rcmcarddav-plugins-auf-die-installation-mittels-composer" title="Permanent link">&para;</a></h3>
<p>Dieser Schritt ist optional, aber er gleicht Ihre Installation an die aktuelle Fassung der Anweisungen an und ermöglicht
die Aktualisierung von RCMCardDAV mittels composer. Dies wird einfach dadurch erreicht, dass das carddav-Plugin aus dem
Installationsverzeichnis gelöscht und entsprechend der <a href="#CardDAV-Adressbücher-in-Roundcube-einbinden">Anweisungen oben</a>
installiert wird, einschließlich der Erstellung einer neuen RCMCardDAV v5-Konfiguration. Falls Sie das RCMCardDAV
angepasst haben, sollten Sie dieses sichern, bevor Sie das Plugin löschen, und Ihre Anpassungen später in die neue
Konfigurationsdatei übernehmen.</p>
<p>Um das carddav-Plugin zu löschen, führen Sie folgendes Kommando aus, danach befolgen Sie zur Neuinstallation die
<a href="#CardDAV-Adressbücher-in-Roundcube-einbinden">Anweisungen oben</a>:</p>
<div class="highlight"><pre><span></span><code>rm<span class="w"> </span>-r<span class="w"> </span>data/web/rc/plugins/carddav
</code></pre></div>
<h3 id="umschalten-von-roundcube-auf-die-neue-datenbank">Umschalten von Roundcube auf die neue Datenbank<a class="headerlink" href="#umschalten-von-roundcube-auf-die-neue-datenbank" title="Permanent link">&para;</a></h3>
<p>Zunächst passen wir die Roundcube-Konfiguration an, so dass die neue Datenbank verwendet wird.
<div class="highlight"><pre><span></span><code>sed<span class="w"> </span>-i<span class="w"> </span><span class="s2">&quot;/\$config\[&#39;db_dsnw&#39;\].*</span>$<span class="s2">/d&quot;</span><span class="w"> </span>data/web/rc/config/config.inc.php
cat<span class="w"> </span><span class="s">&lt;&lt;EOCONFIG &gt;&gt;data/web/rc/config/config.inc.php</span>
<span class="s">\$config[&#39;db_dsnw&#39;] = &#39;mysql://roundcube:${DBROUNDCUBE}@mysql/roundcubemail&#39;;</span>
<span class="s">EOCONFIG</span>
</code></pre></div></p>
<h3 id="roundcube-web-zugriff-reaktivieren">Roundcube Web-Zugriff reaktivieren<a class="headerlink" href="#roundcube-web-zugriff-reaktivieren" title="Permanent link">&para;</a></h3>
<p>Führen Sie chown und chmod auf den sensitiven Roundcube-Verzeichnissen, welche in <a href="#Vorbereitung">Vorbereitung</a>
aufgeführt sind aus, um sicherzustellen, dass der nginx-Webserver nicht auf Dateien zugreifen darf, die er nicht
ausliefern soll.</p>
<p>Dann reaktivieren Sie den Web-Zugriff für Roundcube, indem Sie die temporäre Roundcube-Konfigurations-Erweiterung für
nginx durch die <a href="#Webserver-Konfiguration">oben</a> beschriebene ersetzen, und laden anschließend die nginx-Konfiguration
neu:</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>nginx-mailcow<span class="w"> </span>nginx<span class="w"> </span>-s<span class="w"> </span>reload
</code></pre></div>
<h3 id="andere-anpassungen">Andere Anpassungen<a class="headerlink" href="#andere-anpassungen" title="Permanent link">&para;</a></h3>
<p>Sie müssen auch die Konfiguration des Roundcube password-Plugins entsprechend dieser Anweisungen anpassen, sofern Sie
diese Funktionalität aktiviert haben, da die alten Anweisungen das Passwort direkt in der mailcow-Datenbank änderten,
wohingegen diese Fassung der Anweisungen die mailcow-API zur Passwort-Änderung verwendet.</p>
<p>Bezüglich weiterer Anpassungen und Neuerungen (z. B. roundcube-dovecot_client_ip Plugin) können Sie die aktuellen
Anweisungen durchgehen und Ihre Konfiguration entsprechend anpassen bzw. die genannten Installationsschritte für neue
Funktionalitäten ausführen.</p>
<p>Insbesondere beachten Sie folgende Abschnitte:</p>
<ul>
<li><a href="#Ofelia-Job-für-Roundcube-Aufräumtätigkeiten">Ofelia-Job für Roundcube-Aufräumtätigkeiten</a></li>
<li><a href="#Ermöglichen-der-Klartext-Authentifizierung-für-den-php-fpm-Container-ohne-die-Verwendung-von-TLS">Ermöglichen der Klartext-Authentifizierung für den php-fpm-Container ohne die Verwendung von TLS</a></li>
<li><a href="#Übermittlung-der-Client-Netzwerkadresse-an-Dovecot">Übermittlung der Client-Netzwerkadresse an Dovecot</a></li>
</ul>
<h3 id="entfernen-der-roundcube-tabellen-aus-der-mailcow-datenbank">Entfernen der Roundcube-Tabellen aus der mailcow-Datenbank<a class="headerlink" href="#entfernen-der-roundcube-tabellen-aus-der-mailcow-datenbank" title="Permanent link">&para;</a></h3>
<p>Nachdem Sie sichergestellt haben, dass die Migration erfolgreich durchgeführt wurde und Roundcube mit der getrennten
Datenbank funktioniert, können Sie die Roundcube-Tabellen aus der mailcow-Datenbank mit dem folgenden Kommando
entfernen:</p>
<div class="highlight"><pre><span></span><code>docker<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span><span class="k">$(</span>docker<span class="w"> </span>ps<span class="w"> </span>-f<span class="w"> </span><span class="nv">name</span><span class="o">=</span>mysql-mailcow<span class="w"> </span>-q<span class="k">)</span><span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p<span class="si">${</span><span class="nv">DBROOT</span><span class="si">}</span><span class="w"> </span>-sN<span class="w"> </span>mailcow<span class="w"> </span>-e<span class="w"> </span><span class="s2">&quot;SET SESSION foreign_key_checks = 0; DROP TABLE IF EXISTS </span><span class="k">$(</span><span class="nb">echo</span><span class="w"> </span><span class="nv">$RCTABLES</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>sed<span class="w"> </span>-e<span class="w"> </span><span class="s1">&#39;s/ \+/,/g&#39;</span><span class="k">)</span><span class="s2">;&quot;</span>
</code></pre></div>
<hr>
<div class="md-source-file">
<small>
Letztes Update:
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime">2023-07-01 21:22:02</span>
</small>
</div>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
Zurück zum Seitenanfang
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 mailcow Team & Community
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://mailcow.email" target="_blank" rel="noopener" title="mailcow.email" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64h185.4c2.2 20.4 3.3 41.8 3.3 64zm28.8-64h123.1c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6 78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7 10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5 11.6 26 20.9 58.2 27 94.7zm-209 0H18.6c30-74.1 93.6-130.9 172-151.6-25.5 34.2-45.3 87.7-55.3 151.6zM8.1 192h123.1c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zm186.6 254.6c-11.6-26-20.9-58.2-27-94.6h176.6c-6.1 36.4-15.5 68.6-27 94.6-10.5 23.6-22.2 40.7-33.5 51.5-11.2 10.7-20.5 13.9-27.8 13.9s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6-78.4-20.7-142-77.5-172-151.6h116.7zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6 25.5-34.2 45.2-87.7 55.3-151.6h116.6z"/></svg>
</a>
<a href="https://github.com/mailcow" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
</a>
<a href="https://twitter.com/mailcow_email" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["navigation.top", "navigation.tracking", "announce.dismiss", "content.tabs.link", "search.share", "search.highlight"], "search": "../../../../assets/javascripts/workers/search.74e28a9f.min.js", "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}}</script>
<script src="../../../../assets/javascripts/bundle.220ee61c.min.js"></script>
<script src="../../../../assets/javascripts/client.js"></script>
</body>
</html>