iRedmail

Quick start

Create a docker environment file used to store custom settings:

mkdir /iredmail         # Create a new directory or use any directory
                        # you prefer. `/iredmail/` is just an example
cd /iredmail
touch iredmail-docker.conf

echo HOSTNAME=mail.layer3.co.za >> iredmail-docker.conf
echo FIRST_MAIL_DOMAIN=layer3.co.za >> iredmail-docker.conf
echo FIRST_MAIL_DOMAIN_ADMIN_PASSWORD=MyP455w0rd >> iredmail-docker.conf
echo MLMMJADMIN_API_TOKEN=$(openssl rand -base64 32) >> iredmail-docker.conf
echo ROUNDCUBE_DES_KEY=$(openssl rand -base64 24) >> iredmail-docker.conf
echo MYSQL_ROOT_PASSWORD=Pr0t3ctMYSQLdb >> iredmail-docker.conf

Create required directories to store application data:

cd /iredmail
mkdir -p data/{backup-mysql,clamav,custom,imapsieve_copy,mailboxes,mlmmj,mlmmj-archive,mysql,sa_rules,ssl,postfix_queue}

Launch the container:

docker run \
    --rm \
    --name iredmail \
    --env-file iredmail-docker.conf \
    --hostname mail.layer3.co.za \
    -p 80:80 \
    -p 443:443 \
    -p 110:110 \
    -p 995:995 \
    -p 143:143 \
    -p 993:993 \
    -p 25:25 \
    -p 465:465 \
    -p 587:587 \
    -v /iredmail/data/backup-mysql:/var/vmail/backup/mysql \
    -v /iredmail/data/mailboxes:/var/vmail/vmail1 \
    -v /iredmail/data/mlmmj:/var/vmail/mlmmj \
    -v /iredmail/data/mlmmj-archive:/var/vmail/mlmmj-archive \
    -v /iredmail/data/imapsieve_copy:/var/vmail/imapsieve_copy \
    -v /iredmail/data/custom:/opt/iredmail/custom \
    -v /iredmail/data/ssl:/opt/iredmail/ssl \
    -v /iredmail/data/mysql:/var/lib/mysql \
    -v /iredmail/data/clamav:/var/lib/clamav \
    -v /iredmail/data/sa_rules:/var/lib/spamassassin \
    -v /iredmail/data/postfix_queue:/var/spool/postfix \
    iredmail/mariadb:stable

Notes:

  • On first run, it will generate a self-signed ssl cert, this may take a long time, please be patient.

  • Each time you run the container, few tasks will be ran:

    • Update SpamAssassin rules.

    • Update ClamAV virus signature database.

  • FIRST_MAIL_DOMAIN_ADMIN_PASSWORD is only set/reset on first run, not each run.

  • All SQL passwords are randomly set/reset by default each time you launch or relaunch the container. If you don't like this, please set fixed passwords in iredmail-docker.conf, e.g. MYSQL_ROOT_PASSWORD=<your-password>.

  • Do not forget to setup DNS recordsarrow-up-right for your server hostname and email domain names.

DKIM

DKIM key was generated during the installation process, now let’s see which public keys are present:

On your DNS servers, create 2 "TXT" files for your domain and mail servers:

dkim.domainkey TXT v=DKIM1; p=AAAAABBBBBCCCCCDDDDD; dkim.domainkey.mail TXT v=DKIM1; p=AAAAABBBBBCCCCCDDDDD;

Test:

amavisd-new testkeys

Last updated