Further to my report on stanzas being only generated the IPv6 addresses I have found a work-around until someone in the development team comes up with something like inet_listener_6 and inet_listener_4
The workaround is simply to get dovecot to listen in IPv4 and IPv6. It has no effect on clients who will use ordinary MX records to access the normal mailserver name
The workaround requires modifying DNS with duplicate A and AAAA records (not CNAME or ALIAS) for the addresses of interest. So in the instance of one domain:
mail A 192.168.0.1 AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
mail4 A 192.168.0.1
mail6 AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Then the dovecot.conf file requires multiple local stanzas. In this case two domains requires four stanzas
listen = mail4.example.com,mail6.example.com,mail4.example2.com,mail6.example2.com,localhost
protocols = imap lmtp sieve
ssl_min_protocol = TLSv1.2 ssl_cipher_list = EECDH+AESGCM:EDH+AESGCM ssl_prefer_server_ciphers = yes
local mail4.example.com { protocol imap { ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
service imaps_login_4 { inet_listener imaps { address=mail4.example.com } inet_listener imap { address=mail4.example.com } } } }
local mail6.example.com { protocol imap { ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
service imaps_login_6 { inet_listener imaps { address=mail6.example.com } inet_listener imap { address=mail6.example.com } } } }
local mail4.example2.com { protocol imap { ssl_cert = </etc/letsencrypt/live/example2.com/fullchain.pem ssl_key = </etc/letsencrypt/live/example2.com/privkey.pem
service imaps_login_44 { inet_listener imaps { address = mail4.example2.com } inet_listener imap { address = mail4.example2.com } } } }
local mail6.example2.com { protocol imap { ssl_cert = </etc/letsencrypt/live/example2.com/fullchain.pem ssl_key = </etc/letsencrypt/live/example2.com/privkey.pem
service imaps_login_66 { inet_listener imaps { address = mail6.example2.com } inet_listener imap { address = mail6.example2.com } } } }