Sign inSign up

axigen/axigen

By axigen

Updated 8 days ago

Official Axigen Mail Server image

Image
16

500K+

axigen/axigen repository overview

Quick Reference

Maintained by: The Axigen Messaging Team

Where to get help:

Axigen follows the Semantic Versioning 2.0.0 convention. As such, Releases will be named MAJOR.MINOR.PATCH (e.g. 10.3.3, 10.4.0) whereas pre-releases will be suffixed with the appropriate string (e.g. 10.4.0-beta15, 10.4.0-rc1, etc). For pre-releases, a MAJOR.MINOR-edge floating tag is set, always following the latest pre-release of the respective minor Axigen version. For example, at the time of this writing, 10.4-edge corresponds to 10.4.0-rc3.

  • 10.4.3: Current release, Axigen 10.4.3
  • 10.4-edge: Newest pre-release of Axigen 10.4 (10.4.3-rc1 at the time of this writing)
  • 10.4.0-rc3: Axigen 10.4.0 Release Candidate 3
  • 10.4.0-beta15: Axigen 10.4.0 Beta 15
  • 10.3.3: Current Release, Axigen 10.3
  • 10.2.2: Legacy, no longer used

What is Axigen

Axigen Mail Server (or simply Axigen) is a full featured email server solution, implementing both MTA and mailstore/mailbox functionalities through standard protocols (SMTP, IMAP, POP3, HTTP) as well as proprietary components such as a browser based, fully featured client (Axigen WebMail).

How to use this image

Creating a New Axigen Mail Server Instance

# docker run --name=axigen -dt -v <volume>:/axigen/var -p 443:443 -p 9443:9443 -p 993:993 -p 995:995 -p 25:25 -p 465:465 -p 9000:9000 -p 7000:7000 axigen/axigen:10.4.3

The following options are used:

  • -d → detach from the container (since we want it to run in the background)
  • -t → allocate a pseudo-TTY to allow capturing Axigen stdout in the Docker logs
  • -v → map a volume in /axigen/var; may be a Docker volume or a local host path (bind mount). See the The Axigen Data Volume section below for more details.
  • -p → port mapping: map the ports exposed by the container (Axigen, in this case) to host ports. In the example above, ports 443 (WebMail), 9443 (WebAdmin), 993 (IMAPs) and 995 (POP3s), 25 (SMTP) and 465 (SMTPs) are mapped. The Axigen container also exposes other ports which may me mapped, if needed (see the Image structure section).

When the Axigen data volume (be it a Docker volume or a bind mount) is first used in the container, it will be initialized. Upon creation, the container will also be started.

Check that the container is running:

# docker ps -f name=axigen

The output should display a running container, along with the port mapping and other information:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                                                            NAMES
03fa1abc15d2        axigen/axigen  "/bin/sh -c /app/run…"   6 minutes ago       Up 6 minutes        80/tcp, 110/tcp, 0.0.0.0:25->25/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:465->465/tcp, 0.0.0.0:993->993/tcp, 143/tcp, 0.0.0.0:995->995/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:9443->9443/tcp, 8443/tcp   axigen

At this point, if the WebAdmin port was mapped (-p 9443:9443), the Axigen WebAdmin interface should be accessible via the host IP: https://localhost:9443/. Note that by default the Axigen image uses a self-signed SSL certificate. This will cause your browser to issue a warning when you access the WebAdmin and WebMail. The default certificates can be replaced via WebAdmin.

Stopping and Starting the Container

Like any container, the Axigen container may be operated using either the container name (i.e. axigen in our example) or the <container_id>. The <container_id> is obtained from the output of the docker ps command. Axigen containers (including stopped ones) may be viewed with the docker ps -a -f ancestor=axigen/axigen[:<image_tag>] command.

A running Axigen container may be stopped by using the docker stop axigen command. When a container is stopped, its full state is preserved, only the Axigen process is stopped.

A stopped Axigen container may be started by using the docker start axigen command. You can as well restart the container (also restarts the Axigen service) by using the docker restart axigen command

The Axigen Data Volume

An important point is that the Axigen instance data is not stored in the container itself. The container holds just package files (binaries and so on), while the instance data is stored in the "/axigen/var" volume also referred to as the Axigen Data Volume. This is where the actual server configuration and the server (mailbox / users) data are located. A container may be deleted, upgraded (new container created from a newer image), stopped, started, and the server data will be preserved, as long as the Docker volume which is mapped upon container startup is preserved.

Recreating an Axigen Instance with an Existing Axigen Data Volume

docker run --name=axigen -dt -v <volume>:/axigen/var -p 443:443 -p 9443:9443 -p 993:993 -p 995:995 -p 25:25 -p 465:465 -p 9000:9000 -p 7000:7000 axigen/axigen

Setting a hostname for the container

In many scenarios, particularly those where Axigen is used for outbound delivery, without a smarthost (i.e. directly to the internet), it is required that the outbound EHLO identification string to be valid; by default, Axigen using the system's hostname for that. In containers, the default hostname for a container is an ID, not a valid internet FQDN. For that purpose, you can use Docker's -h option to set a specific hostname for the container. Example:

docker run --name=axigen -h myhost.example.com -dt -v <volume>:/axigen/var -p 443:443 -p 9443:9443 -p 993:993 -p 995:995 -p 25:25 -p 465:465 -p 9000:9000 -p 7000:7000 axigen/axigen

More details about Axigen's handling of EHLO identification string and the system's hostname in the dedicated KB Article.

Environment variables

Passing envrionment variables through the docker run command (-e flag) allows the administrator to control some of the Axigen service options.

LICENSE_FILE

Container relative path to the license file. Typically, the license file is mounted in the container through the use of the -v Docker run flag. Example:

docker run -dt -v /host/path/axigen_lk.bin:/axigen_lk.bin -e LICENSE_FILE=/axigen_lk.bin axigen/axigen `

ADMIN_PASSWORD

The password for the admin account, for access via both WebAdmin and CLI. This applies both when the container is started with a new data directory (/axigen/var) and when it is started with an existing data directory. If not specified, the admin password is not changed, thus preserving the existing one (already set in the existing data directory /axigen/var).

AXIGEN_MAX_RESPAWNS

The equivalent of the command line Axigen parameter --max-respawns. Details in the Command-line Parameters Documentation.

AXIGEN_MAX_MEMORY

The equivalent of the command line Axigen parameter -m. Details in the Command-line Parameters Documentation.

AXIGEN_STOP_TIMEOUT

The equivalent of the command line Axigen parameter --stop-timeout. Details in the Command-line Parameters Documentation.

DEBUGLEVEL

The equivalent of the command line Axigen parameter --debuglevel. Details in the Command-line Parameters Documentation. If this environment variable is set, --noabort is also automatically added to the command line.

Tag summary

Content type

Image

Digest

sha256:ef0efb546

Size

241.4 MB

Last updated

8 days ago

docker pull axigen/axigen