diff --git a/roles/mail_forwarder/molecule/default/molecule.yml b/roles/mail_forwarder/molecule/default/molecule.yml
index d567dabd47b19e11fb35d519134050000a379dee..661a2538032385118de773d3954e8b0cfc675e2a 100644
--- a/roles/mail_forwarder/molecule/default/molecule.yml
+++ b/roles/mail_forwarder/molecule/default/molecule.yml
@@ -27,6 +27,11 @@ platforms:
         ip: 192.168.56.11
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:11
+        network_name: private_network
+        netmask: 116
+        type: static
 
   - name: client1
     groups:
@@ -40,6 +45,11 @@ platforms:
         ip: 192.168.56.12
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:12
+        network_name: private_network
+        netmask: 116
+        type: static
 
 
   # Bookworm
@@ -56,6 +66,11 @@ platforms:
         ip: 192.168.56.21
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:21
+        network_name: private_network
+        netmask: 116
+        type: static
 
   - name: parameters-optional-bookworm
     groups:
@@ -68,6 +83,11 @@ platforms:
         ip: 192.168.56.22
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:22
+        network_name: private_network
+        netmask: 116
+        type: static
 
   - name: parameters-no-incoming-bookworm
     groups:
@@ -80,6 +100,11 @@ platforms:
         ip: 192.168.56.23
         network_name: private_network
         type: static
+      - auto_config: true
+        ip: fd00::192:168:56:23
+        network_name: private_network
+        netmask: 116
+        type: static
 
 provisioner:
   name: ansible
diff --git a/roles/mail_forwarder/molecule/default/prepare.yml b/roles/mail_forwarder/molecule/default/prepare.yml
index 20a61c1fddb92231e866d25bacb8e7f890520850..73680bc49d87b5cc8f017bc732561eb64d725f1d 100644
--- a/roles/mail_forwarder/molecule/default/prepare.yml
+++ b/roles/mail_forwarder/molecule/default/prepare.yml
@@ -62,6 +62,11 @@
         192.168.56.21: "parameters-mandatory-bookworm"
         192.168.56.22: "parameters-optional-bookworm"
         192.168.56.23: "parameters-no-incoming-bookworm"
+        fd00::192:168:56:11: "mail-server domain1"
+        fd00::192:168:56:12: "client1"
+        fd00::192:168:56:21: "parameters-mandatory-bookworm"
+        fd00::192:168:56:22: "parameters-optional-bookworm"
+        fd00::192:168:56:23: "parameters-no-incoming-bookworm"
 
     - name: Install tools for testing
       ansible.builtin.apt:
@@ -157,10 +162,14 @@
         name: swaks
         state: present
 
-    - name: Set-up port forwarding
+    - name: Set-up port forwarding for IPv4
       ansible.builtin.command: "iptables -t nat -A PREROUTING -p tcp -m tcp --dport 27 -j REDIRECT --to-ports 25"
       changed_when: false
 
+    - name: Set-up port forwarding for IPv4
+      ansible.builtin.command: "ip6tables -t nat -A PREROUTING -p tcp -m tcp --dport 27 -j REDIRECT --to-ports 25"
+      changed_when: false
+
   handlers:
 
     - name: Update CA certificate cache  # noqa no-changed-when
diff --git a/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_client.py b/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_client.py
index e6e2920b784120e987516681d15040b24d05bda0..cf53fa086c24e043c37b91467eb20874f2478097 100644
--- a/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_client.py
+++ b/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_client.py
@@ -15,7 +15,8 @@ ansible_runner = testinfra.utils.ansible_runner.AnsibleRunner(
                          sorted(
                              set(ansible_runner.get_hosts('all')) -
                              set(ansible_runner.get_hosts('helper'))))
