Quantcast
Channel: Active questions tagged email - Stack Overflow
Viewing all articles
Browse latest Browse all 29758

Configure tvial/docker-mailserver with Active Directory

$
0
0

I'm currently trying to set up a tvial/docker-mailserver image with an Active Directory.

My infrastructure consists of a Windows Server 2016 (IP: 10.100.100.1) and an Ubuntu server v18.04 (IP: 10.100.100.3).

The Docker is located into Ubuntu and the AD at located into Windows ( logic =) ).

My Docker-composer configuration for this container looks like this:

  mailserver:
    image: tvial/docker-mailserver
    container_name: mailserver
    domainname: ad.lan
    restart: always
    # volumes:
      # - ./mail/maildata:/var/mail
      # - ./mail/mailstate:/var/mail-state
      # - ./mail/maillogs:/var/log/mail
      # - ./mail/config/:/tmp/docker-mailserver/
    ports:
      - 25:25
      - 143:143
      - 587:587
      - 993:993
    environment:
      - ENABLE_SPAMASSASSIN=0
      - ENABLE_CLAMAV=0
      - ENABLE_FAIL2BAN=0
      - ENABLE_POSTGREY=0
      - ONE_DIR=1
      - DMS_DEBUG=1
      - PERMIT_DOCKER=host
      - POSTMASTER_ADDRESS=Administrateur@ad.lan
      - POSTFIX_MESSAGE_SIZE_LIMIT=100000000

      - ENABLE_LDAP=1
      - LDAP_SERVER_HOST=10.100.100.1
      - LDAP_BIND_DN=CN=Administrateur,CN=Users,DC=ad,DC=lan
      - LDAP_BIND_PW=*****
      - LDAP_SEARCH_BASE=dc=ad,dc=lan
      # - LDAP_QUERY_FILTER_USER=(&(objectClass=user)(mail=%s))
      # - LDAP_QUERY_FILTER_GROUP=(&(objectclass=group)(mail=%s))
      # - LDAP_QUERY_FILTER_ALIAS=(&(objectClass=user)(otherMailbox=%s))
      # - LDAP_QUERY_FILTER_DOMAIN=(&(|(mail=*@%s)(mailalias=*@%s)(mailGroupMember=*@%s))(mailEnabled=TRUE))

      - ENABLE_SASLAUTHD=1
      - SASLAUTHD_MECHANISMS=ldap
      - SASLAUTHD_LDAP_PROTO=
      - SASLAUTHD_LDAP_SERVER=10.100.100.1
      - SASLAUTHD_LDAP_BIND_DN=CN=Administrateur,CN=Users,DC=ad,DC=lan
      - SASLAUTHD_LDAP_PASSWORD=*****
      - SASLAUTHD_LDAP_SEARCH_BASE=dc=ad,dc=lan
      - SASLAUTHD_LDAP_FILTER=(&(sAMAccountName=%U)(objectClass=person))

      - DOVECOT_PASS_ATTRS=uid=user,userPassword=password
      - DOVECOT_USER_ATTRS=homeDirectory=home,qmailUID=uid,qmailGID=gid,mailMessageStore=mail
      - DOVECOT_PASS_FILTER=(&(objectClass=user)(mail=%n))
      - DOVECOT_USER_FILTER=(&(objectClass=user)(mail=%n))
    cap_add:
      - NET_ADMIN

For debugging I have disabled the mounting of volumes so as to be completely stateless from one restart of the container on the other.

My server ubuntu manages to contact the AD with the command:

ldapsearch -H ldap://10.100.100.1 -x -W -D "Administrateur@ad.lan" -b "dc=ad,dc=lan""(sAMAccountName=Administrateur)"

# extended LDIF
#
# LDAPv3
# base <dc=ad,dc=lan> with scope subtree
# filter: (sAMAccountName=Administrateur)
# requesting: ALL
#

# Administrateur, Users, ad.lan
dn: CN=Administrateur,CN=Users,DC=ad,DC=lan
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Administrateur
description:: Q29tcHRlIGTigJl1dGlsaXNhdGV1ciBk4oCZYWRtaW5pc3RyYXRpb24=
distinguishedName: CN=Administrateur,CN=Users,DC=ad,DC=lan
instanceType: 4
whenCreated: 20191012140514.0Z
whenChanged: 20191116095120.0Z
uSNCreated: 8196
memberOf:: Q049UHJvcHJpw6l0YWlyZXMgY3LDqWF0ZXVycyBkZSBsYSBzdHJhdMOpZ2llIGRlIGd
 yb3VwZSxDTj1Vc2VycyxEQz1hZCxEQz1sYW4=
memberOf: CN=Admins du domaine,CN=Users,DC=ad,DC=lan
memberOf:: Q049QWRtaW5pc3RyYXRldXJzIGRlIGzigJllbnRyZXByaXNlLENOPVVzZXJzLERDPWF
 kLERDPWxhbg==
