lunedì 7 maggio 2012

Autenticazione Multi-Tenant Active Directory con Dovecot

Nota: questo articolo è un'estensione di Mailbox Virtuali con Dovecot, Postfix e Active Directory

Se volessimo fare in modo che il nostro server di posta autentichi su diversi domini AD è necessario apportare qualche piccola modifica alla configurazione di Dovecot.
Prendiamo come esempio questa struttura:


Il dominio BRICK.LOCAL ha una relazione di Trust unidirezionale col dominio TRICK.LOCAL. Percé la relazione di trust funzioni c'è bisogno che sui due DNS di AD sia impostato un conditional forward.

Proviamo quindi a risolvere TRICK.LOCAL:

nslookup trick.local
Server:        192.168.98.101
Address:    192.168.98.101#53

Non-authoritative answer:
Name:    trick.local
Address: 192.168.99.101

Nel caso non risolvesse, c'è da controllare la configurazione DNS.

Aggiungiamo nella configurazione di kerberos i parametri relativi al secondo dominio AD, modificando il file /etc/krb5.conf:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log 

[libdefaults]
default_realm = BRICK.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true

[realms]
BRICK.LOCAL = {
kdc = brick.local:88
admin_server = brick.local:749
default_domain = brick.local
}

TRICK.LOCAL = {
kdc = trick.local:88
admin_server = trick.local:749
default_domain = trick.local
}

[domain_realm]
.brick.local = BRICK.LOCAL
brick.local = BRICK.LOCAL
.trick.local = TRICK.LOCAL
trick.local = TRICK.LOCAL

[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}


Dal momento che il setup che andremo a realizzare sarà un setup multidominio, e si configurerà la possibilità di collisione fra nomi utente, è necessario variare il modo in cui Dovecot chiamerà la procedure di login e in cuiandrà a salvare i messaggi su filesystem.

Modifichiamo il file /etc/dovecot/conf.d/10-auth.conf

auth_username_format =%Ln@%Ud

In questo modo Dovecot passerà a PAM il nome utente nella forma utente@DOMINIO, in modo da rispettare la sintassi di kerberos utente@REALM.

Modifichiamo poi i file:

/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/var/vmail/%Ld/%Ln/Maildir

/etc/dovecot/conf.d/auth-system.conf.ext

userdb {
  driver = static
  args = uid=500 gid=500 home=/var/vmail/%Ld/%Lu/Maildir allow_all_users=yes
}

In questo modo i messaggi verranno registrati nella cartella dominio/utente sotto /var/mail.