Mailu: Unable to do Docker compose setup

Created on 19 Mar 2019  路  5Comments  路  Source: Mailu/Mailu

Running $ sudo docker-compose up -d causes the following error:

Removing mailu_front_1
Removing mailu_resolver_1
Recreating b8b7d88874be_mailu_front_1 ...
Starting 71adf63a20cf_mailu_resolver_1 ...
mailu_webdav_1 is up-to-date
mailu_redis_1 is up-to-date
Recreating b8b7d88874be_mailu_front_1  ... error
mailu_fetchmail_1 is up-to-date

ERROR: for b8b7d88874be_mailu_front_1  Cannot start service front: driver failed programming external connectivity on endpoint mailu_front_1 (9b2a0cf8b5aaf25e33e08ac3dea4d4444d24058e52365deff816bde26ab9a23e): Error starting userland proxy: listen tcp 52.172.203.88:995: bind: cannot assign requested address

ERROR: for front  Cannot start service front: driver failed programming external connectivity on endpoint mailu_front_1 (9b2a0cf8b5aaf25e33e08ac3dea4d4444d24058e52365deff816bde26ab9a23e): Error starting userland proxy: listen tcp 52.172.203.88:995: bind: cannot assign requested address
ERROR: Encountered errors while bringing up the project.

System

Ubuntu 18.04.2 LTS
Docker version: 18.09.3

docker-compose.yml

# This file is auto-generated by the Mailu configuration wizard.
# Please read the documentation before attempting any change.
# Generated for compose flavor

version: '3.6'

services:

  # External dependencies
  redis:
    image: redis:alpine
    restart: always
    volumes:
      - "/mailu/redis:/data"

  # Core services
  front:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    logging:
      driver: json-file
    ports:
      - "52.172.203.88:80:80"
      - "52.172.203.88:443:443"
      - "52.172.203.88:25:25"
      - "52.172.203.88:465:465"
      - "52.172.203.88:587:587"
      - "52.172.203.88:110:110"
      - "52.172.203.88:995:995"
      - "52.172.203.88:143:143"
      - "52.172.203.88:993:993"
    volumes:
      - "/mailu/certs:/certs"
      - "/mailu/overrides/nginx:/overrides"

  resolver:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-1.6}
    env_file: mailu.env
    restart: always
    networks:
      default:
        ipv4_address: 192.168.203.254

  admin:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    volumes:
      - "/mailu/data:/data"
      - "/mailu/dkim:/dkim"
    depends_on:
      - redis

  imap:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    volumes:
      - "/mailu/mail:/mail"
      - "/mailu/overrides:/overrides"
    depends_on:
      - front

  smtp:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    volumes:
      - "/mailu/overrides:/overrides"
    depends_on:
      - front
      - resolver
    dns:
      - 192.168.203.254

  antispam:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    volumes:
      - "/mailu/filter:/var/lib/rspamd"
      - "/mailu/dkim:/dkim"
      - "/mailu/overrides/rspamd:/etc/rspamd/override.d"
    depends_on:
      - front
      - resolver
    dns:
      - 192.168.203.254

  # Optional services

  webdav:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    volumes:
      - "/mailu/dav:/data"

  fetchmail:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    depends_on:
      - resolver
    dns:
      - 192.168.203.254

  # Webmail
  webmail:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}roundcube:${MAILU_VERSION:-1.6}
    restart: always
    env_file: mailu.env
    volumes:
      - "/mailu/webmail:/data"
    depends_on:
      - imap


networks:
  default:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.203.0/24

mailu.env

# Mailu main configuration file
#
# Generated for compose flavor
#
# This file is autogenerated by the configuration management wizard.
# For a detailed list of configuration variables, see the documentation at
# https://mailu.io

###################################
# Common configuration variables
###################################

# Set this to the path where Mailu data and configuration is stored
# This variable is now set directly in `docker-compose.yml by the setup utility
# ROOT=/mailu

# Mailu version to run (1.0, 1.1, etc. or master)
#VERSION=1.6

# Set to a randomly generated 16 bytes string
SECRET_KEY=ZJ5KLPP3VA85WG3A

# Address where listening ports should bind
# This variables are now set directly in `docker-compose.yml by the setup utility
# PUBLIC_IPV4= 52.172.203.88 (default: 127.0.0.1)
# PUBLIC_IPV6=  (default: ::1)

# Subnet of the docker network. This should not conflict with any networks to which your system is connected. (Internal and external!)
SUBNET=10.0.1.0/24

# Main mail domain
DOMAIN=bheem.me

# Hostnames for this server, separated with comas
HOSTNAMES=mail.bheem.me

# Postmaster local part (will append the main mail domain)
POSTMASTER=admin

# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt)
TLS_FLAVOR=letsencrypt

# Authentication rate limit (per source IP address)
AUTH_RATELIMIT=10/minute;1000/hour

