Problem switching from LDA to LMTP (with Postfix)

Nikolaos Milas
Fri, 04 Aug 2017 10:06:32 -0000

Hello,

I am trying to switch from LDA to LMTP on a Postfix/Dovecot setup, but
something is going wrong.

I have followed the directions at:
https://wiki.dovecot.org/HowTo/PostfixDovecotLMTP

Here is a session from dovecot.log:

Aug  4 12:19:42 vmail2 dovecot: lmtp(3152): Connect from local
Aug  4 12:19:42 vmail2 dovecot: auth: ldap(imaptester at noa.gr): unknown user
Aug  4 12:19:42 vmail2 dovecot: lmtp(3152): Disconnect from local:
Successful quit
Aug  4 12:19:42 vmail2 dovecot: lmtp(3152): Connect from local
Aug  4 12:19:42 vmail2 dovecot: auth: ldap(nmilas at noa.gr): unknown user
Aug  4 12:19:42 vmail2 dovecot: lmtp(3152): Disconnect from local:
Successful quit
Aug  4 12:19:42 vmail2 dovecot: imap(nmilas): save: box=Sent, uid=31,
msgid=<c84ae059-854d-12bc-6aa2-9099cc2977b2 at noa.gr>, size=445,
vsize=459, from=Nikolaos Milas <nmilas at noa.gr>, subject=Test (12) -
vmail2, flags=(\Seen)

What is going wrong?

It seems authentication is not working correctly with this setup. If
understand right, dovecot is querying ldap with the whole mail address
and not with the local part only (which is the username), as I would expect.

What is the suggested course of action?

With LDA it was working fine; here is a sample log entry:

Aug  4 12:02:51 vmail2 dovecot: lda(imaptester): sieve:
msgid=<768b056c-1d12-c9bd-0864-c3fc6a6dbeda at noa.gr>: stored mail into
mailbox 'INBOX'
Aug  4 12:02:51 vmail2 dovecot: imap(nmilas): save: box=Sent, uid=30,
msgid=<768b056c-1d12-c9bd-0864-c3fc6a6dbeda at noa.gr>, size=445,
vsize=459, from=Nikolaos Milas <nmilas at noa.gr>, subject=Test (11) -
vmail2, flags=(\Seen)
Aug  4 12:02:51 vmail2 dovecot: imap(nmilas): Connection closed (noop
finished 0.372 secs ago) in=628 out=2145

Please help me to figure out how things should be.

The config file follows:

----------------------------- CONFIG START --------------------------------

protocols = imap pop3 sieve lmtp

login_greeting = NOA POP/IMAP Srv XAPITI XPICTOY

mail_location = maildir:~/Maildir/
mail_gid = 500
mail_uid = 500

auth_mechanisms = plain login
auth_username_format = %Lu

auth_verbose = yes
auth_debug = no
mail_debug = no

disable_plaintext_auth = no

mail_plugins = quota mail_log notify

protocol imap {

   imap_client_workarounds = "delay-newmail"
   mail_plugins = quota imap_quota mail_log notify
   mail_max_userip_connections = 400

}

protocol pop3 {
   mail_max_userip_connections = 3
   mail_plugins = quota notify
   pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
   pop3_uidl_format = %08Xu%08Xv
}

protocol lda {
   auth_socket_path = /var/run/dovecot/auth-master
   info_log_path    log_path    mail_plugins = quota notify sieve
   postmaster_address = sysadmin at noa.gr
   sendmail_path = /usr/lib/sendmail
}

protocol lmtp {
   auth_socket_path = /var/run/dovecot/auth-master
   postmaster_address = sysadmin at noa.gr
   mail_plugins = quota notify sieve
   sendmail_path = /usr/lib/sendmail
}

protocol sieve {
   managesieve_max_line_length = 65536
   mail_max_userip_connections = 10
   managesieve_logout_format = bytes=%i/%o
   managesieve_max_compile_errors = 10
}


userdb {
   args = /etc/dovecot/dovecot-usrdb-ldap.conf
   driver = ldap
}

passdb {
   args = /etc/dovecot/dovecot-passdb-ldap.conf
   driver = ldap
}

plugin {
   mail_log_events = delete undelete expunge copy mailbox_delete
mailbox_rename flag_change save mailbox_create
   mail_log_fields = uid box msgid size flags vsize from subject
}

plugin {
   quota = maildir:User quota
   quota_rule = *:storage=5G
   quota_rule2 = Trash:storage=+3%%
   quota_warning = storage=75%% quota-warning 75 %u
   quota_warning2 = storage=90%% quota-warning 90 %u
}

plugin {
   sieve = file:~/sieve;active=~/.dovecot.sieve
   sieve_max_script_size = 0
   sieve_max_actions = 0
   sieve_max_redirects = 1
}

service quota-warning {
   executable = script /opt/mail1.sh
   user = vmail
   unix_listener quota-warning {
     user = vmail
   }
}

service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-master {
     group = vmail
     mode = 0660
     user = vmail
   }
   user = root
}

service imap-login {
   service_count = 1
   vsz_limit = 64 M
   process_limit = 500
   process_min_avail = 2
}

service pop3-login {
   service_count = 1
   vsz_limit = 64 M
}

service managesieve-login {
   inet_listener sieve {
     port = 4190
   }

   service_count = 1
   process_min_avail = 0
   vsz_limit = 64M
}

service managesieve {
   process_limit = 1024
}

service imap {
   executable = imap postlogin
   process_limit = 2048
}

service pop3 {
   executable = pop3 postlogin
}

service postlogin {
   executable = script-login -d rawlog
   unix_listener postlogin {
   }
}

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
   }
}

ssl_ca = </etc/pki/tls/certs/DigiCertCA.crt
ssl_cert = </etc/pki/tls/certs/star_noa_gr-1243437.crt
ssl_key = </etc/pki/tls/private/star_noa_gr-1243437.key

ssl_protocols = !SSLv2 !SSLv3

syslog_facility = local1

----------------------------- CONFIG END --------------------------------

FILE: /etc/dovecot/dovecot-usrdb-ldap.conf

hosts = localhost
tls = no
base = ou=people, dc=noa, dc=gr
scope = onelevel
ldap_version = 3
dn = uid=auth,ou=Sys,dc=noa,dc=gr
dnpass = secret
auth_bind = yes
user_filter = (uid=%u)
pass_filter = (uid=%u)
pass_attrs = uid=user,userPassword=password
auth_bind_userdn = uid=%u,ou=people,dc=noa,dc=gr
user_attrs = roomNumber=quota_rule=*:bytes=%$,uid=home=/home/vmail/%u
iterate_filter = (objectClass=*)

----------------------------------------------------------------------------------------

Thanks in advance,
Nick