<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=en-NL link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hello,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I’ve tried implementing TLS SNI for my Postfix/Dovecot setup. I have it working in Postfix, but this example for Dovecot: <a href="https://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/#with-client-tls-sni-server-name-indication-support">https://doc.dovecot.org/configuration_manual/dovecot_ssl_configuration/#with-client-tls-sni-server-name-indication-support</a> doesn’t seem to work for me.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I’m using LetsEncrypt certificates. They work without a problem with the regular ssl_cert and ssl_key settings like this:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>ssl_cert = </docker/rancher-active-proxy/letsencrypt/live/datavenia.nl/fullchain.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ssl_key = </docker/rancher-active-proxy/letsencrypt/live/datavenia.nl/privkey.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>… but as soon as I put them in local_name blocks like this:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>local_name datavenia.nl {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_cert = </docker/rancher-active-proxy/letsencrypt/live/datavenia.nl/fullchain.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_key = </docker/rancher-active-proxy/letsencrypt/live/datavenia.nl/privkey.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>local_name verovia.nl {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_cert = </docker/rancher-active-proxy/letsencrypt/live/verovia.nl/fullchain.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_key = </docker/rancher-active-proxy/letsencrypt/live/verovia.nl/privkey.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>and restart dovecot I get the following error:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>dovecot: imap-login: Error: Failed to initialize SSL server context: Can't load SSL certificate (ssl_cert setting): The certificate is empty: user=<>, rip=213.127.63.224, lip=142.93.135.7, session=<wKjTIaLJtSXVfz/g><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I have verified that the certificate paths are correct, the files have content. I’ve already checked permissions (chmodded 777 to debug), as well as the that these are actually symlinks (updated the config to point to the real files) but nothing so far seems to change anything. I have also recreated my dh.pem (4096).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I’m hoping anyone has any idea where I might be going wrong. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Kind regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Silvan<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Output of dovecot -n:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># Pigeonhole version 0.5.13 (cdd19fe3)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># OS: Linux 5.11.0-25-generic x86_64 Ubuntu 21.04 ext4<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># Hostname: azrael00<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>auth_mechanisms = plain login<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>mail_location = maildir:/var/mail/vhosts/%d/%n<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>mail_privileged_group = mail<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>namespace inbox {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  inbox = yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  location =<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  mailbox Drafts {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    special_use = \Drafts<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  mailbox Junk {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    special_use = \Junk<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  mailbox Sent {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    special_use = \Sent<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  mailbox "Sent Messages" {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    special_use = \Sent<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  mailbox Trash {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    special_use = \Trash<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  prefix =<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>passdb {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  args = /etc/dovecot/dovecot-sql.conf.ext<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  driver = sql<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>postmaster_address = <a href="mailto:postmaster@datavenia.nl">postmaster@datavenia.nl</a><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>protocols = imap lmtp<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>service auth-worker {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  user = vmail<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>service auth {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  unix_listener /var/spool/postfix/private/auth {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    group = postfix<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    mode = 0666<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    user = postfix<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  unix_listener auth-userdb {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    mode = 0666<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    user = vmail<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  user = dovecot<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>service imap-login {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  inet_listener imap {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    port = 0<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>service lmtp {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  unix_listener /var/spool/postfix/private/dovecot-lmtp {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    group = postfix<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    mode = 0600<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    user = postfix<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ssl = required<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ssl_dh = # hidden, use -P to show it<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>userdb {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  driver = static<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>local_name datavenia.nl {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_cert = </docker/rancher-active-proxy/letsencrypt/live/datavenia.nl/fullchain.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_key = # hidden, use -P to show it<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>local_name verovia.nl {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_cert = </docker/rancher-active-proxy/letsencrypt/live/verovia.nl/fullchain.pem<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>  ssl_key = # hidden, use -P to show it<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p></div></body></html>