2021-04-01 10:20:45 +00:00
<!doctype html>
< html lang = "en" class = "no-js" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
2022-09-22 18:11:29 +00:00
< link rel = "canonical" href = "https://docs.mailcow.email/en/third_party/roundcube/third_party-roundcube/" >
2021-04-01 10:20:45 +00:00
2023-01-02 13:32:47 +00:00
< link rel = "prev" href = "../../portainer/third_party-portainer/" >
2022-07-17 15:02:21 +00:00
< link rel = "icon" href = "../../../../assets/images/favicon.png" >
2023-06-24 12:01:08 +00:00
< meta name = "generator" content = "mkdocs-1.4.3, mkdocs-material-9.1.17" >
2021-04-01 10:20:45 +00:00
< title > Roundcube - mailcow: dockerized documentation< / title >
2023-05-29 17:24:18 +00:00
< link rel = "stylesheet" href = "../../../../assets/stylesheets/main.26e3688c.min.css" >
2021-04-01 10:20:45 +00:00
2023-05-29 17:24:18 +00:00
< link rel = "stylesheet" href = "../../../../assets/stylesheets/palette.ecc896b0.min.css" >
2021-04-01 10:20:45 +00:00
2022-06-03 10:21:24 +00:00
2022-09-13 11:51:34 +00:00
2021-04-01 10:20:45 +00:00
2022-07-17 15:02:21 +00:00
< link rel = "stylesheet" href = "../../../../assets/stylesheets/extra.css" >
2021-04-01 10:20:45 +00:00
2022-08-13 11:05:16 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
2021-06-12 19:21:14 +00:00
2021-04-01 10:20:45 +00:00
2023-03-10 11:40:40 +00:00
< 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.en.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/en/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.en.png" >
2022-09-13 11:51:34 +00:00
2021-04-01 10:20:45 +00:00
< / head >
2022-02-04 13:27:16 +00:00
2021-04-01 10:20:45 +00:00
2023-05-23 09:34:00 +00:00
< body dir = "ltr" data-md-color-scheme = "default" data-md-color-primary = "indigo" data-md-color-accent = "indigo" >
2021-04-01 10:20:45 +00:00
2022-02-04 13:27:16 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
< 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" >
2021-10-19 17:14:45 +00:00
< a href = "#installing-roundcube" class = "md-skip" >
2021-04-01 10:20:45 +00:00
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
2022-08-31 12:47:21 +00:00
< aside class = "md-banner" >
< div class = "md-banner__inner md-grid md-typeset" >
< button class = "md-banner__button md-icon" aria-label = "Don't show this again" >
< 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 >
2023-01-13 17:35:18 +00:00
< center > < h4 > All Commands are available according to the < a style = "color:#6390e5;" href = "https://docs.docker.com/compose/install/linux/" > Docker Compose Plugin< / a > and the < a style = "color:#6390e5;" href = "https://docs.docker.com/compose/install/other/" > Standalone Version< / a > syntax< / h4 > < / center >
2022-08-31 12:47:21 +00:00
< / 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 >
2021-04-01 10:20:45 +00:00
< / div >
2021-11-29 18:26:08 +00:00
2021-09-23 18:30:54 +00:00
2023-03-02 12:08:36 +00:00
< header class = "md-header md-header--shadow" data-md-component = "header" >
2021-04-01 10:20:45 +00:00
< nav class = "md-header__inner md-grid" aria-label = "Header" >
2022-07-17 15:02:21 +00:00
< a href = "../../../" title = "mailcow: dockerized documentation" class = "md-header__button md-logo" aria-label = "mailcow: dockerized documentation" data-md-component = "logo" >
2021-04-01 10:20:45 +00:00
2022-07-17 15:02:21 +00:00
< img src = "../../../../assets/images/logo.svg" alt = "logo" >
2021-04-01 10:20:45 +00:00
< / a >
< label class = "md-header__button md-icon" for = "__drawer" >
2022-04-08 23:16:09 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z" / > < / svg >
2021-04-01 10:20:45 +00:00
< / 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 documentation
< / span >
< / div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
Roundcube
< / span >
< / div >
< / div >
< / div >
2023-04-25 05:21:21 +00:00
< form class = "md-header__option" data-md-component = "palette" >
2023-04-23 08:08:58 +00:00
2023-04-25 05:21:21 +00:00
2023-05-23 09:34:00 +00:00
< 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" >
2023-04-25 05:21:21 +00:00
< 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 >
2022-02-04 13:27:16 +00:00
2023-04-25 05:21:21 +00:00
2023-05-23 09:34:00 +00:00
< 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" >
2023-04-25 05:21:21 +00:00
< 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 >
2022-02-04 13:27:16 +00:00
2023-04-25 05:21:21 +00:00
< / form >
2022-02-04 13:27:16 +00:00
< div class = "md-header__option" >
< div class = "md-select" >
< button class = "md-header__button md-icon" aria-label = "Select language" >
2022-04-08 23:16:09 +00:00
< 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 >
2022-02-04 13:27:16 +00:00
< / button >
< div class = "md-select__inner" >
< ul class = "md-select__list" >
< li class = "md-select__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../../third_party/roundcube/third_party-roundcube/" hreflang = "en" class = "md-select__link" >
2022-02-04 13:27:16 +00:00
English
< / a >
< / li >
2022-11-03 16:35:58 +00:00
2022-02-04 13:27:16 +00:00
< li class = "md-select__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../../de/third_party/roundcube/third_party-roundcube/" hreflang = "de" class = "md-select__link" >
2022-02-04 13:27:16 +00:00
Deutsch
< / a >
< / li >
2022-11-03 16:35:58 +00:00
2022-02-04 13:27:16 +00:00
< / ul >
< / div >
< / div >
< / div >
2021-04-01 10:20:45 +00:00
< label class = "md-header__button md-icon" for = "__search" >
2022-04-08 23:16:09 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
< / label >
2021-11-29 18:26:08 +00:00
< div class = "md-search" data-md-component = "search" role = "dialog" >
2021-04-01 10:20:45 +00:00
< label class = "md-search__overlay" for = "__search" > < / label >
< div class = "md-search__inner" role = "search" >
< form class = "md-search__form" name = "search" >
2021-07-24 20:41:22 +00:00
< input type = "text" class = "md-search__input" name = "query" aria-label = "Search" placeholder = "Search" autocapitalize = "off" autocorrect = "off" autocomplete = "off" spellcheck = "false" data-md-component = "search-query" required >
2021-04-01 10:20:45 +00:00
< label class = "md-search__icon md-icon" for = "__search" >
2022-04-08 23:16:09 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
< / label >
2021-07-24 20:41:22 +00:00
< nav class = "md-search__options" aria-label = "Search" >
2023-03-10 11:40:40 +00:00
< a href = "javascript:void(0)" class = "md-search__icon md-icon" title = "Share" aria-label = "Share" 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 >
2022-09-13 11:51:34 +00:00
< button type = "reset" class = "md-search__icon md-icon" title = "Clear" aria-label = "Clear" tabindex = "-1" >
2022-04-08 23:16:09 +00:00
< 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 >
2021-07-24 20:41:22 +00:00
< / button >
< / nav >
2021-04-01 10:20:45 +00:00
< / 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" >
Initializing search
< / div >
2023-01-14 22:33:46 +00:00
< ol class = "md-search-result__list" role = "presentation" > < / ol >
2021-04-01 10:20:45 +00:00
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "md-header__source" >
2022-03-27 13:44:40 +00:00
< a href = "https://github.com/mailcow/mailcow-dockerized" title = "Go to repository" class = "md-source" data-md-component = "source" >
2021-04-01 10:20:45 +00:00
< div class = "md-source__icon md-icon" >
2023-04-07 21:17:01 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
< / div >
< div class = "md-source__repository" >
mailcow/mailcow-dockerized
< / div >
< / a >
< / div >
< / nav >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / header >
< div class = "md-container" data-md-component = "container" >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< 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" >
2022-07-17 15:02:21 +00:00
< a href = "../../../" title = "mailcow: dockerized documentation" class = "md-nav__button md-logo" aria-label = "mailcow: dockerized documentation" data-md-component = "logo" >
2021-04-01 10:20:45 +00:00
2022-07-17 15:02:21 +00:00
< img src = "../../../../assets/images/logo.svg" alt = "logo" >
2021-04-01 10:20:45 +00:00
< / a >
mailcow: dockerized documentation
< / label >
< div class = "md-nav__source" >
2022-03-27 13:44:40 +00:00
< a href = "https://github.com/mailcow/mailcow-dockerized" title = "Go to repository" class = "md-source" data-md-component = "source" >
2021-04-01 10:20:45 +00:00
< div class = "md-source__icon md-icon" >
2023-04-07 21:17:01 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
< / 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" >
2022-07-17 15:02:21 +00:00
< a href = "../../../" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Information & Support
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_2" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_2" id = "__nav_2_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Prerequisites
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_2_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_2" >
< span class = "md-nav__icon md-icon" > < / span >
Prerequisites
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../prerequisite/prerequisite-system/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Prepare your system
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../prerequisite/prerequisite-dns/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
DNS setup
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_3" id = "__nav_3_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Installation, Update & Migration
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_3_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_3" >
< span class = "md-nav__icon md-icon" > < / span >
Installation, Update & Migration
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../i_u_m/i_u_m_install/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Installation
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../i_u_m/i_u_m_update/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Update
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../i_u_m/i_u_m_migration/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Migration
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-04-29 20:19:51 +00:00
2021-09-23 18:30:54 +00:00
2021-04-29 20:19:51 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../i_u_m/i_u_m_deinstall/" class = "md-nav__link" >
2021-04-29 20:19:51 +00:00
Deinstallation
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-29 20:19:51 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_4" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_4" id = "__nav_4_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Post Installation Tasks
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_4_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_4" >
< span class = "md-nav__icon md-icon" > < / span >
Post Installation Tasks
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-ssl/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Advanced SSL
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-disable_ipv6/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Disable IPv6
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-dmarc_reporting/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
DMARC Reporting
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-ip_bindings/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
IP bindings
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-local_mta/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Local MTA on Docker host
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-logging/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Logging
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2023-06-14 08:06:33 +00:00
< 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" >
Overview
< / 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 (community supported)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../post_installation/reverse-proxy/r_p-traefik2/" class = "md-nav__link" >
Traefik v2 (community supported)
< / a >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2023-06-14 08:06:33 +00:00
< a href = "../../../post_installation/reverse-proxy/r_p-caddy2/" class = "md-nav__link" >
Caddy v2 (community supported)
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2023-06-14 08:06:33 +00:00
< / ul >
< / nav >
< / li >
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-18 15:07:42 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-rspamd_ui/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Rspamd UI
2021-09-18 15:07:42 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-09-18 15:07:42 +00:00
2021-09-23 18:30:54 +00:00
2021-09-18 15:07:42 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-snat/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
SNAT
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../post_installation/firststeps-sync_jobs_migration/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Sync job migration
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_5" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_5" id = "__nav_5_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Models
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_5_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_5" >
< span class = "md-nav__icon md-icon" > < / span >
Models
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../models/model-acl/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
ACL
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../models/model-passwd/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Password hashing
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../models/model-sender_rcv/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Sender and receiver model
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_6" id = "__nav_6_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
General Troubleshooting
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_6_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_6" >
< span class = "md-nav__icon md-icon" > < / span >
General Troubleshooting
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Introduction
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-admin_login_sogo/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Admin login to SOGo
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-rspamd_memory_leaks/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Advanced: Find memory leaks in Rspamd
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-attach_service/" class = "md-nav__link" >
2022-02-04 13:27:16 +00:00
Attach to a Container
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-common_problems/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Common Problems
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-logs/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Logs
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-mysql_upgrade/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Manual MySQL upgrade
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-10-10 13:36:03 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-mysql_aria/" class = "md-nav__link" >
2021-10-10 13:36:03 +00:00
Recover crashed Aria storage engine
< / a >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-rm_volumes/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Remove Persistent Data
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-04-29 20:40:22 +00:00
2021-09-23 18:30:54 +00:00
2021-04-29 20:40:22 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-reset_pw/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Reset Passwords (incl. SQL)
2021-04-29 20:40:22 +00:00
< / a >
< / li >
2021-09-02 10:46:39 +00:00
2021-09-23 18:30:54 +00:00
2021-09-02 10:46:39 +00:00
2021-09-23 18:30:54 +00:00
2021-09-02 10:46:39 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../troubleshooting/debug-reset_tls/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Reset TLS certificates
2021-09-02 10:46:39 +00:00
< / a >
< / li >
2021-04-29 20:40:22 +00:00
2021-09-23 18:30:54 +00:00
2021-04-29 20:40:22 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_7" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_7" id = "__nav_7_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Backup & Restore
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_7_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_7" >
< span class = "md-nav__icon md-icon" > < / span >
Backup & Restore
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_7_1" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_7_1" id = "__nav_7_1_label" tabindex = "0" >
2022-02-04 13:27:16 +00:00
Component backup & restore
2021-09-23 18:30:54 +00:00
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_7_1_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_7_1" >
< span class = "md-nav__icon md-icon" > < / span >
2022-02-04 13:27:16 +00:00
Component backup & restore
2021-04-01 10:20:45 +00:00
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../backup_restore/b_n_r-backup/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Backup
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../backup_restore/b_n_r-restore/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Restore
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-10-18 14:21:29 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../backup_restore/b_n_r-coldstandby/" class = "md-nav__link" >
2021-10-18 14:23:58 +00:00
Cold-standby (rolling backup)
2021-10-18 14:21:29 +00:00
< / a >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_7_3" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_7_3" id = "__nav_7_3_label" tabindex = "0" >
2021-10-18 14:21:29 +00:00
Manual backups
2021-09-23 18:30:54 +00:00
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_7_3_label" aria-expanded = "false" >
2021-10-18 14:21:29 +00:00
< label class = "md-nav__title" for = "__nav_7_3" >
2021-04-01 10:20:45 +00:00
< span class = "md-nav__icon md-icon" > < / span >
2021-10-18 14:21:29 +00:00
Manual backups
2021-04-01 10:20:45 +00:00
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../backup_restore/b_n_r-backup_restore-maildir/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Maildir
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../backup_restore/b_n_r-backup_restore-mysql/" class = "md-nav__link" >
2021-10-18 14:21:29 +00:00
MySQL (mysqldump)
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-08-16 10:41:17 +00:00
2021-09-23 18:30:54 +00:00
2021-08-16 10:41:17 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_7_4" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_7_4" id = "__nav_7_4_label" tabindex = "0" >
2021-10-18 14:21:29 +00:00
mailcow-internal backups
2021-09-23 18:30:54 +00:00
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_7_4_label" aria-expanded = "false" >
2021-10-18 14:21:29 +00:00
< label class = "md-nav__title" for = "__nav_7_4" >
2021-08-16 10:41:17 +00:00
< span class = "md-nav__icon md-icon" > < / span >
2021-10-18 14:21:29 +00:00
mailcow-internal backups
2021-08-16 10:41:17 +00:00
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-08-16 10:41:17 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../backup_restore/b_n_r-accidental_deletion/" class = "md-nav__link" >
2021-08-16 10:41:17 +00:00
Recover accidentally deleted data
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-08-16 10:41:17 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-08-16 10:41:17 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8" id = "__nav_8_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Manual/Guides/Examples
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_8_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_8" >
< span class = "md-nav__icon md-icon" > < / span >
Manual/Guides/Examples
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_1" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_1" id = "__nav_8_1_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
mailcow UI
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_1_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< 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 >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-bl_wl/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Blacklist / Whitelist
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-05-28 09:12:28 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-config/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Configuration
2021-05-28 09:12:28 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-05-28 09:12:28 +00:00
2021-09-23 18:30:54 +00:00
2021-05-28 09:12:28 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-css/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
CSS overrides
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2022-05-05 19:47:00 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-netfilter/" class = "md-nav__link" >
2022-05-05 19:47:00 +00:00
Netfilter
< / a >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-pushover/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Pushover
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-spamfilter/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Spamfilter
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-sub_addressing/" class = "md-nav__link" >
2022-05-05 19:47:00 +00:00
Sub-addressing
< / a >
< / li >
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-tags/" class = "md-nav__link" >
2022-05-05 19:47:00 +00:00
Tags (for Domains and Mailboxes)
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-spamalias/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Temporary email aliases
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-tfa/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Two-Factor Authentication
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/mailcow-UI/u_e-mailcow_ui-fido/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
WebAuthn / FIDO2
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_2" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_2" id = "__nav_8_2_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Postfix
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_2_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< 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 >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-trust_networks/" class = "md-nav__link" >
2021-09-08 09:41:26 +00:00
Add trusted networks
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-custom_transport/" class = "md-nav__link" >
2021-09-08 09:41:26 +00:00
Custom transport maps
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-extra_cf/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Customize/Expand main.cf
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-disable_sender_verification/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Disable Sender Addresses Verification
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-attachment_size/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Max. message size (attachment size)
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-08 09:41:26 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-relayhost/" class = "md-nav__link" >
2021-09-08 09:41:26 +00:00
Relayhosts
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-09-08 09:41:26 +00:00
2021-09-23 18:30:54 +00:00
2021-09-08 09:41:26 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-pflogsumm/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Statistics with pflogsumm
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-08 09:41:26 +00:00
2021-09-23 18:30:54 +00:00
2021-09-08 09:41:26 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Postfix/u_e-postfix-postscreen_whitelist/" class = "md-nav__link" >
2021-09-08 09:41:26 +00:00
Whitelist IP in Postscreen
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-09-08 09:41:26 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_3" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_3" id = "__nav_8_3_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Unbound
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_3_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< 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 >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Unbound/u_e-unbound-fwd/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Using an external DNS service
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_4" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_4" id = "__nav_8_4_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Dovecot
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_4_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< 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 >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-extra_conf/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Customize/Expand dovecot.conf
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-any_acl/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Enable "any" ACL settings
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-expunge/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Expunge a Users mails
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-fts/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
FTS (Solr)
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-idle_interval/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
IMAP IDLE interval
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-mail-crypt/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Mail crypt
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-more/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
More Examples with DOVEADM
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-vmail-volume/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Move Maildir (vmail)
< / a >
2023-05-24 09:04:22 +00:00
< / li >
< li class = "md-nav__item" >
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-performance/" class = "md-nav__link" >
Performance Optimizations
< / a >
2021-04-01 10:20:45 +00:00
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-public_folder/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Public folders
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-static_master/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Static master user
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:47:28 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Dovecot/u_e-dovecot-catchall_vacation/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Vacation replies for catchall addresses
< / a >
< / li >
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_5" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_5" id = "__nav_8_5_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Nginx
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_5_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< 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 >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Nginx/u_e-nginx_webmail-site/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Create subdomain webmail.example.org
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Nginx/u_e-nginx_custom/" class = "md-nav__link" >
2021-09-23 18:47:28 +00:00
Custom sites
2021-04-01 10:20:45 +00:00
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-10-29 10:30:34 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_6" >
2021-10-29 10:30:34 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_6" id = "__nav_8_6_label" tabindex = "0" >
2021-10-29 10:30:34 +00:00
Watchdog
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_6_label" aria-expanded = "false" >
2021-10-29 10:30:34 +00:00
< 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" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Watchdog/u_e-watchdog-thresholds/" class = "md-nav__link" >
2021-10-29 10:30:34 +00:00
Thresholds
< / a >
< / li >
< / ul >
< / nav >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Redis/u_e-redis/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Redis
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Rspamd/u_e-rspamd/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Rspamd
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2022-04-07 19:33:26 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_9" >
2023-01-08 15:57:17 +00:00
2022-04-07 19:33:26 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_9" id = "__nav_8_9_label" tabindex = "0" >
2022-04-07 19:33:26 +00:00
ClamAV
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_9_label" aria-expanded = "false" >
2022-04-07 19:33:26 +00:00
< 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" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/ClamAV/u_e-clamav-whitelist/" class = "md-nav__link" >
2022-04-07 19:33:26 +00:00
Whitelist
< / a >
< / li >
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/ClamAV/u_e-clamav-additional_dbs/" class = "md-nav__link" >
2022-04-07 19:33:26 +00:00
Additional Databases
< / a >
< / li >
< / ul >
< / nav >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/SOGo/u_e-sogo/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
SOGo
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8_11" >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_8_11" id = "__nav_8_11_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Docker
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_8_11_label" aria-expanded = "false" >
2022-04-07 19:33:26 +00:00
< label class = "md-nav__title" for = "__nav_8_11" >
2021-04-01 10:20:45 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Docker
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/Docker/u_e-docker-cust_dockerfiles/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Customize Dockerfiles
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/u_e-why_unbound/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Why unbound?
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/u_e-autodiscover_config/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Autodiscover / Autoconfig
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/u_e-80_to_443/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Redirect HTTP to HTTPS
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/u_e-reeanble-weak-protocols/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Re-enable TLS 1.0 and TLS 1.1
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-07-30 22:21:29 +00:00
2021-09-23 18:30:54 +00:00
2021-07-30 22:21:29 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../manual-guides/u_e-update-hooks/" class = "md-nav__link" >
2021-07-30 22:21:29 +00:00
Run scripts before and after updates
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-07-30 22:21:29 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_9" >
2021-09-23 18:30:54 +00:00
2023-01-08 15:57:17 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_9" id = "__nav_9_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Client Configuration
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_9_label" aria-expanded = "false" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_9" >
< span class = "md-nav__icon md-icon" > < / span >
Client Configuration
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Overview
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-android/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Android
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-apple/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Apple macOS / iOS
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-emclient/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
eM Client
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-kontact/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
KDE Kontact
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-outlook/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Microsoft Outlook
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-thunderbird/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Mozilla Thunderbird
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-windows/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Windows Mail
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../../client/client-manual/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Manual configuration
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--nested" >
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_10" checked >
2023-01-08 15:57:17 +00:00
2021-09-23 18:30:54 +00:00
2023-01-28 16:53:25 +00:00
< label class = "md-nav__link" for = "__nav_10" id = "__nav_10_label" tabindex = "0" >
2021-09-23 18:30:54 +00:00
Third party apps
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2023-01-28 16:53:25 +00:00
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_10_label" aria-expanded = "true" >
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__nav_10" >
< span class = "md-nav__icon md-icon" > < / span >
Third party apps
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-04-25 07:08:57 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../borgmatic/third_party-borgmatic/" class = "md-nav__link" >
2021-04-25 07:08:57 +00:00
Borgmatic Backup
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-25 07:08:57 +00:00
2021-09-23 18:30:54 +00:00
2021-04-25 07:08:57 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< 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" >
2021-04-01 10:20:45 +00:00
Exchange Hybrid Setup
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../gitea/third_party-gitea/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Gitea
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../gogs/third_party-gogs/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Gogs
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-10-02 20:01:42 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../mailman3/third_party-mailman3/" class = "md-nav__link" >
2021-10-04 09:54:04 +00:00
Mailman 3
2021-10-02 20:01:42 +00:00
< / a >
< / li >
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../mailpiler/third_party-mailpiler_integration/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Mailpiler Integration
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../nextcloud/third_party-nextcloud/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Nextcloud
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item" >
2022-07-17 15:02:21 +00:00
< a href = "../../portainer/third_party-portainer/" class = "md-nav__link" >
2021-04-01 10:20:45 +00:00
Portainer
< / a >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< li class = "md-nav__item md-nav__item--active" >
2023-01-28 16:53:25 +00:00
< input class = "md-nav__toggle md-toggle" type = "checkbox" id = "__toc" >
2021-04-01 10:20:45 +00:00
2021-04-20 20:16:43 +00:00
2021-04-01 10:20:45 +00:00
< 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 >
2021-10-28 16:33:35 +00:00
2021-04-01 10:20:45 +00:00
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
2021-04-20 20:16:43 +00:00
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
2021-10-19 17:14:45 +00:00
< a href = "#installing-roundcube" class = "md-nav__link" >
Installing Roundcube
< / a >
2023-07-01 19:22:59 +00:00
< nav class = "md-nav" aria-label = "Installing Roundcube" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#note-on-composer-usage" class = "md-nav__link" >
Note on composer usage
< / a >
2022-01-21 19:53:05 +00:00
< / li >
2023-07-01 19:22:59 +00:00
< li class = "md-nav__item" >
< a href = "#preparation" class = "md-nav__link" >
Preparation
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#optional-spellchecking" class = "md-nav__link" >
Optional: Spellchecking
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#install-mime-type-mappings" class = "md-nav__link" >
Install mime type mappings
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-roundcube-database" class = "md-nav__link" >
Create roundcube database
2022-05-08 20:13:29 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< / li >
< li class = "md-nav__item" >
< a href = "#roundcube-configuration" class = "md-nav__link" >
Roundcube configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#initialize-database" class = "md-nav__link" >
Initialize database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#webserver-configuration" class = "md-nav__link" >
Webserver configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#disable-and-remove-installer" class = "md-nav__link" >
Disable and remove installer
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#update-roundcube-dependencies" class = "md-nav__link" >
Update roundcube dependencies
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#allow-plaintext-authentication-for-the-php-fpm-container-without-using-tls" class = "md-nav__link" >
Allow plaintext authentication for the php-fpm container without using TLS
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#ofelia-job-for-roundcube-housekeeping" class = "md-nav__link" >
Ofelia job for roundcube housekeeping
< / a >
< / li >
< / ul >
< / nav >
2022-05-08 20:13:29 +00:00
< / li >
< li class = "md-nav__item" >
2023-07-01 19:22:59 +00:00
< a href = "#optional-extra-functionality" class = "md-nav__link" >
Optional extra functionality
< / a >
< nav class = "md-nav" aria-label = "Optional extra functionality" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
2022-05-09 15:01:12 +00:00
< a href = "#enable-change-password-function-in-roundcube" class = "md-nav__link" >
Enable change password function in Roundcube
2022-05-08 20:13:29 +00:00
< / a >
< / li >
2023-07-01 19:22:59 +00:00
< li class = "md-nav__item" >
2022-05-09 15:01:12 +00:00
< a href = "#integrate-carddav-addressbooks-in-roundcube" class = "md-nav__link" >
Integrate CardDAV addressbooks in Roundcube
2022-05-08 20:13:29 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< / li >
< li class = "md-nav__item" >
< a href = "#forward-the-client-network-address-to-dovecot" class = "md-nav__link" >
Forward the client network address to dovecot
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#add-roundcube-link-to-mailcow-apps-list" class = "md-nav__link" >
Add roundcube link to mailcow Apps list
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#let-admins-log-into-roundcube-without-password" class = "md-nav__link" >
Let admins log into Roundcube without password
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#finish-installation" class = "md-nav__link" >
Finish installation
< / a >
2022-05-08 20:13:29 +00:00
< / li >
< li class = "md-nav__item" >
2022-05-09 15:01:12 +00:00
< a href = "#upgrading-roundcube" class = "md-nav__link" >
Upgrading Roundcube
2022-05-08 20:13:29 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< nav class = "md-nav" aria-label = "Upgrading Roundcube" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#upgrade-composer-plugins" class = "md-nav__link" >
Upgrade composer plugins
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#upgrade-mime-type-mappings" class = "md-nav__link" >
Upgrade mime type mappings
< / a >
< / li >
< / ul >
< / nav >
2022-05-08 20:13:29 +00:00
< / li >
< li class = "md-nav__item" >
2023-07-01 19:22:59 +00:00
< a href = "#uninstalling-roundcube" class = "md-nav__link" >
Uninstalling roundcube
< / a >
< nav class = "md-nav" aria-label = "Uninstalling roundcube" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#remove-the-web-directory" class = "md-nav__link" >
Remove the web directory
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#remove-the-database" class = "md-nav__link" >
Remove the database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#remove-any-custom-configuration-files-we-added-to-mailcow" class = "md-nav__link" >
Remove any custom configuration files we added to mailcow
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#migration-from-older-mailcow-roundcube-setup" class = "md-nav__link" >
Migration from older mailcow roundcube setup
< / a >
< nav class = "md-nav" aria-label = "Migration from older mailcow roundcube setup" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#create-new-roundcube-database-user-and-database" class = "md-nav__link" >
Create new roundcube database user and database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#migrate-roundcube-data-from-mailcow-database" class = "md-nav__link" >
Migrate roundcube data from mailcow database
2022-01-21 19:53:05 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< / li >
< li class = "md-nav__item" >
< a href = "#update-roundcube-configuration" class = "md-nav__link" >
Update roundcube configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#switch-rcmcarddav-plugin-to-composer-installation-method" class = "md-nav__link" >
Switch RCMCardDAV plugin to composer installation method
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#switch-roundcube-to-new-database" class = "md-nav__link" >
Switch roundcube to new database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#re-enable-roundcube-web-access" class = "md-nav__link" >
Re-enable roundcube web access
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#other-changes" class = "md-nav__link" >
Other changes
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#removing-roundcube-tables-from-mailcow-database" class = "md-nav__link" >
Removing roundcube tables from mailcow database
< / a >
< / li >
< / ul >
< / nav >
2021-04-01 10:20:45 +00:00
< / li >
< / ul >
< / nav >
< / li >
2021-09-23 18:30:54 +00:00
2021-04-01 10:20:45 +00:00
< / 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" >
2021-10-28 16:33:35 +00:00
2021-04-01 10:20:45 +00:00
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
2021-04-20 20:16:43 +00:00
2021-04-01 10:20:45 +00:00
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
2021-10-19 17:14:45 +00:00
< a href = "#installing-roundcube" class = "md-nav__link" >
Installing Roundcube
< / a >
2023-07-01 19:22:59 +00:00
< nav class = "md-nav" aria-label = "Installing Roundcube" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#note-on-composer-usage" class = "md-nav__link" >
Note on composer usage
< / a >
2022-01-21 19:53:05 +00:00
< / li >
2023-07-01 19:22:59 +00:00
< li class = "md-nav__item" >
< a href = "#preparation" class = "md-nav__link" >
Preparation
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#optional-spellchecking" class = "md-nav__link" >
Optional: Spellchecking
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#install-mime-type-mappings" class = "md-nav__link" >
Install mime type mappings
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-roundcube-database" class = "md-nav__link" >
Create roundcube database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#roundcube-configuration" class = "md-nav__link" >
Roundcube configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#initialize-database" class = "md-nav__link" >
Initialize database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#webserver-configuration" class = "md-nav__link" >
Webserver configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#disable-and-remove-installer" class = "md-nav__link" >
Disable and remove installer
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#update-roundcube-dependencies" class = "md-nav__link" >
Update roundcube dependencies
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#allow-plaintext-authentication-for-the-php-fpm-container-without-using-tls" class = "md-nav__link" >
Allow plaintext authentication for the php-fpm container without using TLS
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#ofelia-job-for-roundcube-housekeeping" class = "md-nav__link" >
Ofelia job for roundcube housekeeping
2022-05-08 20:13:29 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< / li >
< / ul >
< / nav >
2022-05-08 20:13:29 +00:00
< / li >
< li class = "md-nav__item" >
2023-07-01 19:22:59 +00:00
< a href = "#optional-extra-functionality" class = "md-nav__link" >
Optional extra functionality
< / a >
< nav class = "md-nav" aria-label = "Optional extra functionality" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
2022-05-09 15:01:12 +00:00
< a href = "#enable-change-password-function-in-roundcube" class = "md-nav__link" >
Enable change password function in Roundcube
2022-05-08 20:13:29 +00:00
< / a >
< / li >
2023-07-01 19:22:59 +00:00
< li class = "md-nav__item" >
2022-05-09 15:01:12 +00:00
< a href = "#integrate-carddav-addressbooks-in-roundcube" class = "md-nav__link" >
Integrate CardDAV addressbooks in Roundcube
2022-05-08 20:13:29 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< / li >
< li class = "md-nav__item" >
< a href = "#forward-the-client-network-address-to-dovecot" class = "md-nav__link" >
Forward the client network address to dovecot
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#add-roundcube-link-to-mailcow-apps-list" class = "md-nav__link" >
Add roundcube link to mailcow Apps list
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#let-admins-log-into-roundcube-without-password" class = "md-nav__link" >
Let admins log into Roundcube without password
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#finish-installation" class = "md-nav__link" >
Finish installation
< / a >
2022-05-08 20:13:29 +00:00
< / li >
< li class = "md-nav__item" >
2022-05-09 15:01:12 +00:00
< a href = "#upgrading-roundcube" class = "md-nav__link" >
Upgrading Roundcube
2022-05-08 20:13:29 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< nav class = "md-nav" aria-label = "Upgrading Roundcube" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#upgrade-composer-plugins" class = "md-nav__link" >
Upgrade composer plugins
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#upgrade-mime-type-mappings" class = "md-nav__link" >
Upgrade mime type mappings
< / a >
< / li >
< / ul >
< / nav >
2022-04-24 17:19:35 +00:00
< / li >
< li class = "md-nav__item" >
2023-07-01 19:22:59 +00:00
< a href = "#uninstalling-roundcube" class = "md-nav__link" >
Uninstalling roundcube
< / a >
< nav class = "md-nav" aria-label = "Uninstalling roundcube" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#remove-the-web-directory" class = "md-nav__link" >
Remove the web directory
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#remove-the-database" class = "md-nav__link" >
Remove the database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#remove-any-custom-configuration-files-we-added-to-mailcow" class = "md-nav__link" >
Remove any custom configuration files we added to mailcow
2022-01-21 19:53:05 +00:00
< / a >
2023-07-01 19:22:59 +00:00
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#migration-from-older-mailcow-roundcube-setup" class = "md-nav__link" >
Migration from older mailcow roundcube setup
< / a >
< nav class = "md-nav" aria-label = "Migration from older mailcow roundcube setup" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#create-new-roundcube-database-user-and-database" class = "md-nav__link" >
Create new roundcube database user and database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#migrate-roundcube-data-from-mailcow-database" class = "md-nav__link" >
Migrate roundcube data from mailcow database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#update-roundcube-configuration" class = "md-nav__link" >
Update roundcube configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#switch-rcmcarddav-plugin-to-composer-installation-method" class = "md-nav__link" >
Switch RCMCardDAV plugin to composer installation method
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#switch-roundcube-to-new-database" class = "md-nav__link" >
Switch roundcube to new database
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#re-enable-roundcube-web-access" class = "md-nav__link" >
Re-enable roundcube web access
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#other-changes" class = "md-nav__link" >
Other changes
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#removing-roundcube-tables-from-mailcow-database" class = "md-nav__link" >
Removing roundcube tables from mailcow database
< / a >
< / li >
< / ul >
< / nav >
2021-04-01 10:20:45 +00:00
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
2022-09-13 11:51:34 +00:00
< div class = "md-content" data-md-component = "content" >
< article class = "md-content__inner md-typeset" >
2021-04-01 10:20:45 +00:00
2022-09-13 11:51:34 +00:00
2022-09-08 11:09:44 +00:00
2023-01-02 13:32:47 +00:00
2021-11-29 18:26:08 +00:00
2022-05-09 15:01:12 +00:00
< h1 > Roundcube< / h1 >
2021-11-29 18:26:08 +00:00
< h2 id = "installing-roundcube" > Installing Roundcube< a class = "headerlink" href = "#installing-roundcube" title = "Permanent link" > ¶ < / a > < / h2 >
2023-07-01 19:22:59 +00:00
< p > Unless otherwise stated, all of the given commands are expected to be executed in the mailcow installation directory,
i.e., the directory containing < code > mailcow.conf< / code > etc. Please do not blindly execute the commands but understand what they
do. None of the commands is supposed to produce an error, so if you encounter an error, fix it if necessary before
continuing with the subsequent commands.< / p >
< h3 id = "note-on-composer-usage" > Note on composer usage< a class = "headerlink" href = "#note-on-composer-usage" title = "Permanent link" > ¶ < / a > < / h3 >
< p > This guide uses composer to update roundcube dependencies or install / update roundcube plugins.< / p >
< p > The roundcube-plugin-installer composer plugin has a < a href = "https://github.com/roundcube/plugin-installer/issues/38" > design issue< / a >
that can lead to composer errors when packages are upgraded or uninstalled in the composer execution.< / p >
< p > The error message will typically tell you that a < code > require< / code > in < code > autoload_real.php< / code > failed because a file could not be
opened. Example:< / 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 > Unfortunately these occur quite frequently, but they can be worked around by updating the autoloader and re-running the
failed command:< / 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" > # Now execute the command that failed again< / span >
< / code > < / pre > < / div >
< h3 id = "preparation" > Preparation< a class = "headerlink" href = "#preparation" title = "Permanent link" > ¶ < / a > < / h3 >
< p > First we load < code > mailcow.conf< / code > so we have access to the mailcow configuration settings for the following commands.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "nb" > source< / span > < span class = "w" > < / span > mailcow.conf
< / code > < / pre > < / div >
< p > Download Roundcube 1.6.x (check for latest release and adapt URL) to the web directory and extract it (here < 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-spellchecking" > Optional: Spellchecking< a class = "headerlink" href = "#optional-spellchecking" title = "Permanent link" > ¶ < / a > < / h3 >
< p > If you need spell check features, create a file < code > data/hooks/phpfpm/aspell.sh< / code > with the following content, then
< code > chmod +x data/hooks/phpfpm/aspell.sh< / code > . This installs a local spell check engine. Note, most modern web browsers have
built in spell check, so you may not want/need this.< / p >
2023-01-13 17:35:18 +00:00
< 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-en< span class = "w" > < / span > < span class = "c1" > # or any other language< / span >
2023-07-01 19:22:59 +00:00
< / code > < / pre > < / div >
< h3 id = "install-mime-type-mappings" > Install mime type mappings< a class = "headerlink" href = "#install-mime-type-mappings" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Download the < code > mime.types< / code > file as it is not included in the php-fpm container.< / 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 = "create-roundcube-database" > Create roundcube database< a class = "headerlink" href = "#create-roundcube-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Create a database for roundcube in the mailcow MySQL container. This creates a new < code > roundcube< / code > database user
with a random password, which will be echoed to the shell and stored in a shell variable for use by later
commands. Note that when you interrupt the process and continue in a new shell, you must set the < code > DBROUNDCUBE< / code >
shell variable manually to the password output by the following commands.< / 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 > < /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 > > < 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 > Database< span class = "w" > < / span > password< span class = "w" > < / span > < span class = "k" > for< / span > < span class = "w" > < / span > user< span class = "w" > < / span > roundcube< span class = "w" > < / span > is< 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" > " CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" < / 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" > " CREATE USER ' roundcube' @' %' IDENTIFIED BY ' < / span > < span class = "si" > ${< / span > < span class = "nv" > DBROUNDCUBE< / span > < span class = "si" > }< / span > < span class = "s2" > ' ;" < / 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" > " GRANT ALL PRIVILEGES ON roundcubemail.* TO ' roundcube' @' %' ;" < / span >
< / code > < / pre > < / div >
< h3 id = "roundcube-configuration" > Roundcube configuration< a class = "headerlink" href = "#roundcube-configuration" title = "Permanent link" > ¶ < / a > < / h3 >
2021-10-03 20:29:03 +00:00
< p > Create a file < code > data/web/rc/config/config.inc.php< / code > with the following content.
2023-07-01 19:22:59 +00:00
- The < code > des_key< / code > option is set to a random value. It is used to temporarily store your IMAP password.
- The plugins list can be adapted to your preference. I added a set of standard plugins that I consider of common
usefulness and which work well together with mailcow:
- The archive plugin adds an archive button that moves selected messages to a user-configurable archive folder.
- The managesieve plugin provides a user-friendly interface to manage server-side mail filtering and vacation / out
of office notification.
- The acl plugin allows to manage access control lists on IMAP folders, including the ability to share IMAP folders
to other users.
- The markasjunk plugin adds buttons to mark selected messages as junk (or messages in the junk folder not as junk)
and moves them to the junk folder or back to the inbox. The sieve filters included with mailcow will take care
that action triggers a learn as spam/ham action in rspamd, so no further configuration of the plugin is needed.
- The zipdownload plugin allows to download multiple message attachments or messages as a zip file.
- If you didn't install spell check in the above step, remove < code > spellcheck_engine< / code > parameter.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > data/web/rc/config/config.inc.php< / span >
< span class = "s" > < ?php< / span >
< span class = "s" > \$config[' db_dsnw' ] = ' mysql://roundcube:${DBROUNDCUBE}@mysql/roundcubemail' ;< / span >
< span class = "s" > \$config[' imap_host' ] = ' dovecot:143' ;< / span >
< span class = "s" > \$config[' smtp_host' ] = ' postfix:588' ;< / span >
< span class = "s" > \$config[' smtp_user' ] = ' %u' ;< / span >
< span class = "s" > \$config[' smtp_pass' ] = ' %p' ;< / span >
< span class = "s" > \$config[' support_url' ] = ' ' ;< / span >
< span class = "s" > \$config[' product_name' ] = ' Roundcube Webmail' ;< / span >
< span class = "s" > \$config[' cipher_method' ] = ' chacha20-poly1305' ;< / span >
< span class = "s" > \$config[' des_key' ] = ' $(LC_ALL=C < /dev/urandom tr -dc " A-Za-z0-9 !#$%& ()*+,-./:;< => ?@[\\]^_{|}~" 2> /dev/null | head -c 32)' ;< / span >
< span class = "s" > \$config[' plugins' ] = [< / span >
< span class = "s" > ' archive' ,< / span >
< span class = "s" > ' managesieve' ,< / span >
< span class = "s" > ' acl' ,< / span >
< span class = "s" > ' markasjunk' ,< / span >
< span class = "s" > ' zipdownload' ,< / span >
< span class = "s" > ];< / span >
< span class = "s" > \$config[' spellcheck_engine' ] = ' aspell' ;< / span >
< span class = "s" > \$config[' mime_types' ] = ' /web/rc/config/mime.types' ;< / span >
< span class = "s" > \$config[' enable_installer' ] = true;< / span >
< span class = "s" > \$config[' managesieve_host' ] = ' dovecot:4190' ;< / 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[' managesieve_vacation' ] = 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
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-07-01 19:22:59 +00:00
< h3 id = "initialize-database" > Initialize database< a class = "headerlink" href = "#initialize-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Point your browser to < code > https://myserver/rc/installer< / code > . Check that the website shows no "NOT OK" check results on
any of the steps, some "NOT AVAILABLE" are expected regarding different database extensions of which we only need MySQL.
Initialize the database and leave the installer. It is not necessary to update the configuration with
the downloaded one, unless you made some settings in the installer you would like to take over.< / p >
< h3 id = "webserver-configuration" > Webserver configuration< a class = "headerlink" href = "#webserver-configuration" title = "Permanent link" > ¶ < / a > < / h3 >
< p > The roundcube directory includes some locations that we do not want to serve to web users. We add a configuration
extension to nginx to only expose the public directory of roundcube.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > 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 >
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-07-01 19:22:59 +00:00
< h3 id = "disable-and-remove-installer" > Disable and remove installer< a class = "headerlink" href = "#disable-and-remove-installer" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Delete the directory < code > data/web/rc/installer< / code > after a successful installation, and set the < code > enable_installer< / code > option
to false in < code > data/web/rc/config/config.inc.php< / 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" > " s/\(\$config\[' enable_installer' \].* = \)true/\1false/" < / span > < span class = "w" > < / span > data/web/rc/config/config.inc.php
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-07-01 19:22:59 +00:00
< h3 id = "update-roundcube-dependencies" > Update roundcube dependencies< a class = "headerlink" href = "#update-roundcube-dependencies" title = "Permanent link" > ¶ < / a > < / h3 >
< p > This step is not strictly necessary, but at least at the time of this writing the dependencies shipped with roundcube
included versions with security vulnerabilities, so it may be a good idea to update the dependencies to the latest
versions. For the same reason, it may be a good idea to run the composer update once in a while.< / 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 > You can also use < code > composer audit< / code > to check for any reported security issues with the installed set of composer packages:< / 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 = "allow-plaintext-authentication-for-the-php-fpm-container-without-using-tls" > Allow plaintext authentication for the php-fpm container without using TLS< a class = "headerlink" href = "#allow-plaintext-authentication-for-the-php-fpm-container-without-using-tls" title = "Permanent link" > ¶ < / a > < / h3 >
< p > We need to allow plaintext authentication in dovecot over unencrypted connection (inside the container network), which
is per default mailcow installation only possible for the SOGo container for the very same purpose. Afterwards restart
the dovecot container so the change becomes effective.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > > 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
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-07-01 19:22:59 +00:00
< h3 id = "ofelia-job-for-roundcube-housekeeping" > Ofelia job for roundcube housekeeping< a class = "headerlink" href = "#ofelia-job-for-roundcube-housekeeping" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Roundcube needs to clean some stale information from the database every once in a while,
for which we will create an ofelia job that runs the roundcube < code > cleandb.sh< / code > script.< / p >
< p > To do this, add the following to < code > docker-compose.override.yml< / code > (if you already have some
adaptations for the php-fpm container, add the labels to the existing section):< / p >
< div class = "highlight" > < pre > < span > < / span > < code > version: ' 2.1'
services:
php-fpm-mailcow:
labels:
ofelia.enabled: " true"
ofelia.job-exec.roundcube_cleandb.schedule: " @every 168h"
ofelia.job-exec.roundcube_cleandb.user: " www-data"
ofelia.job-exec.roundcube_cleandb.command: " /bin/bash -c \" [ -f /web/rc/bin/cleandb.sh ] & & /web/rc/bin/cleandb.sh\" "
< / code > < / pre > < / div >
< h2 id = "optional-extra-functionality" > Optional extra functionality< a class = "headerlink" href = "#optional-extra-functionality" title = "Permanent link" > ¶ < / a > < / h2 >
< h3 id = "enable-change-password-function-in-roundcube" > Enable change password function in Roundcube< a class = "headerlink" href = "#enable-change-password-function-in-roundcube" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Changing the mailcow password from the roundcube UI is supported via the password plugin. We will configure it to use
the mailcow API to update the password, which requires to enable the API first and to get the API key (read/write API
access required). The API can be enabled in the mailcow admin interface, where you can also find the API key.< / p >
< p > Open < code > data/web/rc/config/config.inc.php< / code > and enable the password plugin by adding it to the < code > $config['plugins']< / code > array,
for example:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "x" > $config[' plugins' ] = array(< / span >
< span class = "x" > ' archive' ,< / span >
< span class = "x" > ' managesieve' ,< / span >
< span class = "x" > ' acl' ,< / span >
< span class = "x" > ' markasjunk' ,< / span >
< span class = "x" > ' zipdownload' ,< / span >
< span class = "x" > ' password' ,< / span >
2023-01-13 17:35:18 +00:00
< span class = "x" > );< / span >
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-07-01 19:22:59 +00:00
< p > Configure the password plugin (be sure to adapt < strong > **API_KEY**< / strong > to you mailcow read/write API key):< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > data/web/rc/plugins/password/config.inc.php< / span >
< span class = "s" > < ?php< / span >
< span class = "s" > \$config[' password_driver' ] = ' mailcow' ;< / span >
< span class = "s" > \$config[' password_confirm_current' ] = true;< / span >
< span class = "s" > \$config[' password_mailcow_api_host' ] = ' http://nginx' ;< / span >
< span class = "s" > \$config[' password_mailcow_api_token' ] = ' **API_KEY**' ;< / span >
< span class = "s" > EOCONFIG< / span >
< / code > < / pre > < / div >
< p > Note: If you have changed the mailcow nginx configuration to redirect http requests to https
(e.g., as described < a href = "https://docs.mailcow.email/manual-guides/u_e-80_to_443/" > here< / a > ), then
directly talking to the nginx container via http will not work because nginx is not a hostname contained
in the certificate. In such cases, set < code > password_mailcow_api_host< / code > in the above configuration to the
public URI instead:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > data/web/rc/plugins/password/config.inc.php< / span >
< span class = "s" > < ?php< / span >
< span class = "s" > \$config[' password_driver' ] = ' mailcow' ;< / span >
< span class = "s" > \$config[' password_confirm_current' ] = true;< / span >
< span class = "s" > \$config[' password_mailcow_api_host' ] = ' https://${MAILCOW_HOSTNAME}' ;< / span >
< span class = "s" > \$config[' password_mailcow_api_token' ] = ' **API_KEY**' ;< / span >
< span class = "s" > EOCONFIG< / span >
< / code > < / pre > < / div >
< h3 id = "integrate-carddav-addressbooks-in-roundcube" > Integrate CardDAV addressbooks in Roundcube< a class = "headerlink" href = "#integrate-carddav-addressbooks-in-roundcube" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Install the latest v5 version (the config below is compatible with v5 releases) using composer.
Answer < code > Y< / code > when asked if you want to activate the plugin.< / 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" > " roundcube/carddav:~5" < / span >
< / code > < / pre > < / div >
< p > Edit the file < code > data/web/rc/plugins/carddav/config.inc.php< / code > and insert the following content:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > data/web/rc/plugins/carddav/config.inc.php< / span >
< span class = "s" > < ?php< / span >
< span class = "s" > \$prefs[' _GLOBAL' ][' pwstore_scheme' ] = ' des_key' ;< / span >
< span class = "s" > \$prefs[' SOGo' ] = [< / span >
< span class = "s" > ' accountname' => ' SOGo' ,< / span >
< span class = "s" > ' username' => ' %u' ,< / span >
< span class = "s" > ' password' => ' %p' ,< / span >
< span class = "s" > ' discovery_url' => ' http://sogo:20000/SOGo/dav/' ,< / span >
< span class = "s" > ' name' => ' %N' ,< / span >
< span class = "s" > ' use_categories' => true,< / span >
< span class = "s" > ' fixed' => [' username' , ' password' ],< / span >
< span class = "s" > ];< / span >
< span class = "s" > EOCONFIG< / span >
< / code > < / pre > < / div >
< p > RCMCardDAV will add all addressbooks of the user on login, including < strong > subscribed< / strong > addressbooks shared to the user by
other users.< / p >
< p > If you want to remove the default addressbooks (stored in the Roundcube database), so that only the CardDAV addressbooks
are accessible, append < code > $config['address_book_type'] = '';< / code > to the config file < code > data/web/rc/config/config.inc.php< / code > .< / p >
< p > Note: RCMCardDAV uses additional database tables. After installing (or upgrading) RCMCardDAV, it is required to log
in roundcube (log out first if already logged in) because the database table creation / changes are performed only
during the login to roundcube.< / p >
< h3 id = "forward-the-client-network-address-to-dovecot" > Forward the client network address to dovecot< a class = "headerlink" href = "#forward-the-client-network-address-to-dovecot" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Normally, the IMAP server dovecot will see the network address of the php-fpm container when roundcube interacts with the IMAP
server. Using an IMAP extension and the < code > roundcube-dovecot_client_ip< / code > roundcube plugin, it is possible for roundcube to tell
dovecot the client IP, so it will also show up in the logs as the remote IP. When doing this, login attempts will show in the
dovecot logs like any direct client connections to dovecot, and such failed logins into roundcube will be treated in the same
manner as failed direct IMAP logins, causing blocking of the client with the netfilter container or other mechanisms that may
already be in place to handle bruteforce attacks on the IMAP server.< / p >
< p > For this, the roundcube plugin must be installed.< / 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" > " takerukoushirou/roundcube-dovecot_client_ip:~1" < / span >
< / code > < / pre > < / div >
< p > Furthermore, we must configure dovecot to treat the php-fpm container as part of a trusted network so it is allowed to override
the client IP in the IMAP session. Note that this also enables plaintext authentication for the listed network ranges, so the
explicit overridings of < code > disable_plaintext_auth< / code > done above are not necessary when using this.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > > 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 = "add-roundcube-link-to-mailcow-apps-list" > Add roundcube link to mailcow Apps list< a class = "headerlink" href = "#add-roundcube-link-to-mailcow-apps-list" title = "Permanent link" > ¶ < / a > < / h3 >
< p > You can add Roundcube's link to the mailcow Apps list.
To do this, open or create < code > data/web/inc/vars.local.inc.php< / code > and make sure it includes the following configuration
block:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "cp" > < ?php< / span >
2023-01-13 17:35:18 +00:00
2023-07-01 19:22:59 +00:00
< span class = "nv" > $MAILCOW_APPS< / span > < span class = "o" > =< / span > < span class = "p" > [< / span >
< span class = "p" > [< / span >
< span class = "s1" > ' name' < / span > < span class = "o" > => < / span > < span class = "s1" > ' SOGo' < / span > < span class = "p" > ,< / span >
< span class = "s1" > ' link' < / span > < span class = "o" > => < / span > < span class = "s1" > ' /SOGo/' < / span >
< span class = "p" > ],< / span >
< span class = "p" > [< / span >
< span class = "s1" > ' name' < / span > < span class = "o" > => < / span > < span class = "s1" > ' Roundcube' < / span > < span class = "p" > ,< / span >
< span class = "s1" > ' link' < / span > < span class = "o" > => < / span > < span class = "s1" > ' /rc/' < / span >
< span class = "p" > ]< / span >
< span class = "p" > ];< / span >
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-07-01 19:22:59 +00:00
< h3 id = "let-admins-log-into-roundcube-without-password" > Let admins log into Roundcube without password< a class = "headerlink" href = "#let-admins-log-into-roundcube-without-password" title = "Permanent link" > ¶ < / a > < / h3 >
2022-01-21 19:53:05 +00:00
< p > First, install plugin < a href = "https://github.com/corbosman/dovecot_impersonate/" > dovecot_impersonate< / a > and add Roundcube as an app (see above).< / p >
< p > Edit < code > mailcow.conf< / code > and add the following:< / p >
2022-05-09 15:01:12 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > # Allow admins to log into Roundcube as email user (without any password)
# Roundcube with plugin dovecot_impersonate must be installed first
ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE=y
< / code > < / pre > < / div >
2022-09-01 07:34:39 +00:00
< p > Edit < code > docker-compose.override.yml< / code > and crate/extend the section for < code > php-fpm-mailcow< / code > :< / p >
2022-05-09 15:01:12 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > version: ' 2.1'
2022-01-21 19:53:05 +00:00
services:
php-fpm-mailcow:
environment:
2022-05-09 15:01:12 +00:00
- ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE=${ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE:-n}
< / code > < / pre > < / div >
2022-01-21 19:53:05 +00:00
< p > Edit < code > data/web/js/site/mailbox.js< / code > and the following code after < 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 >
2023-01-01 19:24:29 +00:00
< 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" > ' < a href=" /rc-auth.php?login=' < / 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" > ' " class=" login_as btn btn-xs ' < / 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" > ' btn-primary" target=" _blank" > < i class=" bi bi-envelope-fill" > < /i> Roundcube< /a> ' < / span > < span class = "p" > ;< / span >
< span class = "p" > }< / span >
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2022-01-21 19:53:05 +00:00
< p > Edit < code > data/web/mailbox.php< / code > and add this line to array < a href = "https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/mailbox.php#L33-L43" > < code > $template_data< / code > < / a > :< / p >
2022-05-09 15:01:12 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "x" > ' allow_admin_email_login_roundcube' => (preg_match(" /^(yes|y)+$/i" , $_ENV[" ALLOW_ADMIN_EMAIL_LOGIN_ROUNDCUBE" ])) ? ' true' : ' false' ,< / span >
< / code > < / pre > < / div >
2022-01-21 19:53:05 +00:00
< p > Edit < code > data/web/templates/mailbox.twig< / code > and add this code to the bottom of the < a href = "https://github.com/mailcow/mailcow-dockerized/blob/2f9da5ae93d93bf62a8c2b7a5a6ae50a41170c48/data/web/templates/mailbox.twig#L49-L57" > javascript section< / a > :< / p >
2023-01-01 19:24:29 +00:00
< 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 >
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2022-01-21 19:53:05 +00:00
< p > Copy the contents of the following files from this < 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 >
2023-07-01 19:22:59 +00:00
< h2 id = "finish-installation" > Finish installation< a class = "headerlink" href = "#finish-installation" title = "Permanent link" > ¶ < / a > < / h2 >
2022-01-21 19:53:05 +00:00
< p > Finally, restart mailcow< / p >
2023-01-13 17:35:18 +00:00
< 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" >
2023-07-01 19:22:59 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > docker-compose< span class = "w" > < / span > down
2023-01-13 17:35:18 +00:00
docker-compose< span class = "w" > < / span > up< span class = "w" > < / span > -d
2022-05-09 15:01:12 +00:00
< / code > < / pre > < / div >
2023-01-13 17:35:18 +00:00
< / div >
< / div >
< / div >
2023-07-01 19:22:59 +00:00
< h2 id = "upgrading-roundcube" > Upgrading Roundcube< a class = "headerlink" href = "#upgrading-roundcube" title = "Permanent link" > ¶ < / a > < / h2 >
< p > Upgrading Roundcube is rather simple, go to the < a href = "https://github.com/roundcube/roundcubemail/releases" > GitHub releases< / a >
page for Roundcube and get the link for the "complete.tar.gz" file for the wanted release. Then follow the below
commands and change the URL and Roundcube folder name if needed.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "c1" > # Enter a bash session of the mailcow PHP container< / 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" > # Install required upgrade dependency, then upgrade Roundcube to wanted release< / 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" > # Type ' Y' and press enter to upgrade your install of Roundcube< / span >
< span class = "c1" > # Type ' N' to " Do you want me to fix your local configuration" if prompted< / span >
< span class = "c1" > # If you see " NOTICE: Update dependencies by running php composer.phar update --no-dev" run composer:< / span >
< 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" > # If asked " Do you trust " roundcube/plugin-installer" to execute code and wish to enable it now? (writes " allow-plugins" to composer.json) [y,n,d,?] " hit y and continue.< / span >
< span class = "c1" > # Remove leftover files< / span >
rm< span class = "w" > < / span > -rf< span class = "w" > < / span > /tmp/roundcube*
< span class = "c1" > # If you' re going from 1.5 to 1.6 please run the config file changes below< / span >
sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " s/\$config\[' default_host' \].*< / span > $< span class = "s2" > /\$config\[' imap_host' \]\ =\ ' dovecot:143' \;/" < / span > < span class = "w" > < / span > /web/rc/config/config.inc.php
sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " /\$config\[' default_port' \].*< / span > $< span class = "s2" > /d" < / span > < span class = "w" > < / span > /web/rc/config/config.inc.php
sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " s/\$config\[' smtp_server' \].*< / span > $< span class = "s2" > /\$config\[' smtp_host' \]\ =\ ' postfix:588' \;/" < / span > < span class = "w" > < / span > /web/rc/config/config.inc.php
sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " /\$config\[' smtp_port' \].*< / span > $< span class = "s2" > /d" < / span > < span class = "w" > < / span > /web/rc/config/config.inc.php
sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " s/\$config\[' managesieve_host' \].*< / span > $< span class = "s2" > /\$config\[' managesieve_host' \]\ =\ ' dovecot:4190' \;/" < / span > < span class = "w" > < / span > /web/rc/config/config.inc.php
sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " /\$config\[' managesieve_port' \].*< / span > $< span class = "s2" > /d" < / span > < span class = "w" > < / span > /web/rc/config/config.inc.php
< / code > < / pre > < / div >
< h3 id = "upgrade-composer-plugins" > Upgrade composer plugins< a class = "headerlink" href = "#upgrade-composer-plugins" title = "Permanent link" > ¶ < / a > < / h3 >
< p > To upgrade roundcube plugins installed using composer and dependencies (e.g. RCMCardDAV plugin), you can simply run
composer in the container:< / 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 = "upgrade-mime-type-mappings" > Upgrade mime type mappings< a class = "headerlink" href = "#upgrade-mime-type-mappings" title = "Permanent link" > ¶ < / a > < / h3 >
< p > To upgrade the mime type mappings, re-download them using the command in the
< a href = "#Install-mime-type-mappings" > installation instructions< / a > .< / p >
< h2 id = "uninstalling-roundcube" > Uninstalling roundcube< a class = "headerlink" href = "#uninstalling-roundcube" title = "Permanent link" > ¶ < / a > < / h2 >
< p > For the uninstallation, it is also assumed that the commands are executed in the mailcow installation directory and
that < code > mailcow.conf< / code > has been sourced in the shell, see < a href = "#Preparation" > Preparation< / a > above.< / p >
< h3 id = "remove-the-web-directory" > Remove the web directory< a class = "headerlink" href = "#remove-the-web-directory" title = "Permanent link" > ¶ < / a > < / h3 >
< p > This deletes the roundcube installation and all plugins and dependencies that you may have installed,
including those installed with composer.< / p >
< p > Note: This deletes also any custom configuration that you may have done in roundcube. If you want to preserve it, move it some
place else instead of deleting it.< / 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 = "remove-the-database" > Remove the database< a class = "headerlink" href = "#remove-the-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Note: This clears all data stored for roundcube. If you want to preserve it, you could use < code > mysqldump< / code > before deleting the data,
or simply keep the database.< / 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" > " DROP USER ' roundcube' @' %' ;" < / 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" > " DROP DATABASE roundcubemail;" < / span >
< / code > < / pre > < / div >
< h3 id = "remove-any-custom-configuration-files-we-added-to-mailcow" > Remove any custom configuration files we added to mailcow< a class = "headerlink" href = "#remove-any-custom-configuration-files-we-added-to-mailcow" title = "Permanent link" > ¶ < / a > < / h3 >
< p > To determine these, please read through the installation steps and revert what you changed there.< / p >
< h2 id = "migration-from-older-mailcow-roundcube-setup" > Migration from older mailcow roundcube setup< a class = "headerlink" href = "#migration-from-older-mailcow-roundcube-setup" title = "Permanent link" > ¶ < / a > < / h2 >
< p > Older versions of this instruction used the mailcow database also for roundcube, with a configured name prefix
< code > mailcow_rc1< / code > on all roundcube tables.< / p >
< p > For the migration, it is also assumed that the commands are executed in the mailcow installation directory and
that < code > mailcow.conf< / code > has been sourced in the shell, see < a href = "#Preparation" > Preparation< / a > above. The commands of the different
steps build on each other and must be executed in the same shell. Particularly, some steps set shell variables (most
importantly the < code > DBROUNDCUBE< / code > variable with the database password of the roundcube database user) used in later steps.< / p >
< h3 id = "create-new-roundcube-database-user-and-database" > Create new roundcube database user and database< a class = "headerlink" href = "#create-new-roundcube-database-user-and-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Follow the < a href = "#Create-roundcube-database" > steps above< / a > to create the roundcube database user and the separate database.< / p >
< h3 id = "migrate-roundcube-data-from-mailcow-database" > Migrate roundcube data from mailcow database< a class = "headerlink" href = "#migrate-roundcube-data-from-mailcow-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Before starting the database migration, we disable roundcube to avoid further changes to the roundcube database tables
during the migration.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > 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 > Now we copy the roundcube data to the new database. We strip the database table prefix in the process, you may need to
adjust < code > mailcow\_rc1< / code > in case you used a different prefix. It is also possible to keep the prefix (then also keep the
respective < code > db_prefix< / code > roundcube setting).< / 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" > " show tables like ' mailcow_rc1%' ;" < / span > < span class = "w" > < / span > < span class = "p" > |< / span > < span class = "w" > < / span > tr< span class = "w" > < / span > < span class = "s1" > ' \n\r' < / span > < span class = "w" > < / span > < span class = "s1" > ' ' < / 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" > " 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 ' s/mailcow_rc1//' | mysql -uroot -p< / span > < span class = "si" > ${< / span > < span class = "nv" > DBROOT< / span > < span class = "si" > }< / span > < span class = "s2" > roundcubemail" < / span >
< / code > < / pre > < / div >
< h3 id = "update-roundcube-configuration" > Update roundcube configuration< a class = "headerlink" href = "#update-roundcube-configuration" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Run the following to remove the no longer required < code > db_prefix< / code > option. We also enable logging of roundcube by removing
the settings < code > log_dir< / code > and < code > temp_dir< / code > that were part of the old setup instructions.< / p >
< div class = "highlight" > < pre > < span > < / span > < code > sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " /\$config\[' db_prefix' \].*< / span > $< span class = "s2" > /d" < / 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" > " /\$config\[' log_dir' \].*< / span > $< span class = "s2" > /d" < / 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" > " /\$config\[' temp_dir' \].*< / span > $< span class = "s2" > /d" < / span > < span class = "w" > < / span > data/web/rc/config/config.inc.php
< / code > < / pre > < / div >
< p > We need to adapt the nginx configuration for roundcube to not expose the non-public folders of roundcube, specifically
those containing temporary files and log files:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > 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 > We can also update the < code > cipher_method< / code > to a more secure one but mind that data previously encrypted by roundcube cannot
be decrypted anymore afterwards. This specifically affects stored CardDAV passwords if you use RCMCardDAV and your
users added custom addressbooks (the preset will be fixed automatically upon next login of the user). If you want to
change the < code > cipher_method< / code > , run:< / p >
< div class = "highlight" > < pre > < span > < / span > < code > cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > > data/web/rc/config/config.inc.php< / span >
< span class = "s" > \$config[' cipher_method' ] = ' chacha20-poly1305' ;< / span >
< span class = "s" > EOCONFIG< / span >
< / code > < / pre > < / div >
< h3 id = "switch-rcmcarddav-plugin-to-composer-installation-method" > Switch RCMCardDAV plugin to composer installation method< a class = "headerlink" href = "#switch-rcmcarddav-plugin-to-composer-installation-method" title = "Permanent link" > ¶ < / a > < / h3 >
< p > This is optional but will align your installation with these instructions and enable you to upgrade RCMCardDAV
using composer. This is simply done by deleting the carddav plugin from the installation and installing it using
composer according to the < a href = "#Integrate-CardDAV-addressbooks-in-Roundcube" > instructions above< / a > , which include the creation
of a new RCMCardDAV v5 config. In case you modified your RCMCardDAV configuration file, you may want to backup it before
deleting the plugin and carry over your changes to the new configuration afterwards as well.< / p >
< p > To delete the carddav plugin run the following command, then re-install according to the
< a href = "#Integrate-CardDAV-addressbooks-in-Roundcube" > instructions above< / 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 = "switch-roundcube-to-new-database" > Switch roundcube to new database< a class = "headerlink" href = "#switch-roundcube-to-new-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > First adapt the roundcube configuration to use the new database.
< div class = "highlight" > < pre > < span > < / span > < code > sed< span class = "w" > < / span > -i< span class = "w" > < / span > < span class = "s2" > " /\$config\[' db_dsnw' \].*< / span > $< span class = "s2" > /d" < / span > < span class = "w" > < / span > data/web/rc/config/config.inc.php
cat< span class = "w" > < / span > < span class = "s" > < < EOCONFIG > > data/web/rc/config/config.inc.php< / span >
< span class = "s" > \$config[' db_dsnw' ] = ' mysql://roundcube:${DBROUNDCUBE}@mysql/roundcubemail' ;< / span >
< span class = "s" > EOCONFIG< / span >
< / code > < / pre > < / div > < / p >
< h3 id = "re-enable-roundcube-web-access" > Re-enable roundcube web access< a class = "headerlink" href = "#re-enable-roundcube-web-access" title = "Permanent link" > ¶ < / a > < / h3 >
< p > Execute the chown and chmod commands on sensitive roundcube directories listed in < a href = "#Preparation" > Preparation< / a > , to
make sure the nginx webserver cannot access files it is not supposed to serve.< / p >
< p > Then re-enable web access to roundcube by replacing our temporary roundcube custom config for the one described
< a href = "#Webserver-configuration" > above< / a > , and reload the nginx configuration:< / 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 = "other-changes" > Other changes< a class = "headerlink" href = "#other-changes" title = "Permanent link" > ¶ < / a > < / h3 >
< p > You must also adapt the configuration of the roundcube password plugin according to this instruction, specifically if
you use the password changing functionality, since the old instruction directly changed the password in the database,
whereas this version of the instruction uses the mailcow API for the password change.< / p >
< p > Regarding other changes and additions (e.g., roundcube-dovecot_client_ip plugin), you can go through the current
installation instructions and adapt your configuration accordingly or perform the listed installation steps for new
additions.< / p >
< p > Specifically, consider the following sections:
- < a href = "#Ofelia-job-for-roundcube-housekeeping" > Ofelia job for roundcube housekeeping< / a >
- < a href = "#Allow-plaintext-authentication-for-the-php-fpm-container-without-using-TLS" > Allow plaintext authentication in dovecot< / a > ,
if you adapt the roundcube configuration to contact dovecot via non-encrypted IMAP connection.
- < a href = "#Forward-the-client-network-address-to-dovecot" > Forward the client network address to dovecot< / a > < / p >
< h3 id = "removing-roundcube-tables-from-mailcow-database" > Removing roundcube tables from mailcow database< a class = "headerlink" href = "#removing-roundcube-tables-from-mailcow-database" title = "Permanent link" > ¶ < / a > < / h3 >
< p > After you have verified that the migration was successful and roundcube works using the separate database, you can remove
the roundcube tables from the mailcow database using the following command:< / 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" > " 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" > ' s/ \+/,/g' < / span > < span class = "k" > )< / span > < span class = "s2" > ;" < / span >
< / code > < / pre > < / div >
2021-04-01 10:20:45 +00:00
2022-02-04 13:27:16 +00:00
< hr >
< div class = "md-source-file" >
< small >
Last update:
2023-07-01 19:22:59 +00:00
< span class = "git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_datetime" > 2023-07-01 21:22:02< / span >
2022-02-04 13:27:16 +00:00
< / small >
< / div >
2022-08-13 11:05:16 +00:00
2022-09-12 17:48:35 +00:00
2022-09-13 11:51:34 +00:00
< / article >
< / div >
2023-01-13 17:35:18 +00:00
< 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 >
2021-04-01 10:20:45 +00:00
< / div >
2023-03-14 19:14:57 +00:00
< button type = "button" class = "md-top md-icon" data-md-component = "top" hidden >
2022-04-08 23:16:09 +00:00
< 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 >
2021-09-23 18:47:28 +00:00
Back to top
2023-03-14 19:14:57 +00:00
< / button >
2021-09-23 18:47:28 +00:00
2021-04-01 10:20:45 +00:00
< / main >
2021-11-29 18:26:08 +00:00
< footer class = "md-footer" >
2021-04-01 10:20:45 +00:00
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
2021-11-29 18:26:08 +00:00
< div class = "md-copyright" >
< div class = "md-copyright__highlight" >
2023-05-23 09:34:00 +00:00
Copyright © 2023 mailcow Team & Community
2021-11-29 18:26:08 +00:00
< / div >
Made with
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
Material for MkDocs
< / a >
< / div >
2021-04-01 10:20:45 +00:00
2021-11-29 18:26:08 +00:00
< div class = "md-social" >
2021-04-01 10:20:45 +00:00
2023-02-03 19:00:42 +00:00
2021-04-01 10:20:45 +00:00
2021-11-29 18:26:08 +00:00
2022-09-24 13:52:26 +00:00
< a href = "https://mailcow.email" target = "_blank" rel = "noopener" title = "mailcow.email" class = "md-social__link" >
2023-04-07 21:17:01 +00:00
< 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 >
2021-11-29 18:26:08 +00:00
< / a >
2021-04-01 10:20:45 +00:00
2023-02-03 19:00:42 +00:00
2021-04-01 10:20:45 +00:00
2021-11-29 18:26:08 +00:00
< a href = "https://github.com/mailcow" target = "_blank" rel = "noopener" title = "github.com" class = "md-social__link" >
2023-04-07 21:17:01 +00:00
< 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 >
2021-11-29 18:26:08 +00:00
< / a >
2022-01-21 19:35:11 +00:00
2023-02-03 19:00:42 +00:00
2022-01-21 19:35:11 +00:00
< a href = "https://twitter.com/mailcow_email" target = "_blank" rel = "noopener" title = "twitter.com" class = "md-social__link" >
2023-04-07 21:17:01 +00:00
< 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 >
2022-01-21 19:35:11 +00:00
< / a >
2021-11-29 18:26:08 +00:00
< / div >
2021-04-01 10:20:45 +00:00
< / div >
< / div >
< / footer >
< / div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
2022-08-13 11:05:16 +00:00
2023-03-10 11:40:40 +00:00
< 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.208ed371.min.js" , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.placeholder" : "Type to start searching" , "search.result.term.missing" : "Missing" , "select.version" : "Select version" } } < / script >
2021-04-01 10:20:45 +00:00
2023-06-24 12:01:08 +00:00
< script src = "../../../../assets/javascripts/bundle.b425cdc4.min.js" > < / script >
2021-04-01 10:20:45 +00:00
2023-06-15 16:21:58 +00:00
< script src = "../../../../assets/javascripts/client.js" > < / script >
2021-04-01 10:20:45 +00:00
< / body >
< / html >