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 records 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:
#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;
Test:
amavisd-new testkeys

Last updated
Was this helpful?