diff --git a/docker-compose.yml b/docker-compose.yml
index 4e0846335aabb2bc85a0228aa63da789e53eade5..4032968b68f780a7e6c1b3a07bed080b006cc359 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,6 +3,7 @@ version: "3"
 services:
   sympa:
     build: ./docker/sympa
+    hostname: sympa
     restart: always
     volumes:
       - "./sympa/sympa:/etc/sympa"
@@ -32,6 +33,7 @@ services:
 
   postfix:
     build: ./docker/postfix
+    hostname: postfix
     volumes:
       - "./sympa/sympa/shared:/etc/sympa/shared"
       - "./postfix/rsyslog:/etc/rsyslog.d1/"
diff --git a/docker/postfix/Dockerfile b/docker/postfix/Dockerfile
index f372d1a3eea37e447619ca16158908eb4dc4d446..91ed027e4276772939c9374d201545b756fdfcbc 100644
--- a/docker/postfix/Dockerfile
+++ b/docker/postfix/Dockerfile
@@ -4,7 +4,7 @@ FROM tozd/postfix:ubuntu-focal
 VOLUME /etc/sympa/shared
 
 RUN apt-get update -q -q && \
- apt-get install adduser openssh-client opendkim opendkim-tools --yes --force-yes && \
+ apt-get install adduser dnsutils openssh-client opendkim opendkim-tools --yes --force-yes && \
  adduser --system --group mailpipe --no-create-home --home /nonexistent && \
  cp /etc/postfix/main.cf /etc/postfix/main.cf.orig && \
  cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
diff --git a/docker/postfix/etc/postfix/main.cf.append b/docker/postfix/etc/postfix/main.cf.append
index de9ce856af83316bc2f41620cb16830a90d060da..792b7c41e3cf2819df879dd54e7f4a98418d388c 100644
--- a/docker/postfix/etc/postfix/main.cf.append
+++ b/docker/postfix/etc/postfix/main.cf.append
@@ -23,6 +23,6 @@ sympabouncedomain_destination_recipient_limit = 1
 
 # DKIM
 milter_default_action = accept
-milter_protocol = 2
+milter_protocol = 6
 smtpd_milters = inet:localhost:8892
 non_smtpd_milters = inet:localhost:8892
diff --git a/docker/postfix/etc/service/opendkim/run b/docker/postfix/etc/service/opendkim/run
index e4f580d8e9c450e2a7f48407c8121b0a6cf6ade4..5a793b99a11e436418888c5c8dd1bda8344a55ba 100755
--- a/docker/postfix/etc/service/opendkim/run
+++ b/docker/postfix/etc/service/opendkim/run
@@ -1,14 +1,37 @@
 #!/bin/bash
 sed -i.bak \
-	-e 's/^#Domain.*/Domain */' \
-	-e 's/^#Selector.*/Selector mail/' \
-	-e 's@^#KeyFile.*@KeyFile /etc/dkimkeys/dkim.key@' \
-	-e 's/^\(Socket.*local.*$\)/#\1/' \
-	-e 's/^#\(Socket.*inet\)/\1/' \
-	/etc/opendkim.conf
-if [ ! -f "/etc/dkimkeys/dkim.key" ]; then
-	cd /etc/dkimkeys/
-	opendkim-genkey -s mail mail -d $MAILNAME
-	mv mail.private dkim.key
-fi
-exec /usr/sbin/opendkim -x /etc/opendkim.conf
+    -e 's/^\(Socket.*local.*$\)/#\1/' \
+    -e 's/^#\(Socket.*inet\)/\1/' \
+    /etc/opendkim.conf
+
+cat >> /etc/opendkim.conf <<EOF
+KeyTable                /etc/opendkim/KeyTable
+SigningTable            /etc/opendkim/SigningTable
+ExternalIgnoreList      /etc/opendkim/TrustedHosts
+InternalHosts           /etc/opendkim/TrustedHosts
+SenderHeaders             Sender,From,Return-Path
+Syslog yes
+SyslogSuccess Yes
+LogWhy Yes
+EOF
+mkdir -p /etc/opendkim
+
+# Add docker trusted hosts
+echo "sympa" >> /etc/opendkim/TrustedHosts
+# Give some time to sympa to be up and running
+sleep 10
+dig +short sympa >> /etc/opendkim/TrustedHosts
+
+for domain in $MAILNAME $POSTFIX_VIRTUAL_DOMAINS; do
+	keydir="/etc/dkimkeys/$domain"
+	mkdir -p $keydir
+	cd $keydir
+    if [ ! -f 'mail.private' ]; then
+	    opendkim-genkey -s mail -d $domain
+	    chown opendkim:opendkim mail.private
+    fi
+	echo "mail._domainkey.$domain $domain:mail:$keydir/mail.private" >> /etc/opendkim/KeyTable
+	echo "$domain mail._domainkey.$domain" >> /etc/opendkim/SigningTable
+	echo "$domain" >> /etc/opendkim/TrustedHosts
+done
+exec /usr/sbin/opendkim -f -x /etc/opendkim.conf
diff --git a/docker/sympa/entrypoint.sh b/docker/sympa/entrypoint.sh
index 421cc5213102d4a8aa232eb37e27721a41a536f6..36a17b629f9daeb6fb1bef1ee5153d768a90c769 100755
--- a/docker/sympa/entrypoint.sh
+++ b/docker/sympa/entrypoint.sh
@@ -74,16 +74,13 @@ fi
 chown mail:root /var/spool/nullmailer/trigger
 chmod 0622 /var/spool/nullmailer/trigger
 
-if [ -n "$ADMINADDR" ]; then
-  echo "$ADMINADDR" > /etc/nullmailer/adminaddr
-fi
-
 if [ -n "$REMOTES" ]; then
   echo "$REMOTES" > /etc/nullmailer/remotes
 fi
 
-if [ -n "$HOSTNAME" ]; then
-  echo "$HOSTNAME" > /etc/mailname
+if [ -n "$SYMPA_DOMAIN" ]; then
+  echo "$SYMPA_DOMAIN" > /etc/mailname
+  echo "$SYMPA_DOMAIN" > /etc/nullmailer/defaultdomain
 fi
 
 mkdir -p /var/log/supervisor/