Email application based on IndieHosters network.
- docker
- docker-compose
Modify the following files:
- copy
env.template
todata/config/env
and modify it (MYSQL_PASSWORD and DB_ENV_MYSQL_PASSWORD are the same password)
Add the following files:
- data/config/TLS/chain.pem
- data/config/TLS/cert.pem
- data/config/TLS/ssl_certificate.pem
- data/config/TLS/ssl_private_key.pem
If they do not exist a self signed certificate will be created.
./create.sh hostname
Everything should be up and running.
If HTTPS should run on a different port add it as a second argument:
./create.sh hostname 8443
To backup, just run the BACKUP
in your folder, supplying a target path and password. This will create an encrypted duplicity backup.
./BACKUP /some/target/path super-secure-password
./LIST_BACKUPS /some/target/path
To restore the latest backup:
./RESTORE /some/target/path super-secure-password now
To restore a specific date list them with LIST_BACKUPS
. Example result:
Number of contained backup sets: 2
Total number of contained volumes: 3
Type of backup set: Time: Num volumes:
Full Thu Jan 5 14:07:57 2017 2
Incremental Thu Jan 5 14:35:49 2017 1
To restore the FULL backup in this example, run:
./RESTORE /some/target/path super-secure-password 2017-01-05T14:07:57
- https://example.com - ViMbAdmin interface
- https://example.com/webmail - Roundcube webmail
- https://example.com/cloud - Nextcloud
indiehosters/email | mail-in-a-box/mailinabox | status |
---|---|---|
[x] SMTP (postfix) | [x] SMTP (postfix) | ✅ |
[x] IMAP (dovecot) | [x] IMAP (dovecot) | ✅ |
[x] POP (dovecot) | [x] POP (dovecot) | ✅ |
[ ] search (dovecot-lucene) | [x] search (dovecot-lucene) | planned |
[x] CardDAV/CalDAV (Nextcloud) | [x] CardDAV/CalDAV (ownCloud) | ✅ |
[ ] Exchange ActiveSync (z-push) | [x] Exchange ActiveSync (z-push) | planned |
[x] Webmail (Roundcube) | [x] Webmail (Roundcube) | ✅ |
[ ] static website hosting (nginx) | [x] static website hosting (nginx) | part of other package |
[x] Spam filtering (spamassassin) | [x] Spam filtering (spamassassin) | ✅ |
[x] greylisting (postgrey) | [x] greylisting (postgrey) | ✅ |
[x] Backups (duplicity) | [x] Backups (duplicity) | ✅ |
[ ] firewall (ufw) | [x] firewall (ufw) | planned, as part of firewall package |
[ ] intrusion protection (fail2ban) | [x] intrusion protection (fail2ban) | ? (difficult in docker) |
[ ] system monitoring (munin) | [x] system monitoring (munin) | planned, as part of other package |
DNS (nsd4):
indiehosters/email | mail-in-a-box/mailinabox | status |
---|---|---|
[x] DKIM (OpenDKIM) | [x] DKIM (OpenDKIM) | ✅ |
[x] DMARC | [x] DMARC (postgrey) | ✅ |
[ ] SPF | [x] SPF | planned, as part of DNS |
[ ] DNSSEC | [x] DNSSEC | planned, as part of DNS |
[ ] DANE TLSA | [x] DANE TLSA | planned, as part of DNS |
[ ] SSHFP records | [x] SSHFP records | planned, as part of DNS |
control panel and API:
indiehosters/email | mail-in-a-box/mailinabox | status |
---|---|---|
[x] vimbadmin | [x] custom coded | ✅ |
[x] Add/Remove mail User | [x] Add/Remove mail User | ✅ |
[x] Add/Remove Aliases | [x] Add/Remove Aliases | ✅ |
[ ] custom DNS records | [x] custom DNS records | planned, as part of DNS |
[x] multiadmin | [ ] mutliadmin | ✅ |
Run the add_domain.sh
script inside the postix container, and configure your DNS, you should be fine!
You can find a script here
If you have any issue (something not working, mail marked as spam, missing doc), please do report an issue here! Thanks
This system is used in production at IndieHosters so it is maintained. If you use it, please tell us, and we'll be really happy to update this README!
You can help us by:
- starring this project
- sending us a thanks email
- reporting bugs
- writing documentation/blog on how you got up and running in 5mins
- writing more documentation
- sending us cake :) We loove cake!
- documentation for TLS for the web (reverse proxy FTW!)
- separate processes in postfix (one process/container! damn!)
- postfix/dovecot - try to sync install instructions with mailinabox
Heavily inspired by mail-in-a-box! Thanks to the amazing work they produced. It is the best up to date how to
for email hosting out there :)