diff --git a/src/ldap.js b/src/ldap.js index f2a5615c9..b48457587 100644 --- a/src/ldap.js +++ b/src/ldap.js @@ -307,6 +307,12 @@ function authenticateMailbox(req, res, next) { var name = req.dn.rdns[0].attrs.cn.value.toLowerCase(); + // allow login via email + var parts = name.split('@'); + if (parts[1] === config.fqdn()) { + name = parts[0]; + } + mailboxdb.getMailbox(name, function (error, mailbox) { if (error && error.reason === DatabaseError.NOT_FOUND) return next(new ldap.NoSuchObjectError(req.dn.toString())); if (error) return next(new ldap.OperationsError(error.message)); diff --git a/src/test/ldap-test.js b/src/test/ldap-test.js index 64cf755d4..b913b67be 100644 --- a/src/test/ldap-test.js +++ b/src/test/ldap-test.js @@ -495,5 +495,13 @@ describe('Ldap', function () { done(error); }); }); + + it('allows with valid email', function (done) { + var client = ldap.createClient({ url: 'ldap://127.0.0.1:' + config.get('ldapPort') }); + + client.bind('cn=' + USER_0.username + '@' + config.fqdn() + ',ou=mailboxes,dc=cloudron', USER_0.password, function (error) { + done(error); + }); + }); }); });