iRedmail | CONTAINERISATION & ORCHESTRATION
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.
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>.
DKIM key was generated during the installation process, now let’s see which public keys are present:
#From Docker Host >> Get container ID using 'docker ps'
aabbccdd
#From Docker Host >> We will use " docker exec" to access the iredmail container
sudo docker exec -it aabbccdd /bin/bash
amavisd-new showkeys
amavisd-new -c /etc/amavis/conf.d/50-user showkeys
root@mail:/# amavisd-new showkeys
; key#1 1024 bits, i=dkim, d=layer3.co.za, /opt/iredmail/custom/amavisd/dkim/layer3.co.za.pem
dkim._domainkey.layer3.co.za. 3600 TXT (
"v=DKIM1; p="
"AAAAA"
"BBBBB"
"CCCCC"
"DDDDD")
root@mail:/#
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;
amavisd-new testkeys