memberOf:: Q049QWRtaW5pc3RyYXRldXJzIGR1IHNjaMOpbWEsQ049VXNlcnMsREM9YWQsREM9bGF
 u
memberOf: CN=Administrateurs,CN=Builtin,DC=ad,DC=lan
uSNChanged: 221259
name: Administrateur
objectGUID:: Wi34ux+F1kKwSOrt7+Ip/A==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 132180338869706594
lastLogoff: 0
lastLogon: 132184557184373662
pwdLastSet: 132153036785420852
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAA3tGWHhIC6goYjgyq9AEAAA==
adminCount: 1
accountExpires: 9223372036854775807
logonCount: 227
sAMAccountName: Administrateur
sAMAccountType: 805306368
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ad,DC=lan
isCriticalSystemObject: TRUE
dSCorePropagationData: 20191013141413.0Z
dSCorePropagationData: 20191013141413.0Z
dSCorePropagationData: 20191012140800.0Z
dSCorePropagationData: 16010101181216.0Z
lastLogonTimestamp: 132183714800509241

# search reference
ref: ldap://ForestDnsZones.ad.lan/DC=ForestDnsZones,DC=ad,DC=lan

# search reference
ref: ldap://DomainDnsZones.ad.lan/DC=DomainDnsZones,DC=ad,DC=lan

# search reference
ref: ldap://ad.lan/CN=Configuration,DC=ad,DC=lan

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries: 1
# numReferences: 3

The user I use for connection tests has the following profile:

# extended LDIF
#
# LDAPv3
# base <dc=ad,dc=lan> with scope subtree
# filter: (sAMAccountName=flavien)
# requesting: ALL
#

# Flavien PERIER, Utilisateurs, ad.lan
dn: CN=Flavien PERIER,OU=Utilisateurs,DC=ad,DC=lan
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Flavien PERIER
sn: PERIER
givenName: Flavien
initials: FP
distinguishedName: CN=Flavien PERIER,OU=Utilisateurs,DC=ad,DC=lan
instanceType: 4
whenCreated: 20191013140726.0Z
whenChanged: 20191117093634.0Z
displayName: Flavien PERIER
uSNCreated: 20511
memberOf: CN=Dossier de partage,OU=Utilisateurs,DC=ad,DC=lan
uSNChanged: 249944
name: Flavien PERIER
objectGUID:: oQdAXod2WEK60hd8pA5H5A==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
homeDirectory: \\10.100.100.1\PartageSMB\flavien
homeDrive: Z:
badPasswordTime: 132163352342778737
lastLogoff: 0
lastLogon: 132180202493587284
pwdLastSet: 132154492469652506
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAA3tGWHhIC6goYjgyqTwQAAA==
accountExpires: 9223372036854775807
logonCount: 39
sAMAccountName: flavien
sAMAccountType: 805306368
userPrincipalName: flavien@ad.lan
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ad,DC=lan
dSCorePropagationData: 20191016125749.0Z
dSCorePropagationData: 16010101000000.0Z
lastLogonTimestamp: 132175020376094249
mail: flavien@ad.lan

# search reference
ref: ldap://ForestDnsZones.ad.lan/DC=ForestDnsZones,DC=ad,DC=lan

# search reference
ref: ldap://DomainDnsZones.ad.lan/DC=DomainDnsZones,DC=ad,DC=lan

# search reference
ref: ldap://ad.lan/CN=Configuration,DC=ad,DC=lan

# search result
search: 2
result: 0 Success

# numResponses: 5
# numEntries: 1
# numReferences: 3

And the docker log returns when trying to connect to the flavian or flavien@ad.lan account are:

Nov 17 11:12:09 1f8e63c913db dovecot: auth: ldap(flavien@ad.lan,172.18.0.1,<AVTq5oiX1ICsEgAB>): unknown user (SHA1 of given password: *****)
Nov 17 11:12:11 1f8e63c913db dovecot: imap-login: Disconnected (auth failed, 1 attempts in 2 secs): user=<flavien@ad.lan>, method=PLAIN, rip=172.18.0.1, lip=172.18.0.6, session=<AVTq5oiX1ICsEgAB>
Nov 17 11:12:41 1f8e63c913db dovecot: auth: ldap(flavien,172.18.0.1,<tsze6IiX4oCsEgAB>): unknown user (SHA1 of given password: *****)
Nov 17 11:12:43 1f8e63c913db dovecot: imap-login: Disconnected (auth failed, 1 attempts in 2 secs): user=<flavien>, method=PLAIN, rip=172.18.0.1, lip=172.18.0.6, session=<tsze6IiX4oCsEgAB>

If anyone had any idea what to change in the configuration?


Viewing all articles
Browse latest Browse all 29758

Trending Articles