2021-03-28 12:40:56 +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" >
2021-09-22 23:30:04 +00:00
< meta name = "description" content = "A fullstack but simple mail-server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) using Docker." >
2021-03-28 12:40:56 +00:00
< meta name = "author" content = "docker-mailserver (Github Organization)" >
< link rel = "canonical" href = "https://docker-mailserver.github.io/docker-mailserver/edge/examples/tutorials/basic-installation/" >
< link rel = "icon" href = "../../../assets/logo/favicon-32x32.png" >
2022-07-23 01:18:06 +00:00
< meta name = "generator" content = "mkdocs-1.3.0, mkdocs-material-8.3.9" >
2021-03-28 12:40:56 +00:00
< title > Tutorials | Basic Installation - Docker Mailserver< / title >
2022-07-23 01:18:06 +00:00
< link rel = "stylesheet" href = "../../../assets/stylesheets/main.1d29e8d0.min.css" >
2021-03-28 12:40:56 +00:00
2022-07-08 15:17:56 +00:00
< link rel = "stylesheet" href = "../../../assets/stylesheets/palette.cbb835fc.min.css" >
2021-03-28 12:40:56 +00:00
2022-07-08 15:17:56 +00:00
2021-03-28 12:40:56 +00:00
2022-04-03 11:29:35 +00:00
2021-03-28 12:40:56 +00:00
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
2022-04-03 11:29:35 +00:00
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback" >
2021-12-13 07:43:26 +00:00
< style > : root { --md-text-font : "Roboto" ; --md-code-font : "Roboto Mono" } < / style >
2021-03-28 12:40:56 +00:00
< link rel = "stylesheet" href = "../../../assets/css/customizations.css" >
2021-12-13 07:43:26 +00:00
< script > _ _md _scope = new URL ( "../../.." , location ) , _ _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-03-28 12:40:56 +00:00
2021-06-16 11:25:02 +00:00
2021-03-28 12:40:56 +00:00
< / head >
2021-04-08 10:28:06 +00:00
2021-03-28 12:40:56 +00:00
2021-04-08 10:28:06 +00:00
< body dir = "ltr" data-md-color-scheme = "default" data-md-color-primary = "indigo" data-md-color-accent = "indigo" >
2021-03-28 12:40:56 +00:00
2021-04-01 20:45:17 +00:00
2022-01-27 17:13:38 +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-08 10:28:06 +00:00
2021-03-28 12:40:56 +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" >
2023-02-19 12:25:43 +00:00
< a href = "#a-basic-example-with-relevant-environmental-variables" class = "md-skip" >
2021-03-28 12:40:56 +00:00
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
< / div >
2021-12-13 07:43:26 +00:00
< div data-md-component = "outdated" hidden >
< aside class = "md-banner md-banner--warning" >
< / aside >
< / div >
2021-09-26 08:38:19 +00:00
< header class = "md-header" data-md-component = "header" >
2021-03-28 12:40:56 +00:00
< nav class = "md-header__inner md-grid" aria-label = "Header" >
< a href = "../../.." title = "Docker Mailserver" class = "md-header__button md-logo" aria-label = "Docker Mailserver" data-md-component = "logo" >
2021-05-20 10:25:17 +00:00
< img src = "../../../assets/logo/dmo-logo-white.min.svg" alt = "logo" >
2021-03-28 12:40:56 +00:00
< / a >
< label class = "md-header__button md-icon" for = "__drawer" >
2022-07-08 15:17:56 +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-03-28 12:40:56 +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" >
Docker Mailserver
< / span >
< / div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
Tutorials | Basic Installation
< / span >
< / div >
< / div >
< / div >
2021-04-01 20:45:17 +00:00
2021-04-08 10:28:06 +00:00
< form class = "md-header__option" data-md-component = "palette" >
2021-06-08 01:20:52 +00:00
< input class = "md-option" data-md-color-media = "(prefers-color-scheme: light)" 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" >
2021-04-18 11:25:31 +00:00
< label class = "md-header__button md-icon" title = "Switch to dark mode" for = "__palette_2" hidden >
2022-07-08 15:17:56 +00:00
< 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 >
2021-04-18 11:25:31 +00:00
< / label >
2021-04-08 10:28:06 +00:00
2021-06-08 01:20:52 +00:00
< input class = "md-option" data-md-color-media = "(prefers-color-scheme: dark)" data-md-color-scheme = "slate" data-md-color-primary = "indigo" data-md-color-accent = "blue" aria-label = "Switch to light mode" type = "radio" name = "__palette" id = "__palette_2" >
2021-04-18 11:25:31 +00:00
< label class = "md-header__button md-icon" title = "Switch to light mode" for = "__palette_1" hidden >
2022-07-08 15:17:56 +00:00
< 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 >
2021-04-18 11:25:31 +00:00
< / label >
2021-04-08 10:28:06 +00:00
< / form >
2021-04-01 20:45:17 +00:00
2021-03-28 12:40:56 +00:00
< label class = "md-header__button md-icon" for = "__search" >
2022-07-08 15:17:56 +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-03-28 12:40:56 +00:00
< / label >
2021-12-13 07:43:26 +00:00
< div class = "md-search" data-md-component = "search" role = "dialog" >
2021-03-28 12:40:56 +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-29 20:46:21 +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-03-28 12:40:56 +00:00
< label class = "md-search__icon md-icon" for = "__search" >
2022-07-08 15:17:56 +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-03-28 12:40:56 +00:00
< / label >
2021-07-29 20:46:21 +00:00
< nav class = "md-search__options" aria-label = "Search" >
< button type = "reset" class = "md-search__icon md-icon" aria-label = "Clear" tabindex = "-1" >
2022-07-08 15:17:56 +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-29 20:46:21 +00:00
< / button >
< / nav >
2021-03-28 12:40:56 +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 >
< ol class = "md-search-result__list" > < / ol >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "md-header__source" >
2022-04-03 11:29:35 +00:00
< a href = "https://github.com/docker-mailserver/docker-mailserver" title = "Go to repository" class = "md-source" data-md-component = "source" >
2021-03-28 12:40:56 +00:00
< div class = "md-source__icon md-icon" >
2022-04-03 11:29:35 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 496 512" > <!-- ! Font Awesome Free 6.1.1 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 2022 Fonticons, Inc. --> < path d = "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" / > < / svg >
2021-03-28 12:40:56 +00:00
< / div >
< div class = "md-source__repository" >
docker-mailserver
< / div >
< / a >
< / div >
< / nav >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / header >
< div class = "md-container" data-md-component = "container" >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< nav class = "md-tabs" aria-label = "Tabs" data-md-component = "tabs" >
< div class = "md-tabs__inner md-grid" >
< ul class = "md-tabs__list" >
< li class = "md-tabs__item" >
< a href = "../../.." class = "md-tabs__link" >
Home
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../introduction/" class = "md-tabs__link" >
Introduction
< / a >
< / li >
2023-02-19 12:25:43 +00:00
< li class = "md-tabs__item" >
< a href = "../../../usage/" class = "md-tabs__link" >
Usage
< / a >
< / li >
2021-03-28 12:40:56 +00:00
< li class = "md-tabs__item" >
2023-02-19 12:25:43 +00:00
< a href = "../../../config/environment/" class = "md-tabs__link" >
2021-03-28 12:40:56 +00:00
Configuration
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "./" class = "md-tabs__link md-tabs__link--active" >
Examples
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../faq/" class = "md-tabs__link" >
FAQ
< / a >
< / li >
< li class = "md-tabs__item" >
2022-09-23 06:23:55 +00:00
< a href = "../../../contributing/general/" class = "md-tabs__link" >
2021-03-28 12:40:56 +00:00
Contributing
< / a >
< / li >
< li class = "md-tabs__item" >
2021-09-13 07:04:09 +00:00
< a href = "https://hub.docker.com/r/mailserver/docker-mailserver/" class = "md-tabs__link" >
2021-03-28 12:40:56 +00:00
DockerHub
< / a >
< / li >
< li class = "md-tabs__item" >
2021-09-13 07:04:09 +00:00
< a href = "https://github.com/docker-mailserver/docker-mailserver/pkgs/container/docker-mailserver" class = "md-tabs__link" >
2021-03-28 12:40:56 +00:00
GHCR
< / a >
< / li >
< / ul >
< / div >
< / nav >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +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 md-nav--lifted" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
< a href = "../../.." title = "Docker Mailserver" class = "md-nav__button md-logo" aria-label = "Docker Mailserver" data-md-component = "logo" >
2021-05-20 10:25:17 +00:00
< img src = "../../../assets/logo/dmo-logo-white.min.svg" alt = "logo" >
2021-03-28 12:40:56 +00:00
< / a >
Docker Mailserver
< / label >
< div class = "md-nav__source" >
2022-04-03 11:29:35 +00:00
< a href = "https://github.com/docker-mailserver/docker-mailserver" title = "Go to repository" class = "md-source" data-md-component = "source" >
2021-03-28 12:40:56 +00:00
< div class = "md-source__icon md-icon" >
2022-04-03 11:29:35 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 496 512" > <!-- ! Font Awesome Free 6.1.1 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 2022 Fonticons, Inc. --> < path d = "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" / > < / svg >
2021-03-28 12:40:56 +00:00
< / div >
< div class = "md-source__repository" >
docker-mailserver
< / div >
< / a >
< / div >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../.." class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../introduction/" class = "md-nav__link" >
Introduction
< / a >
< / li >
2023-02-19 12:25:43 +00:00
< li class = "md-nav__item" >
< a href = "../../../usage/" class = "md-nav__link" >
Usage
< / a >
< / li >
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4" type = "checkbox" id = "__nav_4" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4" >
2021-09-26 08:38:19 +00:00
Configuration
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Configuration" data-md-level = "1" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Configuration
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
2023-02-19 12:25:43 +00:00
< a href = "../../../config/environment/" class = "md-nav__link" >
Environment Variables
2021-03-28 12:40:56 +00:00
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-05-11 10:16:04 +00:00
< li class = "md-nav__item" >
2023-02-19 12:25:43 +00:00
< a href = "../../../config/setup.sh/" class = "md-nav__link" >
Your Best Friend setup.sh
2021-05-11 10:16:04 +00:00
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-05-11 10:16:04 +00:00
2021-09-26 08:38:19 +00:00
2021-05-11 10:16:04 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_3" type = "checkbox" id = "__nav_4_3" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_3" >
2021-09-26 08:38:19 +00:00
User Management
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "User Management" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_3" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
User Management
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/user-management/accounts/" class = "md-nav__link" >
Accounts
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/user-management/aliases/" class = "md-nav__link" >
Aliases
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_4" type = "checkbox" id = "__nav_4_4" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_4" >
2021-09-26 08:38:19 +00:00
Best Practices
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Best Practices" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_4" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Best Practices
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/best-practices/dkim/" class = "md-nav__link" >
DKIM
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/best-practices/dmarc/" class = "md-nav__link" >
DMARC
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/best-practices/spf/" class = "md-nav__link" >
SPF
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/best-practices/autodiscover/" class = "md-nav__link" >
Auto-discovery
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_5" type = "checkbox" id = "__nav_4_5" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_5" >
2021-09-26 08:38:19 +00:00
Security
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Security" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_5" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Security
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/security/understanding-the-ports/" class = "md-nav__link" >
Understanding the Ports
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/security/ssl/" class = "md-nav__link" >
SSL/TLS
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/security/fail2ban/" class = "md-nav__link" >
Fail2Ban
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-04-18 00:13:06 +00:00
2021-09-26 08:38:19 +00:00
2021-04-18 00:13:06 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/security/mail_crypt/" class = "md-nav__link" >
Mail Encryption
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-04-18 00:13:06 +00:00
2023-01-25 09:29:36 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/security/rspamd/" class = "md-nav__link" >
Rspamd
< / a >
< / li >
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_6" type = "checkbox" id = "__nav_4_6" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_6" >
2021-09-26 08:38:19 +00:00
Troubleshooting
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Troubleshooting" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_6" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Troubleshooting
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/troubleshooting/debugging/" class = "md-nav__link" >
Debugging
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/pop3/" class = "md-nav__link" >
Mail Delivery with POP3
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_8" type = "checkbox" id = "__nav_4_8" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_8" >
2021-09-26 08:38:19 +00:00
Advanced Configuration
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Advanced Configuration" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_8" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Advanced Configuration
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/optional-config/" class = "md-nav__link" >
Optional Configuration
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_8_2" type = "checkbox" id = "__nav_4_8_2" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_8_2" >
2021-09-26 08:38:19 +00:00
Maintenance
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Maintenance" data-md-level = "3" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_8_2" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Maintenance
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/maintenance/update-and-cleanup/" class = "md-nav__link" >
Update and Cleanup
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_8_3" type = "checkbox" id = "__nav_4_8_3" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_8_3" >
2021-09-26 08:38:19 +00:00
Override the Default Configs
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Override the Default Configs" data-md-level = "3" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_8_3" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Override the Default Configs
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/override-defaults/dovecot/" class = "md-nav__link" >
Dovecot
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/override-defaults/postfix/" class = "md-nav__link" >
Postfix
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-04-01 20:45:17 +00:00
2021-09-26 08:38:19 +00:00
2021-04-01 20:45:17 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/override-defaults/user-patches/" class = "md-nav__link" >
Modifications via Script
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-04-01 20:45:17 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/auth-ldap/" class = "md-nav__link" >
LDAP Authentication
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/mail-sieve/" class = "md-nav__link" >
Email Filtering with Sieve
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/mail-fetchmail/" class = "md-nav__link" >
Email Gathering with Fetchmail
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_4_8_7" type = "checkbox" id = "__nav_4_8_7" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_4_8_7" >
2021-09-26 08:38:19 +00:00
Email Forwarding
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Email Forwarding" data-md-level = "3" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_4_8_7" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Email Forwarding
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/mail-forwarding/relay-hosts/" class = "md-nav__link" >
Relay Hosts
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/mail-forwarding/aws-ses/" class = "md-nav__link" >
AWS SES
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/full-text-search/" class = "md-nav__link" >
Full-Text Search
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/kubernetes/" class = "md-nav__link" >
Kubernetes
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/ipv6/" class = "md-nav__link" >
IPv6
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-19 16:56:20 +00:00
2021-09-26 08:38:19 +00:00
2021-09-19 16:56:20 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/podman/" class = "md-nav__link" >
Podman
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-09-19 16:56:20 +00:00
2022-05-07 22:28:58 +00:00
< li class = "md-nav__item" >
< a href = "../../../config/advanced/dovecot-master-accounts/" class = "md-nav__link" >
Dovecot Master Accounts
< / a >
< / li >
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_5" type = "checkbox" id = "__nav_5" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_5" >
2021-09-26 08:38:19 +00:00
Examples
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Examples" data-md-level = "1" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_5" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Examples
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--active md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle" data-md-toggle = "__nav_5_1" type = "checkbox" id = "__nav_5_1" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_5_1" >
2021-09-26 08:38:19 +00:00
Tutorials
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Tutorials" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_5_1" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Tutorials
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--active" >
< input class = "md-nav__toggle md-toggle" data-md-toggle = "toc" type = "checkbox" id = "__toc" >
2021-04-18 11:25:31 +00:00
2021-03-28 12:40:56 +00:00
< label class = "md-nav__link md-nav__link--active" for = "__toc" >
Basic Installation
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< a href = "./" class = "md-nav__link md-nav__link--active" >
Basic Installation
< / a >
2021-10-30 08:57:02 +00:00
2021-03-28 12:40:56 +00:00
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
2021-04-18 11:25:31 +00:00
2021-03-28 12:40:56 +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" >
2023-02-19 12:25:43 +00:00
< a href = "#a-basic-example-with-relevant-environmental-variables" class = "md-nav__link" >
A Basic Example With Relevant Environmental Variables
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#a-basic-ldap-setup" class = "md-nav__link" >
A Basic LDAP Setup
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#a-detailed-example" class = "md-nav__link" >
A Detailed Example
2021-03-28 12:40:56 +00:00
< / a >
< / li >
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
< a href = "../mailserver-behind-proxy/" class = "md-nav__link" >
2021-09-27 07:02:06 +00:00
Mailserver behind Proxy
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../docker-build/" class = "md-nav__link" >
Building your own Docker image
2021-03-28 12:40:56 +00:00
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-07-30 11:39:16 +00:00
2021-09-26 08:38:19 +00:00
2021-07-30 11:39:16 +00:00
< li class = "md-nav__item" >
< a href = "../blog-posts/" class = "md-nav__link" >
Blog Posts
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-07-30 11:39:16 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_5_2" type = "checkbox" id = "__nav_5_2" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_5_2" >
2021-09-26 08:38:19 +00:00
Use Cases
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Use Cases" data-md-level = "2" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_5_2" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Use Cases
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
2022-02-21 11:06:07 +00:00
< a href = "../../use-cases/forward-only-mailserver-with-ldap-authentication/" class = "md-nav__link" >
2021-09-22 23:30:04 +00:00
Forward-Only Mail-Server with LDAP
2021-03-28 12:40:56 +00:00
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-06-22 22:29:09 +00:00
2021-09-26 08:38:19 +00:00
2021-06-22 22:29:09 +00:00
< li class = "md-nav__item" >
2022-02-21 11:06:07 +00:00
< a href = "../../use-cases/imap-folders/" class = "md-nav__link" >
2021-06-22 22:29:09 +00:00
Customize IMAP Folders
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-06-22 22:29:09 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../../../faq/" class = "md-nav__link" >
FAQ
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
2023-02-19 12:25:43 +00:00
< input class = "md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle = "__nav_7" type = "checkbox" id = "__nav_7" checked >
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2023-02-19 12:25:43 +00:00
< label class = "md-nav__link" for = "__nav_7" >
2021-09-26 08:38:19 +00:00
Contributing
< span class = "md-nav__icon md-icon" > < / span >
< / label >
2021-03-28 12:40:56 +00:00
< nav class = "md-nav" aria-label = "Contributing" data-md-level = "1" >
2023-02-19 12:25:43 +00:00
< label class = "md-nav__title" for = "__nav_7" >
2021-03-28 12:40:56 +00:00
< span class = "md-nav__icon md-icon" > < / span >
Contributing
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
2022-09-23 06:23:55 +00:00
< a href = "../../../contributing/general/" class = "md-nav__link" >
General Information
2021-03-28 12:40:56 +00:00
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
2023-01-24 22:11:18 +00:00
< li class = "md-nav__item" >
< a href = "../../../contributing/tests/" class = "md-nav__link" >
Tests
< / a >
< / li >
2021-03-28 12:40:56 +00:00
< li class = "md-nav__item" >
2022-09-23 06:23:55 +00:00
< a href = "../../../contributing/issues-and-pull-requests/" class = "md-nav__link" >
Issues and Pull Requests
2021-03-28 12:40:56 +00:00
< / a >
< / li >
2021-09-26 08:38:19 +00:00
2021-03-28 12:40:56 +00:00
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
2021-09-13 07:04:09 +00:00
< a href = "https://hub.docker.com/r/mailserver/docker-mailserver/" class = "md-nav__link" >
2021-03-28 12:40:56 +00:00
DockerHub
< / a >
< / li >
< li class = "md-nav__item" >
2021-09-13 07:04:09 +00:00
< a href = "https://github.com/docker-mailserver/docker-mailserver/pkgs/container/docker-mailserver" class = "md-nav__link" >
2021-03-28 12:40:56 +00:00
GHCR
< / a >
< / 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-30 08:57:02 +00:00
2021-03-28 12:40:56 +00:00
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
2021-04-18 11:25:31 +00:00
2021-03-28 12:40:56 +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" >
2023-02-19 12:25:43 +00:00
< a href = "#a-basic-example-with-relevant-environmental-variables" class = "md-nav__link" >
A Basic Example With Relevant Environmental Variables
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#a-basic-ldap-setup" class = "md-nav__link" >
A Basic LDAP Setup
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#a-detailed-example" class = "md-nav__link" >
A Detailed Example
2021-03-28 12:40:56 +00:00
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-content" data-md-component = "content" >
< article class = "md-content__inner md-typeset" >
2022-07-08 15:17:56 +00:00
< a href = "https://github.com/docker-mailserver/docker-mailserver/edit/master/docs/content/examples/tutorials/basic-installation.md" title = "Edit this page" class = "md-content__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z" / > < / svg >
< / a >
2021-12-13 07:43:26 +00:00
2022-02-19 20:27:29 +00:00
2021-12-13 07:43:26 +00:00
< h1 > Basic Installation< / h1 >
2023-02-19 12:25:43 +00:00
< h2 id = "a-basic-example-with-relevant-environmental-variables" > < a class = "toclink" href = "#a-basic-example-with-relevant-environmental-variables" > A Basic Example With Relevant Environmental Variables< / a > < / h2 >
< p > This example provides you only with a basic example of what a minimal setup could look like. We < strong > strongly recommend< / strong > that you go through the configuration file yourself and adjust everything to your needs. The default < a href = "https://github.com/docker-mailserver/docker-mailserver/blob/master/docker-compose.yml" > docker-compose.yml< / a > can be used for the purpose out-of-the-box, see the < a href = "../../../usage/" > < em > Usage< / em > chapter< / a > .< / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "nt" > services< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > mailserver< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > image< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > docker.io/mailserver/docker-mailserver:latest< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > container_name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mailserver< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "c1" > # Provide the FQDN of your mail server here (Your DNS MX record should point to this value)< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > hostname< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mail.example.com< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > ports< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 25:25" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 587:587" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 993:993" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > volumes< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-data/:/var/mail/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-state/:/var/mail-state/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-logs/:/var/log/mail/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/config/:/tmp/docker-mailserver/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > /etc/localtime:/etc/localtime:ro< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > environment< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_SPAMASSASSIN=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SPAMASSASSIN_SPAM_TO_INBOX=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_CLAMAV=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_FAIL2BAN=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_POSTGREY=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > cap_add< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > NET_ADMIN< / span > < span class = "w" > < / span > < span class = "c1" > # For Fail2Ban to work< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > restart< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > always< / span > < span class = "w" > < / span >
< / code > < / pre > < / div >
< h2 id = "a-basic-ldap-setup" > < a class = "toclink" href = "#a-basic-ldap-setup" > A Basic LDAP Setup< / a > < / h2 >
< p > < strong > Note< / strong > There are currently no LDAP maintainers. If you encounter issues, please raise them in the issue tracker, but be aware that the core maintainers team will most likely not be able to help you. < strong > We would appreciate and we encourage everyone to actively participate in maintaining LDAP-related code by becoming a maintainer!< / strong > < / p >
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "nt" > services< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > mailserver< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > image< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > docker.io/mailserver/docker-mailserver:latest< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > container_name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mailserver< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "c1" > # Provide the FQDN of your mail server here (Your DNS MX record should point to this value)< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > hostname< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mail.example.com< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > ports< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 25:25" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 587:587" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 993:993" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > volumes< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-data/:/var/mail/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-state/:/var/mail-state/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-logs/:/var/log/mail/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/config/:/tmp/docker-mailserver/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > /etc/localtime:/etc/localtime:ro< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > environment< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_SPAMASSASSIN=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SPAMASSASSIN_SPAM_TO_INBOX=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_CLAMAV=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_FAIL2BAN=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_POSTGREY=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ACCOUNT_PROVISIONER=LDAP< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_SERVER_HOST=ldap< / span > < span class = "w" > < / span > < span class = "c1" > # your ldap container/IP/ServerName< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_SEARCH_BASE=ou=people,dc=localhost,dc=localdomain< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_BIND_DN=cn=admin,dc=localhost,dc=localdomain< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_BIND_PW=admin< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_QUERY_FILTER_USER=(& (mail=%s)(mailEnabled=TRUE))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_QUERY_FILTER_GROUP=(& (mailGroupMember=%s)(mailEnabled=TRUE))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_QUERY_FILTER_ALIAS=(|(& (mailAlias=%s)(objectClass=PostfixBookMailForward))(& (mailAlias=%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE)))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > LDAP_QUERY_FILTER_DOMAIN=(|(& (mail=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(& (mailGroupMember=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(& (mailalias=*@%s)(objectClass=PostfixBookMailForward)))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > DOVECOT_PASS_FILTER=(& (objectClass=PostfixBookMailAccount)(uniqueIdentifier=%n))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > DOVECOT_USER_FILTER=(& (objectClass=PostfixBookMailAccount)(uniqueIdentifier=%n))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_SASLAUTHD=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SASLAUTHD_MECHANISMS=ldap< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SASLAUTHD_LDAP_SERVER=ldap< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=localhost,dc=localdomain< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SASLAUTHD_LDAP_PASSWORD=admin< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SASLAUTHD_LDAP_SEARCH_BASE=ou=people,dc=localhost,dc=localdomain< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SASLAUTHD_LDAP_FILTER=(& (objectClass=PostfixBookMailAccount)(uniqueIdentifier=%U))< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > POSTMASTER_ADDRESS=postmaster@localhost.localdomain< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > cap_add< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > NET_ADMIN< / span > < span class = "w" > < / span > < span class = "c1" > # For Fail2Ban to work< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > restart< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > always< / span > < span class = "w" > < / span >
< / code > < / pre > < / div >
< h2 id = "a-detailed-example" > < a class = "toclink" href = "#a-detailed-example" > A Detailed Example< / a > < / h2 >
< div class = "admonition note" >
< p class = "admonition-title" > Note< / p >
2021-09-26 23:47:17 +00:00
< p > This is a community contributed guide. Please let us know via a Github Issue if you're having any difficulty following the guide so that we can update it.< / p >
2023-02-19 12:25:43 +00:00
< / div >
2021-09-26 23:47:17 +00:00
< p > This guide is focused on only using < a href = "../../../config/security/understanding-the-ports/" > SMTP ports (not POP3 and IMAP)< / a > with the intent to send received mail to another MTA service such as < em > Gmail< / em > . It is not intended to have a MUA client (< em > eg: Thunderbird< / em > ) to retrieve mail directly from < code > docker-mailserver< / code > via POP3/IMAP.< / p >
< p > In this setup < code > docker-mailserver< / code > is not intended to receive email externally, so no anti-spam or anti-virus software is needed, making the service lighter to run.< / p >
2021-03-28 12:40:56 +00:00
< div class = "admonition warning" >
2021-09-26 23:47:17 +00:00
< p class = "admonition-title" > Open Relays< / p >
< p > Adding the docker network's gateway to the list of trusted hosts (< em > eg: using the < code > network< / code > or < code > connected-networks< / code > option< / em > ), can create an < a href = "https://en.wikipedia.org/wiki/Open_mail_relay" > < strong > open relay< / strong > < / a > . For instance < a href = "https://github.com/docker-mailserver/docker-mailserver/issues/1405#issuecomment-590106498" > if IPv6 is enabled on the host machine, but not in Docker< / a > .< / p >
2021-03-28 12:40:56 +00:00
< / div >
2021-09-26 23:47:17 +00:00
< ol >
2021-03-28 12:40:56 +00:00
< li >
2021-09-26 23:47:17 +00:00
< p > If you're running a version of < code > docker-mailserver< / code > earlier than v10.2, < a href = "../../../config/setup.sh/" > you'll need to get < code > setup.sh< / code > < / a > . Otherwise you can substitute < code > ./setup.sh < command> < / code > with < code > docker exec mailserver setup < command> < / code > .< / p >
< / li >
< li >
< p > Pull the docker image: < code > docker pull docker.io/mailserver/docker-mailserver:latest< / code > .< / p >
2021-03-28 12:40:56 +00:00
< / li >
< li >
< p > Create the file < code > docker-compose.yml< / code > with a content like this:< / p >
< div class = "admonition example" >
< p class = "admonition-title" > Example< / p >
2023-02-19 12:25:43 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > < span class = "nt" > services< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
2022-01-27 17:13:38 +00:00
< span class = "w" > < / span > < span class = "nt" > mailserver< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > image< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > docker.io/mailserver/docker-mailserver:latest< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > container_name< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mailserver< / span > < span class = "w" > < / span >
2023-02-19 12:25:43 +00:00
< span class = "w" > < / span > < span class = "c1" > # Provide the FQDN of your mail server here (Your DNS MX record should point to this value)< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > hostname< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > mail.example.com< / span > < span class = "w" > < / span >
2022-01-27 17:13:38 +00:00
< span class = "w" > < / span > < span class = "nt" > ports< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 25:25" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 587:587" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "s" > " 465:465" < / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > volumes< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-data/:/var/mail/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-state/:/var/mail-state/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/mail-logs/:/var/log/mail/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ./docker-data/dms/config/:/tmp/docker-mailserver/< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > /etc/localtime:/etc/localtime:ro< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > environment< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > ENABLE_FAIL2BAN=1< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "c1" > # Using letsencrypt for SSL/TLS certificates< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SSL_TYPE=letsencrypt< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "c1" > # Allow sending emails from other docker containers< / span > < span class = "w" > < / span >
2023-03-22 10:43:45 +00:00
< span class = "w" > < / span > < span class = "c1" > # Beware creating an Open Relay: https://docker-mailserver.github.io/docker-mailserver/latest/config/environment/#permit_docker< / span > < span class = "w" > < / span >
2022-01-27 17:13:38 +00:00
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > PERMIT_DOCKER=network< / span > < span class = "w" > < / span >
2023-03-22 10:43:45 +00:00
< span class = "w" > < / span > < span class = "c1" > # You may want to enable this: https://docker-mailserver.github.io/docker-mailserver/latest/config/environment/#spoof_protection< / span > < span class = "w" > < / span >
2022-01-27 17:13:38 +00:00
< span class = "w" > < / span > < span class = "c1" > # See step 8 below, which demonstrates setup with enabled/disabled SPOOF_PROTECTION:< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > SPOOF_PROTECTION=0< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "nt" > cap_add< / span > < span class = "p" > :< / span > < span class = "w" > < / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > NET_ADMIN< / span > < span class = "w" > < / span > < span class = "c1" > # For Fail2Ban to work< / span > < span class = "w" > < / span >
2023-02-19 12:25:43 +00:00
< span class = "w" > < / span > < span class = "nt" > restart< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > always< / span > < span class = "w" > < / span >
2021-03-28 12:40:56 +00:00
< / code > < / pre > < / div >
< / div >
< ul >
2021-09-26 23:47:17 +00:00
< li > The docs have a detailed page on < a href = "../../../config/environment/" > Environment Variables< / a > for reference.< / li >
2021-03-28 12:40:56 +00:00
< / ul >
2021-09-26 23:47:17 +00:00
< div class = "admonition note" >
< p class = "admonition-title" > Firewalled ports< / p >
< p > You may need to open ports < code > 25< / code > , < code > 587< / code > and < code > 465< / code > on the firewall. For example, with the firewall < code > ufw< / code > , run:< / p >
2021-03-28 12:40:56 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > ufw allow < span class = "m" > 25< / span >
ufw allow < span class = "m" > 587< / span >
ufw allow < span class = "m" > 465< / span >
< / code > < / pre > < / div >
2021-09-26 23:47:17 +00:00
< / div >
2021-03-28 12:40:56 +00:00
< / li >
< li >
2021-10-30 20:13:46 +00:00
< p > Configure your DNS service to use an MX record for the < em > hostname< / em > (eg: < code > mail< / code > ) you configured in the previous step and add the < a href = "../../../config/best-practices/spf/" > SPF< / a > TXT record.< / p >
2021-09-26 23:47:17 +00:00
< p > If you manually manage the DNS zone file for the domain, it would look something like this:< / p >
2021-03-28 12:40:56 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > mail IN A 10.11.12.13
2021-09-22 23:30:04 +00:00
; mail-server for example.com
3600 IN MX 1 mail.example.com.
2021-03-28 12:40:56 +00:00
; Add SPF record
IN TXT " v=spf1 mx ~all"
< / code > < / pre > < / div >
< p > Then don't forget to change the serial number and to restart the service.< / p >
< / li >
< li >
2021-10-30 20:13:46 +00:00
< p > < a href = "../../../config/best-practices/dkim/" > Generate DKIM keys< / a > for your domain via < code > ./setup.sh config dkim< / code > .< / p >
2021-09-26 23:47:17 +00:00
< p > Copy the content of the file < code > docker-data/dms/config/opendkim/keys/example.com/mail.txt< / code > and add it to your DNS records as a TXT like SPF was handled above.< / p >
< p > I use < a href = "https://github.com/docker-scripts/bind9" > bind9< / a > for managing my domains, so I just paste it on < code > example.com.db< / code > :< / p >
< div class = "highlight" > < pre > < span > < / span > < code > mail._domainkey IN TXT ( " v=DKIM1; h=sha256; k=rsa; "
" p=MIIBIjANBgkqhkiG9w0BAQEFACAQ8AMIIBCgKCAQEAaH5KuPYPSF3Ppkt466BDMAFGOA4mgqn4oPjZ5BbFlYA9l5jU3bgzRj3l6/Q1n5a9lQs5fNZ7A/HtY0aMvs3nGE4oi+LTejt1jblMhV/OfJyRCunQBIGp0s8G9kIUBzyKJpDayk2+KJSJt/lxL9Iiy0DE5hIv62ZPP6AaTdHBAsJosLFeAzuLFHQ6USyQRojefqFQtgYqWQ2JiZQ3"
" iqq3bD/BVlwKRp5gH6TEYEmx8EBJUuDxrJhkWRUk2VDl1fqhVBy8A9O7Ah+85nMrlOHIFsTaYo9o6+cDJ6t1i6G1gu+bZD0d3/3bqGLPBQV9LyEL1Rona5V7TJBGg099NQkTz1IwIDAQAB" ) ; ----- DKIM key mail for example.com
2021-03-28 12:40:56 +00:00
< / code > < / pre > < / div >
< / li >
< li >
2021-09-26 23:47:17 +00:00
< p > Get an SSL certificate, < a href = "../../../config/security/ssl/#lets-encrypt-recommended" > we have a guide for you here< / a > (< em > Let's Encrypt< / em > is a popular service to get free SSL certificates).< / p >
2021-03-28 12:40:56 +00:00
< / li >
< li >
2021-09-26 23:47:17 +00:00
< p > Start < code > docker-mailserver< / code > and check the terminal output for any errors: < code > docker-compose up< / code > .< / p >
< / li >
< li >
< p > Create email accounts and aliases:< / p >
< div class = "admonition example" >
< p class = "admonition-title" > With < code > SPOOF_PROTECTION=0< / code > < / p >
2021-09-22 23:30:04 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > ./setup.sh email add admin@example.com passwd123
./setup.sh email add info@example.com passwd123
./setup.sh < span class = "nb" > alias< / span > add admin@example.com external-account@gmail.com
./setup.sh < span class = "nb" > alias< / span > add info@example.com external-account@gmail.com
2021-03-28 12:40:56 +00:00
./setup.sh email list
./setup.sh < span class = "nb" > alias< / span > list
< / code > < / pre > < / div >
2021-09-26 23:47:17 +00:00
< p > Aliases make sure that any email that comes to these accounts is forwarded to your third-party email address (< code > external-account@gmail.com< / code > ), where they are retrieved (< em > eg: via third-party web or mobile app< / em > ), instead of connecting directly to < code > docker-mailserer< / code > with POP3 / IMAP.< / p >
< / div >
< div class = "admonition example" >
< p class = "admonition-title" > With < code > SPOOF_PROTECTION=1< / code > < / p >
2021-09-22 23:30:04 +00:00
< div class = "highlight" > < pre > < span > < / span > < code > ./setup.sh email add admin.gmail@example.com passwd123
./setup.sh email add info.gmail@example.com passwd123
./setup.sh < span class = "nb" > alias< / span > add admin@example.com admin.gmail@example.com
./setup.sh < span class = "nb" > alias< / span > add info@example.com info.gmail@example.com
./setup.sh < span class = "nb" > alias< / span > add admin.gmail@example.com external-account@gmail.com
./setup.sh < span class = "nb" > alias< / span > add info.gmail@example.com external-account@gmail.com
2021-03-28 12:40:56 +00:00
./setup.sh email list
./setup.sh < span class = "nb" > alias< / span > list
< / code > < / pre > < / div >
2021-09-26 23:47:17 +00:00
< p > This extra step is required to avoid the < code > 553 5.7.1 Sender address rejected: not owned by user< / code > error (< em > the accounts used for submitting mail to Gmail are < code > admin.gmail@example.com< / code > and < code > info.gmail@example.com< / code > < / em > )< / p >
< / div >
2021-03-28 12:40:56 +00:00
< / li >
< li >
2021-09-26 23:47:17 +00:00
< p > Send some test emails to these addresses and make other tests. Once everything is working well, stop the container with < code > ctrl+c< / code > and start it again as a daemon: < code > docker-compose up -d< / code > .< / p >
2021-03-28 12:40:56 +00:00
< / li >
2021-09-26 23:47:17 +00:00
< / ol >
2021-03-28 12:40:56 +00:00
< / article >
2022-07-08 15:17:56 +00:00
2021-03-28 12:40:56 +00:00
< / div >
< / div >
2021-04-01 20:45:17 +00:00
2022-07-08 15:17:56 +00:00
< a href = "#" class = "md-top md-icon" data-md-component = "top" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z" / > < / svg >
2021-07-29 20:46:21 +00:00
Back to top
2021-04-08 10:28:06 +00:00
< / a >
2021-03-28 12:40:56 +00:00
< / main >
2021-12-13 07:43:26 +00:00
< footer class = "md-footer" >
2021-03-28 12:40:56 +00:00
2022-07-08 15:17:56 +00:00
< nav class = "md-footer__inner md-grid" aria-label = "Footer" >
2021-03-28 12:40:56 +00:00
2021-06-08 01:20:52 +00:00
2022-05-07 22:28:58 +00:00
< a href = "../../../config/advanced/dovecot-master-accounts/" class = "md-footer__link md-footer__link--prev" aria-label = "Previous: Dovecot Master Accounts" rel = "prev" >
2021-03-28 12:40:56 +00:00
< div class = "md-footer__button md-icon" >
2022-07-08 15:17:56 +00:00
< 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-03-28 12:40:56 +00:00
< / div >
< div class = "md-footer__title" >
< div class = "md-ellipsis" >
< span class = "md-footer__direction" >
Previous
< / span >
2022-05-07 22:28:58 +00:00
Dovecot Master Accounts
2021-03-28 12:40:56 +00:00
< / div >
< / div >
< / a >
2021-06-08 01:20:52 +00:00
2021-09-27 07:02:06 +00:00
< a href = "../mailserver-behind-proxy/" class = "md-footer__link md-footer__link--next" aria-label = "Next: Mailserver behind Proxy" rel = "next" >
2021-03-28 12:40:56 +00:00
< div class = "md-footer__title" >
< div class = "md-ellipsis" >
< span class = "md-footer__direction" >
Next
< / span >
2021-09-27 07:02:06 +00:00
Mailserver behind Proxy
2021-03-28 12:40:56 +00:00
< / div >
< / div >
< div class = "md-footer__button md-icon" >
2022-07-08 15:17:56 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z" / > < / svg >
2021-03-28 12:40:56 +00:00
< / div >
< / a >
< / nav >
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
2021-12-13 07:43:26 +00:00
< div class = "md-copyright" >
< div class = "md-copyright__highlight" >
< p > & copy < a href = "https://github.com/docker-mailserver" > < em > Docker Mailserver Organization< / em > < / a > < br / > < span > This project is licensed under the MIT license.< / span > < / p >
< / div >
Made with
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
Material for MkDocs
< / a >
< / div >
2021-03-28 12:40:56 +00:00
< / div >
< / div >
< / footer >
< / div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
2022-07-23 01:18:06 +00:00
< script id = "__config" type = "application/json" > { "base" : "../../.." , "features" : [ "navigation.tabs" , "navigation.top" , "navigation.expand" , "navigation.instant" , "content.code.annotate" ] , "search" : "../../../assets/javascripts/workers/search.b97dbffb.min.js" , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.config.lang" : "en" , "search.config.pipeline" : "trimmer, stopWordFilter" , "search.config.separator" : "[\\s\\-]+" , "search.placeholder" : "Search" , "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.title" : "Select version" } , "version" : { "provider" : "mike" } } < / script >
2021-03-28 12:40:56 +00:00
2022-07-23 01:18:06 +00:00
< script src = "../../../assets/javascripts/bundle.6c7ad80a.min.js" > < / script >
2021-03-28 12:40:56 +00:00
< / body >
< / html >