<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p> </p>
    <div class="moz-text-html" lang="x-unicode">
      <p>I've set up a new dovecot+postfix instance with virtual (not
        system) users.<br>
      </p>
      <p>I've a few questions, mostly about auth.  I <i>think</i> that
        postfix handles auth by asking dovecot.<br>
      </p>
      <p>Users need to provide user + password to send (smtps) and
        receive (imaps).  I see where I've configured this for dovecot,
        which is /etc/dovecot/passwd.db.  That file contains lines like
        this:</p>
      <blockquote>
        <p><tt><a class="moz-txt-link-abbreviated"
              href="mailto:jeff@mobilitains.fr">jeff@mobilitains.fr</a>:{BLF-CRYPT}$2y$05$c...</tt></p>
      </blockquote>
      <p>What concerns me is that I see occasional log items like this:</p>
      <blockquote>
        <p><tt>Jan 24 11:26:33 nantes-m1 postfix/smtpd[4597]: fatal: no
            SASL authentication mechanisms</tt><br>
        </p>
      </blockquote>
      <p>(Also, I can't connect with thunderbird.)<br>
      </p>
      <p>But I think I've configured SASL auth, so I'm not sure what to
        look at / how to debug this.  I'm looking for suggestions how to
        approach this.<br>
      </p>
      <p>I do not see how postfix knows who is allowed to connect,
        however.  Am I correct that postfix delegates SASL to dovecot? 
        This is the relevant config, I think:</p>
      <blockquote>
        <p><tt>[T] jeff@nantes-m1:log $ doveconf -n<br>
            # 2.3.7.2 (3c910f64b): /etc/dovecot/dovecot.conf<br>
            # Pigeonhole version 0.5.7.2 ()<br>
            # OS: Linux 5.4.0-64-generic x86_64 Ubuntu 20.04.1 LTS <br>
            # Hostname: nantes-m1.p27.eu<br>
            auth_verbose = yes<br>
            mail_location = mbox:~/mail:INBOX=/var/mail/%u<br>
            mail_privileged_group = mail<br>
            namespace inbox {<br>
              inbox = yes<br>
              location = <br>
              mailbox Archive {<br>
                auto = subscribe<br>
                special_use = \Archive<br>
              }<br>
              mailbox Drafts {<br>
                auto = subscribe<br>
                special_use = \Drafts<br>
              }<br>
              mailbox Junk {<br>
                auto = subscribe<br>
                special_use = \Junk<br>
              }<br>
              mailbox Sent {<br>
                auto = subscribe<br>
                special_use = \Sent<br>
              }<br>
              mailbox Trash {<br>
                auto = subscribe<br>
                special_use = \Trash<br>
              }<br>
              prefix = <br>
            }<br>
            passdb {<br>
              args = username_format=%u scheme=blf-crypt
            /etc/dovecot/passwd.db<br>
              driver = passwd-file<br>
            }<br>
            plugin {<br>
              sieve = <a class="moz-txt-link-freetext">file:~/sieve;active=~/.dovecot.sieve</a><br>
              sieve_after = /var/mail/vmail/sieve-after<br>
              sieve_before = /var/mail/vmail/sieve-before<br>
              sieve_dir = ~/sieve<br>
            }<br>
            protocols = " imap"<br>
            ssl = required<br>
            ssl_cert =
            </etc/letsencrypt/live/nantes-m1.p27.eu/fullchain.pem<br>
            ssl_client_ca_dir = /etc/ssl/certs<br>
            ssl_dh = # hidden, use -P to show it<br>
            ssl_key = # hidden, use -P to show it<br>
            userdb {<br>
              args = uid=4000 gid=4000 home=/var/mail/vmail/%d/%n<br>
              driver = static<br>
            }<br>
            protocol lda {<br>
              deliver_log_format = msgid=%m: %$<br>
              mail_plugins = sieve<br>
              postmaster_address = postmaster@{{ primary_domain }}<br>
              quota_full_tempfail = yes<br>
              rejection_reason = Your message to <%t> was
            automatically rejected:%n%r<br>
            }<br>
            protocol imap {<br>
              imap_client_workarounds = delay-newmail
            tb-extra-mailbox-sep tb-lsub-flags<br>
              mail_max_userip_connections = 20<br>
            }<br>
            [T] jeff@nantes-m1:log $ <br>
            <br>
          </tt></p>
        <p><tt>[T] jeff@nantes-m1:log $ postconf -n | grep -i sasl<br>
            broken_sasl_auth_clients = yes<br>
            smtpd_recipient_restrictions =
reject_unknown_client_hostname,reject_unknown_sender_domain,reject_unknown_recipient_domain,permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_invalid_hostname,reject_non_fqdn_sender<br>
            smtpd_relay_restrictions = permit_mynetworks
            permit_sasl_authenticated defer_unauth_destination<br>
            smtpd_sasl_auth_enable = yes<br>
            smtpd_sasl_authenticated_header = yes<br>
            smtpd_sasl_local_domain =<br>
            smtpd_sasl_path = private/auth<br>
            smtpd_sasl_security_options = noanonymous<br>
            smtpd_sasl_type = dovecot<br>
            <br>
          </tt><tt>[T] jeff@nantes-m1:log $ postconf -Mf</tt><tt><br>
          </tt><tt>smtp       inet  n       -       y       -      
            -       smtpd</tt><tt><br>
          </tt><tt>submission inet  n       -       y       -      
            -       smtpd</tt><tt><br>
          </tt><tt>    -o syslog_name=postfix/submission</tt><tt><br>
          </tt><tt>    -o smtpd_tls_security_level=encrypt</tt><tt><br>
          </tt><tt>    -o smtpd_sasl_auth_enable=yes</tt><tt><br>
          </tt><tt>    -o smtpd_client_restrictions=</tt><tt><br>
          </tt><tt>    -o smtpd_helo_restrictions=</tt><tt><br>
          </tt><tt>    -o smtpd_sender_restrictions=</tt><tt><br>
          </tt><tt>    -o smtpd_recipient_restrictions=</tt><tt><br>
          </tt><tt>    -o
            smtpd_relay_restrictions=permit_sasl_authenticated,reject</tt><tt><br>
          </tt><tt>    -o milter_macro_daemon_name=ORIGINATING</tt><tt><br>
          </tt><tt>smtps      inet  n       -       y       -      
            -       smtpd</tt><tt><br>
          </tt><tt>    -o syslog_name=postfix/smtps</tt><tt><br>
          </tt><tt>    -o smtpd_tls_wrappermode=yes</tt><tt><br>
          </tt><tt>    -o smtpd_sasl_auth_enable=yes</tt><tt><br>
          </tt><tt>    -o smtpd_reject_unlisted_recipient=no</tt><tt><br>
          </tt><tt>    -o smtpd_client_restrictions=</tt><tt><br>
          </tt><tt>    -o smtpd_helo_restrictions=</tt><tt><br>
          </tt><tt>    -o smtpd_sender_restrictions=</tt><tt><br>
          </tt><tt>    -o smtpd_recipient_restrictions=</tt><tt><br>
          </tt><tt>    -o
            smtpd_relay_restrictions=permit_sasl_authenticated,reject</tt><tt><br>
          </tt><tt>    -o milter_macro_daemon_name=ORIGINATING<br>
            ...</tt><br>
        </p>
      </blockquote>
      <p>Many thanks for any pointers.</p>
      <p>I'm also a bit confused on how to test it, really, short of
        connecting with a regular email client (mutt, thunderbird,
        etc.).  If there are more appropriate tools that I've missed,
        I'm quite open to pointers.<br>
      </p>
      <pre class="moz-signature" cols="72">-- 
Jeff Abrahamson
+33 6 24 40 01 57
+44 7920 594 255

<a class="moz-txt-link-freetext" href="http://p27.eu/jeff/">http://p27.eu/jeff/</a>
<a class="moz-txt-link-freetext" href="http://transport-nantes.com/">http://transport-nantes.com/</a></pre>
    </div>
    <br>
  </body>
</html>