poste.io2

Getting started

This document will show you how to get started with the Poste.io mail server. In 5 minutes you will have your email server up and running, sending and receiving emails.

Requirements

For a fully functional, internet-ready email server, you need a few things:

  • any 64bit linux distribution running in a virtual machine or dedicated server
  • CPU and free RAM to run Spamassassin and Clamav. Other components are less CPU and memory hungry
  • Docker engine up and running - see how to install docker engine
  • public IP address
  • ability to change IP address's reverse DNS entry - contact your service provider if you are unable to do this yourself
  • full access to domain DNS administration

Downloading and running Poste.io

There are two versions of product, PRO and FREE image.

PRO version
poste.io/mailserver # (from https://poste.io docker server)
Free version
analogic/poste.io # (from https://hub.docker.com)

Both versions share the same data directory structure - the only difference when using the PRO version is that you log in to our private Docker repository.

PRO version
$ docker login -u "username" -p "password" https://poste.io
$ docker run \
    --net=host \
    -e TZ=Europe/Prague \
    -v /your-data-dir/data:/data \
    --name "mailserver" \
    -h "mail.example.com" \
    -t poste.io/mailserver
Free version

You will be using image from public Docker hub.

$ docker run \
    --net=host \
    -e TZ=Europe/Prague \
    -v /your-data-dir/data:/data \
    --name "mailserver" \
    -h "mail.example.com" \
    -t analogic/poste.io

Docker arguments explained

Ports which are opened by poste.io:

Port numberPurpose
25SMTP - mostly processing incoming mails from remote mail servers
80HTTP - redirect to https (see options) and authentication for Let's encrypt service
110POP3 - standard protocol for accessing mailbox, STARTTLS is required before client auth
143IMAP - standard protocol for accessing mailbox, STARTTLS is required before client auth
443HTTPS - access to administration or webmail client
465SMTPS - Legacy SMTPs port
587MSA - SMTP port primarily used by email clients after STARTTLS and auth
993IMAPS - alternative port for IMAP with encryption from the start of the connection
995POP3S - POP3 port with encryption from the start of the connection
4190Sieve - remote sieve settings
  • -e TZ=Europe/Prague Timezone settings for correct datetime

  • -v /your-data-dir/data:/data Mounts the data directory from the host system. User database, emails, logs, all will end up in this directory for easy backup.

  • --name "mailserver" Run poste.io as a container with a defined name

  • -h "mail.example.com" Hostname for your mailserver

  • -t analogic/poste.io Image name, differs for PRO and FREE version

Optional arguments

  • -e "HTTPS=OFF" To disable all redirects to encrypted HTTP, useful if you are using some kind of reverse proxy (put this argument before image name!)

  • -e "HTTP_PORT=8080" Custom HTTP port. Note that you will need to handle Let's Encrypt requests on port 80, so if you're using a reverse proxy setup, you'll need to forward the /.well-known/ folder to this port.

  • -e "HTTPS_PORT=4433" Custom HTTPS port.

  • -e "DISABLE_CLAMAV=TRUE" To disable ClamAV, it is useful for low mem usage.

  • -e "DISABLE_RSPAMD=TRUE" To disable Rspamd, it is useful for low mem usage.

  • -e "DISABLE_ROUNDCUBE=TRUE" To disable Roundcube webmail.

  • -e "ELASTICSEARCH=123.123.123.123:9200" Elasticsearch integration

  • -p 4190:4190 If you want to use clients with the ability to manage Sieve filters externally, you will also need to open port 4190