feat(poste-io): instructions and customization (#754)

* feat(poste-io): instructions and customization

* fix(poste-io): change URL scheme in instructions

* fix(poste-io): wording in instructions

* fix(poste-io): remove port customization
This commit is contained in:
Ronald Loyko 2022-10-11 01:19:51 +03:00 committed by GitHub
parent 1b9b9db16f
commit fe963d9176
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 96 additions and 45 deletions

View File

@ -1,52 +1,103 @@
captainVersion: 4
services:
$$cap_appname:
image: analogic/poste.io:$$cap_poste_version
ports:
- 25:25
- 110:110
- 143:143
- 465:465
- 587:587
- 993:993
- 995:995
- 4190:4190
volumes:
- /etc/localtime:/etc/localtime:ro
- $$cap_appname-data:/data
restart: always
image: analogic/poste.io:$$cap_POSTE_VERSION
hostname: $$cap_POSTE_HOSTNAME
environment:
HTTPS: OFF
LETSENCRYPT_EMAIL: $$cap_email
LETSENCRYPT_HOST: $$cap_host
VIRTUAL_HOST: $$cap_host
TZ: $$cap_POSTE_TZ
HTTPS: $$cap_POSTE_HTTPS
DISABLE_CLAMAV: $$cap_POSTE_DISABLE_CLAMAV
DISABLE_RSPAMD: $$cap_POSTE_DISABLE_RSPAMD
DISABLE_ROUNDCUBE: $$cap_POSTE_DISABLE_ROUNDCUBE
VIRTUAL_HOST: $$cap_POSTE_HOSTNAME
ports:
- '25:25'
- '110:110'
- '143:143'
- '465:465'
- '587:587'
- '993:993'
- '995:995'
- '4190:4190'
volumes:
- $$cap_appname:/data
caproverOneClickApp:
variables:
- id: $$cap_poste_version
label: Poste.io version tag
description: Check out their Docker page for the valid tags https://hub.docker.com/r/analogic/poste.io/tags
defaultValue: '2'
- id: $$cap_email
label: Email Address
description: The email address used for Lets Encrypt certificates.
- id: $$cap_host
label: Hostname
description: The full hostname for this captain app. (usually mail.mydomain.com)
instructions:
start: >-
SMTP + IMAP + POP3 + Antispam + Antivirus + Web administration + Web email on your server in ~5 minutes
Recommended: Use "mail" as the App Name.
end: >-
Please paste the preDeployFunction from https://github.com/caprover/caprover/issues/479#issuecomment-520902309 to the App Config > Pre-Deploy section of your created poste.io instance $$cap_appname.
Also ensure that you've set up the reverse DNS (PTR record) for your server and DKIM, SPF (DNS TXT) records.
The deployment can take up to 2 minutes.
displayName: Poste.io
isOfficial: true
description: Poste.io - complete mailserver built in one container
documentation: Read the poste.io documentation @ https://poste.io/doc
description: Complete mail server built in one container
documentation: https://poste.io/doc
instructions:
start: |-
SMTP + IMAP + POP3 + Antispam + Antivirus + Web Administration + Web Mail on your server in ca. 5 minutes.
**Important notes:**
- You may need to open the ports `25`, `110`, `143`, `465`, `587`, `993`, `995` and `4190` on your firewall
- You will need access to DNS configuration after deployment
- It's recommended to use `mail` as the app name
end: |-
Poste.io has been successfully deployed!
Before you can start using it, you need to perform some steps.
You only need to do this once.
**Please screenshot/copy the following instructions before proceeding:**
1. Go to the **App Configs** of your deployment `$$cap_appname` here in CapRover
2. Insert the following snippet into **Pre-Deploy Script**: `var preDeployFunction = function (captainAppObj, dockerUpdateObject) {var ports = dockerUpdateObject.EndpointSpec.Ports || [];ports.forEach(function (port) {port.PublishMode = "host";});return Promise.resolve(dockerUpdateObject);};`
3. Go to the **HTTP Settings** and **Edit Default Nginx Configurations**
4. Search for **last occurrence** of `location /.well-known/acme-challenge/` and replace `root <%-s.staticWebRoot%>;` with `proxy_pass $upstream;`
5. **Save settings** and wait a minute
6. Access your mail server at `http://$$cap_appname.$$cap_root_domain`
7. Enter `$$cap_POSTE_HOSTNAME` in **Mailserver hostname**
8. Enter an email address for the admin (you can also use `admin@$$cap_POSTE_HOSTNAME`) and create a password
9. Navigate to **System Settings** > **TLS Certificate** and **Issue Free Letsencrypt.org Certificate**
10. Check **Enabled** and **Save Changes**
The following steps guide you though the DNS configuration. Please **consult the documentation** (`https://poste.io/doc/configuring-dns`).
1. Enter the admin panel of the server hosting or if you are self-hosting locally make sure you have access to the DNS configuration
2. Create **PTR record** (also known as **Reverse DNS**) pointing to `$$cap_POSTE_HOSTNAME`
3. Create **A** record for `$$cap_POSTE_HOSTNAME` pointing to the IP address of the server
4. Create **MX** record pointing to `$$cap_POSTE_HOSTNAME`
5. Create **TXT** record with value `v=spf1 mx ~all`
6. Create **TXT** record with value `v=DMARC1; p=none; rua=mailto:dmarc-reports@$$cap_POSTE_HOSTNAME ruf=dmarc-reports@$$cap_POSTE_HOSTNAME; sp=none; ri=86400` (you may need to change the mail addresses)
7. Go to your application navigating to `http://$$cap_appname.$$cap_root_domain/admin/domain`
8. Click **Show** on `$$cap_POSTE_HOSTNAME`
9. In the line **DKIM Key** click on **Create New Key** and copy the generated value
10. Go back to the DNS settings
11. Create **TXT** record and insert copied value (starting with `k=rsa...`)
12. Verify the DNS configuration using tools like MXToolbox (`https://mxtoolbox.com`)
If all your checks are green you are ready to create mailboxes.
Enjoy your self-hosted mail server!
variables:
- id: $$cap_POSTE_VERSION
label: General | Version
description: Check out their Docker page for the valid tags https://hub.docker.com/r/analogic/poste.io/tags
defaultValue: '2'
validRegex: /.{1,}/
- id: $$cap_POSTE_TZ
label: General | Timezone
description: Timezone for the application, find yours at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
defaultValue: UTC
validRegex: /.{1,}/
- id: $$cap_POSTE_DISABLE_CLAMAV
label: Features | Disable ClamAV
description: Whether to disable ClamAV anti-virus. Useful for low memory usage. Set value `TRUE` to disable.
- id: $$cap_POSTE_DISABLE_RSPAMD
label: Features | Disable Rspamd
description: Whether to disable Rspamd spam filter. Useful for low memory usage. Set value `TRUE` to disable.
- id: $$cap_POSTE_DISABLE_ROUNDCUBE
label: Features | Disable Roundcube
description: Whether to disable Roundcube webmail. Set value `TRUE` to disable.
- id: $$cap_POSTE_HOSTNAME
label: Networking | Hostname
description: Hostname of your mail server. **This is required**. It is usually `mail.mydomain.com`.
validRegex: /.{1,}/
- id: $$cap_POSTE_HTTPS
label: Networking | Use HTTPS
description: >-
Whether to redirect to encrypted HTTP.
It's recommended to leave it to `OFF` since CapRover acts as reverse proxy and handles HTTPS.
If you want to enable it, remove the value and leave it blank and then to change the configuration and ports accordingly.
defaultValue: 'OFF'