# Opt-out of statistics, replace with "True" to opt out
DISABLE_STATISTICS=False

###################################
# Optional features
###################################

# Expose the admin interface (value: true, false)
ADMIN=true

# Choose which webmail to run if any (values: roundcube, rainloop, none)
WEBMAIL=roundcube

# Dav server implementation (value: radicale, none)
WEBDAV=radicale

# Antivirus solution (value: clamav, none)
#ANTIVIRUS=none

#Antispam solution
ANTISPAM=none

###################################
# Mail settings
###################################

# Message size limit in bytes
# Default: accept messages up to 50MB
# Max attachment size will be 33% smaller
MESSAGE_SIZE_LIMIT=50000000

# Networks granted relay permissions
# Use this with care, all hosts in this networks will be able to send mail without authentication!
RELAYNETS=

# Will relay all outgoing mails if configured
RELAYHOST=

# Fetchmail delay
FETCHMAIL_DELAY=600

# Recipient delimiter, character used to delimiter localpart from custom address part
RECIPIENT_DELIMITER=+

# DMARC rua and ruf email
DMARC_RUA=admin
DMARC_RUF=admin

# Welcome email, enable and set a topic and body if you wish to send welcome
# emails to all users.
WELCOME=true
WELCOME_SUBJECT=Welcome to your new email account
WELCOME_BODY=Welcome to your new email account, if you can read this, then it is configured properly!

# Maildir Compression
# choose compression-method, default: none (value: bz2, gz)
COMPRESSION=
# change compression-level, default: 6 (value: 1-9)
COMPRESSION_LEVEL=

###################################
# Web settings
###################################

# Path to redirect / to
WEBROOT_REDIRECT=

# Path to the admin interface if enabled
WEB_ADMIN=/admin

# Path to the webmail if enabled
WEB_WEBMAIL=/webmail

# Website name
SITENAME=Bheem Mail

# Linked Website URL
WEBSITE=https://bheem.me



###################################
# Advanced settings
###################################

# Log driver for front service. Possible values:
# json-file (default)
# journald (On systemd platforms, useful for Fail2Ban integration)
# syslog (Non systemd platforms, Fail2Ban integration. Disables `docker-compose log` for front!)
# LOG_DRIVER=json-file

# Docker-compose project name, this will prepended to containers names.
COMPOSE_PROJECT_NAME=mailu

# Default password scheme used for newly created accounts and changed passwords
# (value: BLF-CRYPT, SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
PASSWORD_SCHEME=BLF-CRYPT

# Header to take the real ip from
REAL_IP_HEADER=

# IPs for nginx set_real_ip_from (CIDR list separated by commas)
REAL_IP_FROM=

# choose wether mailu bounces (no) or rejects (yes) mail when recipient is unknown (value: yes, no)
REJECT_UNLISTED_RECIPIENT=

# Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET)
LOG_LEVEL=WARNING

###################################
# Database settings
###################################
DB_FLAVOR=sqlite

Most helpful comment

Removing the IP address and list _only_ the port mapping from the port listing in the docker-compose.yml 'front' container fixed this issue for me.

i.e.

# Core services
  front:
    # some other config
    ports:
      # - "52.172.203.88:80:80" # Remove this
      - "80:80" # Replace it with this
      # Replace all of the IP address with only the ports
    volumes:
      - "/mailu/certs:/certs"
      - "/mailu/overrides/nginx:/overrides"
...

I hope it works for you too!

All 5 comments

The error "bind: cannot assign requested address" is known to be related with the tcp port you are using being used by another process.
If your server has mail services already, that port is taken and you can not bind another service.
995 tcp/udp is a port used for pop3 secured

I don't think there is any mail service installed. I was trying it on a fresh Azure VPS.

this is my mailu.env file working perfectly

# Mailu main configuration file
#
# Generated for compose flavor
#
# This file is autogenerated by the configuration management wizard.
# For a detailed list of configuration variables, see the documentation at
# https://mailu.io

###################################
# Common configuration variables
###################################

# Set this to the path where Mailu data and configuration is stored
# This variable is now set directly in `docker-compose.yml by the setup utility
# ROOT=/mailu

# Mailu version to run (1.0, 1.1, etc. or master)
#VERSION=1.6

# Set to a randomly generated 16 bytes string
SECRET_KEY=123123

# Address where listening ports should bind
# This variables are now set directly in `docker-compose.yml by the setup utility
# PUBLIC_IPV4= 11.11.11.11 (default: 127.0.0.1)
# PUBLIC_IPV6= fe80::42:f0ff:fee0:1111 (default: ::1)

# Subnet of the docker network. This should not conflict with any networks to which your system is connected. (Internal and external!)
SUBNET=192.168.203.0/24

# Main mail domain
DOMAIN=man.com

# Hostnames for this server, separated with comas
HOSTNAMES=mail.man.com

# Postmaster local part (will append the main mail domain)
POSTMASTER=admin

# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt)
TLS_FLAVOR=mail-letsencrypt

# Authentication rate limit (per source IP address)
AUTH_RATELIMIT=10/minute;1000/hour 

# Opt-out of statistics, replace with "True" to opt out
DISABLE_STATISTICS=False

###################################
# Optional features
###################################

# Expose the admin interface (value: true, false)
ADMIN=true

# Choose which webmail to run if any (values: roundcube, rainloop, none)
WEBMAIL=roundcube

# Dav server implementation (value: radicale, none)
WEBDAV=radicale

# Antivirus solution (value: clamav, none)
#ANTIVIRUS=none

#Antispam solution
ANTISPAM=none

###################################
# Mail settings
###################################

# Message size limit in bytes
# Default: accept messages up to 50MB
# Max attachment size will be 33% smaller
MESSAGE_SIZE_LIMIT=50000000

# Networks granted relay permissions
# Use this with care, all hosts in this networks will be able to send mail without authentication!
RELAYNETS=

# Will relay all outgoing mails if configured
RELAYHOST=

# Fetchmail delay
FETCHMAIL_DELAY=600

# Recipient delimiter, character used to delimiter localpart from custom address part
RECIPIENT_DELIMITER=+

# DMARC rua and ruf email
DMARC_RUA=admin
DMARC_RUF=admin

# Welcome email, enable and set a topic and body if you wish to send welcome
# emails to all users.
WELCOME=false
WELCOME_SUBJECT=Welcome to your new email account
WELCOME_BODY=Welcome to your new email account, if you can read this, then it is configured properly!

# Maildir Compression
# choose compression-method, default: none (value: bz2, gz)
COMPRESSION=
# change compression-level, default: 6 (value: 1-9)
COMPRESSION_LEVEL=

###################################
# Web settings
###################################

# Path to redirect / to
WEBROOT_REDIRECT=/webmail

# Path to the admin interface if enabled
WEB_ADMIN=/bunny

# Path to the webmail if enabled
WEB_WEBMAIL=/webmail

# Website name
SITENAME=man mail

# Linked Website URL
WEBSITE=http://man.com



###################################
# Advanced settings
###################################

# Log driver for front service. Possible values:
# json-file (default)
# journald (On systemd platforms, useful for Fail2Ban integration)
# syslog (Non systemd platforms, Fail2Ban integration. Disables `docker-compose log` for front!)
# LOG_DRIVER=json-file

# Docker-compose project name, this will prepended to containers names.
COMPOSE_PROJECT_NAME=mailu

# Default password scheme used for newly created accounts and changed passwords
# (value: BLF-CRYPT, SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
PASSWORD_SCHEME=BLF-CRYPT

# Header to take the real ip from
REAL_IP_HEADER=

# IPs for nginx set_real_ip_from (CIDR list separated by commas)
REAL_IP_FROM=

# choose wether mailu bounces (no) or rejects (yes) mail when recipient is unknown (value: yes, no)
REJECT_UNLISTED_RECIPIENT=

# Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET)
LOG_LEVEL=WARNING

###################################
# Database settings
###################################
DB_FLAVOR=postgresql
DB_PW=123123

Be aware that you need to fill most of empty variables that are empty, to me i lost hours to find that error because docker wasn't keeping up the service of nginx, also make sure if you have set correct TLS FLAVOR, read mailu doc for more. Also keep in mind that in my example the login admin path is at /bunny.
I have a live server and i am not using https for the admin dashboard, but im using tls flavor for mail-letsencrypt, in order to enable ssl verified connections for pop/imap/smtp.
馃憤

Removing the IP address and list _only_ the port mapping from the port listing in the docker-compose.yml 'front' container fixed this issue for me.

i.e.

# Core services
  front:
    # some other config
    ports:
      # - "52.172.203.88:80:80" # Remove this
      - "80:80" # Replace it with this
      # Replace all of the IP address with only the ports
    volumes:
      - "/mailu/certs:/certs"
      - "/mailu/overrides/nginx:/overrides"
...

I hope it works for you too!

Removing the IP address and list _only_ the port mapping from the port listing in the docker-compose.yml 'front' container fixed this issue for me.

i.e.

# Core services
  front:
    # some other config
    ports:
      # - "52.172.203.88:80:80" # Remove this
      - "80:80" # Replace it with this
      # Replace all of the IP address with only the ports
    volumes:
      - "/mailu/certs:/certs"
      - "/mailu/overrides/nginx:/overrides"
...

I hope it works for you too!

After 3 days of troubleshooting, this and upgrading docker-compose with pip solved my issues. Thank you!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

kaiyou picture kaiyou  路  4Comments

gizocz picture gizocz  路  4Comments

elektro-wolle picture elektro-wolle  路  3Comments

whitef0x0 picture whitef0x0  路  4Comments

Yermo picture Yermo  路  3Comments