-def test_connectivity_from_client(host, server):
+@pytest.mark.parametrize('ip_protocol', [4, 6])
+def test_connectivity_from_client(host, server, ip_protocol):
     """
     Tests connectivity towards mail forwarder servers from client
     (non-relay). Connectivity should fail for both.
@@ -23,6 +24,6 @@ def test_connectivity_from_client(host, server):
 
     with host.sudo():
 
-        scan = host.run('nmap -4 -p 25 -oG - %s', server)
+        scan = host.run('nmap -%s -p 25 -oG - %s', str(ip_protocol), server)
         assert scan.rc == 0
         assert "Ports: 25/filtered/tcp//smtp/" in scan.stdout
diff --git a/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_relay.py b/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_relay.py
index 9ae7a1cd3aa0879cba807f8f6d308d0935a76497..032737d1b0273a74106e33869f1b55af4c1b6988 100644
--- a/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_relay.py
+++ b/roles/mail_forwarder/molecule/default/tests/test_connectivity_from_relay.py
@@ -13,7 +13,8 @@ ansible_runner = testinfra.utils.ansible_runner.AnsibleRunner(
 
 @pytest.mark.parametrize("server",
                          ansible_runner.get_hosts('parameters-optional'))
-def test_connectivity_from_authorised_relay(host, server):
+@pytest.mark.parametrize('ip_protocol', [4, 6])
+def test_connectivity_from_authorised_relay(host, server, ip_protocol):
     """
     Tests connectivity towards mail forwarder servers from authorised
     relay.
@@ -21,7 +22,7 @@ def test_connectivity_from_authorised_relay(host, server):
 
     with host.sudo():
 
-        scan = host.run('nmap -p 25 -oG - %s', server)
+        scan = host.run('nmap -%s -p 25 -oG - %s', str(ip_protocol), server)
         assert scan.rc == 0
         assert "Ports: 25/open/tcp//smtp/" in scan.stdout
 
@@ -30,7 +31,8 @@ def test_connectivity_from_authorised_relay(host, server):
                          sorted(
                              set(ansible_runner.get_hosts('parameters-mandatory')) |
                              set(ansible_runner.get_hosts('parameters-no-incoming'))))
-def test_connectivity_from_unauthorised_relay(host, server):
+@pytest.mark.parametrize('ip_protocol', [4, 6])
+def test_connectivity_from_unauthorised_relay(host, server, ip_protocol):
     """
     Tests connectivity towards mail forwarder servers from unauthorised
     relay.
@@ -38,32 +40,34 @@ def test_connectivity_from_unauthorised_relay(host, server):
 
     with host.sudo():
 
-        scan = host.run('nmap -p 25 -oG - %s', server)
+        scan = host.run('nmap -%s -p 25 -oG - %s', str(ip_protocol), server)
         assert scan.rc == 0
         assert "Ports: 25/filtered/tcp//smtp/" in scan.stdout
 
 
 @pytest.mark.parametrize("server",
                          ansible_runner.get_hosts('parameters-optional'))
-def test_mail_reception_from_authorised_relay(host, server):
+@pytest.mark.parametrize('ip_protocol', [4, 6])
+def test_mail_reception_from_authorised_relay(host, server, ip_protocol):
     """
     Tests if mails can be sent from relay to servers configured to use the
     relay.
     """
 
-    send = host.run('swaks --suppress-data --to root@{server} --server {server}'.format(server=server))
+    send = host.run('swaks -%s --suppress-data --to root@%s --server %s', str(ip_protocol), server, server)
     assert send.rc == 0
 
 
 @pytest.mark.parametrize("server",
                          ansible_runner.get_hosts('parameters-optional'))
-def test_open_relay(host, server):
+@pytest.mark.parametrize('ip_protocol', [4, 6])
+def test_open_relay(host, server, ip_protocol):
     """
     Tests if mail forwarder behaves as open relay.
     """
 
     no_recipients_accepted_error_code = 24
 
-    send = host.run('swaks --suppress-data --to root@client1 --server %s', server)
+    send = host.run('swaks -%s --suppress-data --to root@client1 --server %s', str(ip_protocol), server)
     assert send.rc == no_recipients_accepted_error_code
     assert "Relay access denied" in send.stdout
diff --git a/roles/mail_forwarder/molecule/default/tests/test_optional.py b/roles/mail_forwarder/molecule/default/tests/test_optional.py
index 389efe7e15bc6b3e67bfa718cbd3b3f776e5e193..d9426832b72d41d8bd022b143dbdd447d811159d 100644
--- a/roles/mail_forwarder/molecule/default/tests/test_optional.py
+++ b/roles/mail_forwarder/molecule/default/tests/test_optional.py
@@ -45,7 +45,7 @@ def test_local_aliases(host):
     """
 
     hostname = host.run('hostname').stdout.strip()
-    send = host.run('swaks --suppress-data --to root@localhost')
+    send = host.run('swaks --suppress-data --to root@localhost --server localhost')
     assert send.rc == 0
     message_id = re.search('Ok: queued as (.*)', send.stdout).group(1)