From 3eae8345c4f689a7ba032c0fd030530917d34914 Mon Sep 17 00:00:00 2001 From: andryyy Date: Tue, 7 Mar 2017 09:19:07 +0100 Subject: [PATCH] Change in docs --- docs/first_steps.md | 16 ++-- docs/images/logo.svg | 197 +++++++++++++++++++++++++++++++++++++++++++ docs/index.md | 6 ++ docs/install.md | 4 +- docs/u_and_e.md | 66 ++++++++------- mkdocs.yml | 22 ++++- 6 files changed, 266 insertions(+), 45 deletions(-) create mode 100644 docs/images/logo.svg diff --git a/docs/first_steps.md b/docs/first_steps.md index a5ed486e..14d28bd7 100644 --- a/docs/first_steps.md +++ b/docs/first_steps.md @@ -1,4 +1,4 @@ -# SSL (and: How to use Let's Encrypt) +## SSL (and: How to use Let's Encrypt) mailcow dockerized comes with a snakeoil CA "mailcow" and a server certificate in `data/assets/ssl`. Please use your own trusted certificates. @@ -8,7 +8,7 @@ mailcow uses 3 domain names that should be covered by your new certificate: - autodiscover.**example.org** - autoconfig.**example.org** -**Obtain multi-SAN certificate by Let's Encrypt** +### Obtain multi-SAN certificate by Let's Encrypt This is just an example of how to obtain certificates with certbot. There are several methods! @@ -51,7 +51,7 @@ docker-compose restart postfix-mailcow dovecot-mailcow nginx-mailcow When renewing certificates, run the last two steps (link + restart) as post-hook in a script. -# Rspamd Web UI +## Rspamd Web UI At first you may want to setup Rspamds web interface which provides some useful features and information. 1\. Generate a Rspamd controller password hash: @@ -71,7 +71,7 @@ docker-compose restart rspamd-mailcow Open https://${MAILCOW_HOSTNAME}/rspamd in a browser and login! -# Optional: Reverse proxy +## Optional: Reverse proxy You don't need to change the Nginx site that comes with mailcow: dockerized. mailcow: dockerized trusts the default gateway IP 172.22.1.1 as proxy. This is very important to control access to Rspamd's web UI. @@ -88,7 +88,7 @@ Recreate affected containers by running `docker-compose up -d`. 2\. Configure your local webserver as reverse proxy: -**Apache 2.4** +### Apache 2.4 ``` ServerName mail.example.org @@ -114,7 +114,7 @@ Recreate affected containers by running `docker-compose up -d`. ``` -**Nginx** +### Nginx ``` server { listen 443; @@ -133,7 +133,7 @@ server { } ``` -# Sender and receiver model +## Sender and receiver model When a mailbox is created, a user is allowed to send mail from and receive mail for his own mailbox address. @@ -162,7 +162,7 @@ Administrators and domain administrators can edit mailboxes to allow specific us You can choose between mailbox users or completely disable the sender check for domains. -**SOGo "mail from" addresses** +### SOGo "mail from" addresses Mailbox users can, obviously, select their own mailbox address, as well as all alias addresses and aliases that exist through alias domains. diff --git a/docs/images/logo.svg b/docs/images/logo.svg new file mode 100644 index 00000000..bea3f826 --- /dev/null +++ b/docs/images/logo.svg @@ -0,0 +1,197 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index f44f3308..f4aea569 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,6 +2,12 @@ [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JWBSYHF4SMC68) +## Screenshots + +You can find screenshots [on Imgur](http://imgur.com/a/oewYt). + +## Overview + mailcow dockerized comes with **11 containers** linked in **one bridged network**. - Dovecot diff --git a/docs/install.md b/docs/install.md index f4342da5..fddfaa59 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,4 +1,4 @@ -# Install mailcow +## Install mailcow You need Docker and Docker Compose. @@ -46,7 +46,7 @@ You can now access **https://${MAILCOW_HOSTNAME}** with the default credentials The database will be initialized right after a connection to MySQL can be established. -# Update mailcow +## Update mailcow There is no update routine. You need to refresh your pulled repository clone and apply your local changes (if any). Actually there are many ways to merge local changes. Here is one to stash all local changes, pull changes from the remote master branch and apply your stash on top of it. You will most likely see warnings about non-commited changes; you can ignore them: diff --git a/docs/u_and_e.md b/docs/u_and_e.md index 89d35428..32ac50c1 100644 --- a/docs/u_and_e.md +++ b/docs/u_and_e.md @@ -1,4 +1,4 @@ -# Anonymize headers +## Anonymize headers Save as `data/conf/postfix/mailcow_anonymize_headers.pcre`: @@ -17,9 +17,9 @@ Add this to `data/conf/postfix/main.cf`: smtp_header_checks = pcre:/opt/postfix/conf/mailcow_anonymize_headers.pcre ``` -# Backup and restore maildir (simple tar file) +## Backup and restore maildir (simple tar file) -**Backup** +### Backup This line backups the vmail directory to a file backup_vmail.tar.gz in the mailcow root directory: ``` @@ -32,7 +32,7 @@ docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .D You can change the path by adjusting ${PWD} (which equals to the current directory) to any path you have write-access to. Set the filename `backup_vmail.tar.gz` to any custom name, but leave the path as it is. Example: `[...] tar cvfz /backup/my_own_filename_.tar.gz` -**Restore** +### Restore ``` cd /path/to/mailcow-dockerized source mailcow.conf @@ -40,19 +40,19 @@ DATE=$(date +"%Y%m%d_%H%M%S") docker run --rm -it -v $(docker inspect --format '{{ range .Mounts }}{{ if eq .Destination "/var/vmail" }}{{ .Name }}{{ end }}{{ end }}' $(docker-compose ps -q dovecot-mailcow)):/vmail -v ${PWD}:/backup debian:jessie tar xvfz /backup/backup_vmail.tar.gz ``` -# Docker Compose Bash completion +## Docker Compose Bash completion For the tab-tab... :-) ``` curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose ``` -# Black and Whitelist +## Black and Whitelist Edit a domain as (domain) administrator to add an item to the filter table. Beware that a mailbox user can login to mailcow and override a domain policy filter item. -# Change default language +## Change default language Change `data/conf/sogo/sogo.conf` and replace "English" by your prefered language. @@ -62,7 +62,7 @@ Create a file `data/web/inc/vars.local.inc.php` and add "DEFAULT_LANG" with eith $DEFAULT_LANG = "de"; ``` -# Change UI theme +## Change UI theme mailcow uses [Bootstrap](http://getbootstrap.com/), a HTML, CSS, and JS framework. @@ -71,7 +71,7 @@ Open or create the file `data/web/inc/vars.local.inc.php` and change `DEFAULT_TH backup_${DBNAME}_${DATE}.sql ``` -**Restore the database** +### Restore ``` cd /path/to/mailcow-dockerized source mailcow.conf docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < backup_file.sql ``` -# Read logs +## Debugging + You can use `docker-compose logs $service-name` for all containers. Run `docker-compose logs` for all logs at once. Follow the log output by running docker-compose with `logs -f`. -# Redirect port 80 to 443 +## Redirect port 80 to 443 Since February the 28th 2017 mailcow does come with port 80 and 443 enabled. @@ -242,15 +244,15 @@ Restart the stack, changed containers will be updated: `docker-compose up -d` -# Redis +## Redis -**Connect to redis key store** +### Client ``` docker-compose exec redis-mailcow redis-cli ``` -# Remove persistent data +## Remove persistent data - Remove volume `mysql-vol-1` to remove all MySQL data. - Remove volume `redis-vol-1` to remove all Redis data. @@ -260,7 +262,7 @@ docker-compose exec redis-mailcow redis-cli Running `docker-compose down -v` will **destroy all mailcow: dockerized volumes** and delete any related containers. -# Reset admin password +## Reset admin password Reset mailcow admin to `admin:moohoo`: 1\. Drop admin table @@ -271,9 +273,9 @@ docker-compose exec mysql-mailcow mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "DR 2\. Open mailcow UI to auto-init the db -# Rspamd +## Rspamd -**Learn spam and ham** +### Learn spam and ham Rspamd learns mail as spam or ham when you move a message in or out of the junk folder to any mailbox besides trash. This is archived by using the Dovecot plugin "antispam" and a simple parser script. @@ -284,7 +286,7 @@ The bayes statistics are written to Redis as keys `BAYES_HAM` and `BAYES_SPAM`. You can also use Rspamd's web ui to learn ham and/or spam. -**CLI tools** +### CLI tools ``` docker-compose exec rspamd-mailcow rspamc --help @@ -293,7 +295,7 @@ docker-compose exec rspamd-mailcow rspamadm --help See [Rspamd documentation](https://rspamd.com/doc/index.html) -# Adjust service configurations +## Adjust service configurations The most important configuration files are mounted from the host into the related containers: ``` data/conf @@ -367,7 +369,7 @@ Just change the according configuration file on the host and restart the related docker-compose restart service-mailcow ``` -# Tagging +## Tagging Mailbox users can tag their mail address like in `me+facebook@example.org` and choose between to setups to handle this tag: @@ -375,7 +377,7 @@ Mailbox users can tag their mail address like in `me+facebook@example.org` and c 2\. Prepend the tag to the subject: "[facebook] Subject" -# Two-factor authentication +## Two-factor authentication So far two methods for TFA are impelemented. Both work with the fantastic [Yubikey](https://www.yubico.com). @@ -387,18 +389,18 @@ As administrator you are able to temporary disable a domain adminsitrators TFA l The key used to login will be displayed in green, while other keys remain grey. -**Yubi OTP** +### Yubi OTP The Yubi API ID and Key will be checked against the Yubico Cloud API. When setting up TFA you will be asked for your personal API account for this key. The API ID, API key and the first 12 characters (your YubiKeys ID in modhex) are stored in the MySQL table as secret. -**U2F** +### U2F Only Google Chrome (+derivates) and Opera support U2F authentication to this day natively. For Firefox you will need to install the "U2F Support Add-on" as provided on [mozilla.org](https://addons.mozilla.org/en-US/firefox/addon/u2f-support-add-on/). U2F works without an internet connection. -# Why Bind? +## Why Bind? For DNS blacklist lookups and DNSSEC. diff --git a/mkdocs.yml b/mkdocs.yml index c0b3d9a0..1ab6bec8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,9 +1,25 @@ site_name: "mailcow: dockerized" -repo_url: https://github.com/andryyy/mailcow-dockerized/ +repo_url: https://github.com/andryyy/mailcow-dockerized remote_branch: gh-pages -theme: readthedocs +theme: material +extra: + social: + - type: 'github' + link: 'https://github.com/andryyy/mailcow-dockerized' + palette: + primary: 'indigo' + accent: 'yellow' + logo: 'images/logo.svg' + +markdown_extensions: + - admonition + - codehilite(guess_lang=true) + - footnotes + - meta + - toc(permalink=true) + pages: - - 'Overview': 'index.md' + - 'This is mailcow': 'index.md' - 'Installation': 'install.md' - 'First Steps': 'first_steps.md' - 'Usage & Examples': 'u_and_e.md'