zimbra collaboration suite 5 0 no debian 4 autenticando no active directory artigo

16
Zimbra Collaboration Suite 5.0 no Debian 4 autenticando no Active directory Autor: Humberto Luiz Lino Bomfim <hlbomfim at gmail.com> Data: 16/06/2008 Ambiente Foi escolhido o Debian pela facilidade de atualização da distro e pelo Zimbra ter um arquivo .tgz com os pacotes necessários do Debian para sua instalação. Por se tratar de um servidor de e-mail público com acesso à rede interna com o servidor Windows 2003, resolvi que o servidor teria 2 placas de rede com ips públicos e privados. Para quem quiser trabalhar com DMZ e firewall, libere a porta 389 /tcp e udp para acesso do Linux público ao AD. Os ips aqui são fictícios. Win2003: Ip: 10.10.0.1/24 Domínio: exemplo.com.br Nome: dc Debian 4.0/Zimbra: eth0: 200.200.200.200 /24 eth1: 10.10.0.2/24 Domínio: exemplo.com.br Nome: debian2 Instalação Não vou fazer aqui uma descrição de instalação nem do Windows 2003 nem do Debian 4. Isso tem aos montes na Internet como fazer. Basta apenas dizer que para a instalação do Debian, o ambiente básico já é o suficiente. Depois de instalado o Debian, é necessário instalar outros pacotes para o Zimbra

Upload: samuel-neves

Post on 29-Nov-2014

330 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Zimbra Collaboration Suite 5.0 no Debian 4 autenticando noActive directory

Autor: Humberto Luiz Lino Bomfim <hlbomfim at gmail.com>Data: 16/06/2008

Ambiente

Foi escolhido o Debian pela facilidade de atualização da distro e pelo Zimbra játer um arquivo .tgz com os pacotes necessários do Debian para sua instalação.

Por se tratar de um servidor de e-mail público com acesso à rede interna com oservidor Windows 2003, resolvi que o servidor teria 2 placas de rede com ipspúblicos e privados. Para quem quiser trabalhar com DMZ e firewall, libere aporta 389 /tcp e udp para acesso do Linux público ao AD.

Os ips aqui são fictícios.

Win2003:

Ip: 10.10.0.1/24Domínio: exemplo.com.brNome: dc

Debian 4.0/Zimbra:

eth0: 200.200.200.200 /24eth1: 10.10.0.2/24Domínio: exemplo.com.brNome: debian2

Instalação

Não vou fazer aqui uma descrição de instalação nem do Windows 2003 nem doDebian 4. Isso tem aos montes na Internet como fazer.

Basta apenas dizer que para a instalação do Debian, o ambiente básico já é osuficiente.

Depois de instalado o Debian, é necessário instalar outros pacotes para o Zimbra

Page 2: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

e retirar o pacote exim4. Caso contrário, este dará conflito com o Postfix, que jávem no Zimbra.

# apt-get remove exim4

# apt-get install sudo fetchmail openssl libxml2 libexpat1 libgmp3c2libltdl3

Obtendo e instalando o Zimbra

O Zimbra é um pacote de serviços de e-mails já pré-definidos, distribuído pelaZimbra Inc., que é da Yahoo. A edição instalada é a Open Source (claro!) e podeser adquirida pelo endereço:

http://www.zimbra.com/community/downloads.html

No meu caso baixei o "Zimbra Collaboration Suite 5.0 (5.0.6) GA Release" para oDebian 4 pelo comando:

# wget http://files.zimbra.com/downloads/5.0.6_GA/\zcs-5.0.6_GA_2313.DEBIAN4.0.20080522112011.tgz

e descompactei:

# tar xvzf zcs-5.0.6_GA_2313.DEBIAN4.0.20080522112011.tgz

Configuração básica do Zimbra

Para finalizar a instalação e iniciar a configuração, são necessários pelo menos5GB de espaço livre no /opt.

Uma coisa muito importante na hora de instalar o Zimbra é o DNS.

O DNS deve estar configurado com o A ou CNAME e o MX diretamente para oservidor. No nosso caso: debian2.exemplo.com.br. Ele faz todas essasverificações antes de instalar conforme abaixo. Caso ele encontre erro de DNS,ele não o impedirá de instalar, mas é aconselhável acertar.

Instalando e configurando:

# cd zcs-5.0.6_GA_2313.debian4.0.20080522112011#./install.shOperations logged to /tmp/install.log.2537Checking for existing installation...zimbra-ldap...NOT FOUND

Page 3: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

zimbra-logger...NOT FOUNDzimbra-mta...NOT FOUNDzimbra-snmp...NOT FOUNDzimbra-store...NOT FOUNDzimbra-apache...NOT FOUNDzimbra-spell...NOT FOUNDzimbra-proxy...NOT FOUNDzimbra-archiving...NOT FOUNDzimbra-cluster...NOT FOUNDzimbra-core...NOT FOUND

PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE.ZIMBRA, INC. ("ZIMBRA") WILL ONLY LICENSE THIS SOFTWARE TO YOU IFYOUFIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING ORINSTALLINGTHE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BEBOUND BYTHIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THISAGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT.

License Terms for the Zimbra Collaboration Suite:http://www.zimbra.com/license/zimbra_public_eula_2.1.html

Press Return to continue

Checking for prerequisites... NPTL...FOUND sudo...FOUND sudo-1.6.8p12-4 libidn11...FOUND libidn11-0.6.5-1 fetchmail...FOUND fetchmail-6.3.6-1etch1 libpcre3...FOUND libpcre3-6.7+7.4-3 libgmp3c2...FOUND libgmp3c2-2:4.2.1+dfsg-4 libexpat1...FOUND libexpat1-1.95.8-3.4 libxml2...FOUND libxml2-2.6.27.dfsg-2 libstdc++6...FOUND libstdc++6-4.1.1-21 openssl...FOUND openssl-0.9.8c-4etch3 libltdl3...FOUND libltdl3-1.5.22-4Prerequisite check complete.Checking for standard system perl... perl-5.8.8...FOUND standard system perl-5.8.8

Checking for installable packages

Found zimbra-coreFound zimbra-ldapFound zimbra-loggerFound zimbra-mta

Page 4: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Found zimbra-snmpFound zimbra-storeFound zimbra-apacheFound zimbra-spellFound zimbra-proxy

Select the packages to install

Install zimbra-ldap [Y]

Install zimbra-logger [Y]

Install zimbra-mta [Y]

Install zimbra-snmp [Y]

Install zimbra-store [Y]

Install zimbra-apache [Y]

Install zimbra-spell [Y]

Install zimbra-proxy [N]Checking required space for zimbra-corechecking space for zimbra-store

Installing: zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-snmp zimbra-store zimbra-apache zimbra-spell

The system will be modified. Continue? [N] Y

Removing /opt/zimbraInstalling packages

zimbra-core......zimbra-core_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-ldap......zimbra-ldap_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-logger......zimbra-logger_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-mta......zimbra-mta_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-snmp......zimbra-snmp_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-store......zimbra-store_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-apache......zimbra-apache_5.0.6_GA_2313.debian4.0_i386.deb...done zimbra-spell......zimbra-spell_5.0.6_GA_2313.debian4.0_i386.deb...done

Page 5: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Operations logged to /tmp/zmsetup.01001900-0000138980876.logSetting defaults...No results returned for A lookup of debian22.exemplo.com.brChecked nameservers: 10.10.0.1

DNS ERROR resolving debian2.exemplo.com.brIt is suggested that the hostname be resolveable via DNSChange hostname [Yes] No

DNS ERROR resolving MX for debian2.exemplo.com.brIt is suggested that the domain name have an MX record configured in DNSChange domain name? [Yes] No

done.Checking for port conflicts

Main menu

1) Common Configuration: 2) zimbra-ldap: Enabled 3) zimbra-store: Enabled +Create Admin User: yes +Admin user to create: [email protected]******* +Admin Password UNSET +Enable automated spam training: yes +Spam training user: [email protected] +Non-spam(Ham) traininguser: [email protected] +Global Documents Account: [email protected] +SMTP host: debian2.exemplo.com.br +Web server HTTP port: 80 +Web server HTTPS port: 443 +Web server mode: http +IMAP server port: 143 +IMAP server SSL port: 993 +POP server port: 110 +POP server SSL port: 995 +Use spell check server: yes +Spell server URL: http://debian2.exemplo.com.br:7780/aspell.php

4) zimbra-mta: Enabled 5) zimbra-snmp: Enabled 6) zimbra-logger: Enabled 7) zimbra-spell: Enabled 8) Default Class of Service Configuration: r) Start servers after configuration yes

Page 6: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

s) Save config to file x) Expand menu q) Quit

Address unconfigured (**) items (? - help)

Nessa parte é necessário definir a senha do usuário administrador do Zimbra.Tecle 3 <enter> e 4 <enter>. Digite a senha e em seguida digite r <enter> a<enter> <enter> <enter> Yes <enter> e está terminada a configuração básica.

Deixa ele trabalhar na instalação de tudo.

Testando o básico e fazendo a configuração avançada

Testando o Webmail:

http://10.10.0.2

No teste aqui utilizado, como o Debian foi instalado com a linguagem padrãopt_BR (português - Brasil), o Zimbra já selecionou essa linguagem como padrão.

O logon pode ser feito utilizando o usuário/senha de administração definido naetapa anterior.

Page 7: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Visto como está o webmail, agora será feita a configuração avançada do Zimbrapara buscar do Windows 2003. Para isso será utilizado a interface deadministração do Zimbra:

https://10.10.0.2:7071 (note que é https)

Com o usuário/senha testado anteriormente, será feito o logon aqui e serámostrado a tela principal com os Status do Zimbra.

Ao clicar na opção domínios, pode ser verificado que o Zimbra cria um domíniocom o nome do servidor já incluso nele. Não se deve apagar esse domínio porqueas contas de administração estão criadas dentro dele (clique na opção Contasque será verificado isso).

Page 8: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Como esse domínio com o nome debian2 não interessa, cria-se outro domínio.

Na opção de Domínio do lado esquerdo, cria-se um novo domínioexemplo.com.br:

Page 9: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

A partir daqui é que será feita a autenticação no Win2003:

Page 10: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Nesta tela é necessário um login/senha para teste no Win2003:

Agora clique no item Configurações Gerais do lado esquerdo e selecione odomínio padrão exemplo.com.br.

Criando as contas na base LDAP do Zimbra

É importante elencar que o apesar de autenticar no Active Directory, énecessário criar as contas na base LDAP do Zimbra. Para isso foi garimpado nanet um script em python que fizesse tal tarefa. Este foi encontrado nahttp://www.edugeek.net com alguns problemas.

Page 11: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

# apt-get install python-ldap

Foi necessário criar uma conta no Active Directory para criar os usuários lá.

zimbra_cs / activezimbra

Corrigido, segue este abaixo:

#!/usr/bin/python# This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; GPLv3## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## To obtain a copy of the GNU General Public License, write to the FreeSoftware Foundation,# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA#

# Variables can be changed here:banned = 'CN=users,DC=exemplo,DC=com, DC=br'# an OU for banned usersscope = 'CN=users,DC=exemplo,DC=com, DC=br'#the search scopedomain = "exemplo.com.br" # "example.com"ldapserver="dc"#ldap serverport="389"#ldap port (389 default)emaildomain="exemplo.com.br"#the email domainldapbinddomain="exemplo.com.br"#the domain of the ldap bind accountldapbind="zimbra_cs"#the account name of the account to bind to ldapldappassword="activezimbra"#the ldap passwordpathtozmprov="/opt/zimbra/bin/zmprov"#--------------------------------------------------

import ldap, string, os, time, sys#output the list of all accounts from zmprov gaa (get all accounts)f = os.popen(pathtozmprov +' gaa')zmprovgaa= []

Page 12: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

zmprovgaa = f.readlines()l=ldap.initialize("ldap://"+ldapserver+"."+domain+":"+port)l.simple_bind_s('cn=ZimbraSuite,cn=Users,dc=campusi,dc=unig,dc=br',ldappassword) #bind to the ldapserver using name/passwordtry: res = l.search_s(scope, ldap.SCOPE_SUBTREE,"(&(ObjectCategory=user) (userAccountControl=512))", ['sAMAccountName','givenName','sn','memberOf','displayName'])#userAccountControl 512 = normal , 514 = disabled account for (dn, vals) in res: accountname = vals['sAMAccountName'][0].lower() displayname = vals['displayName'][0] displayname = displayname.replace("'",'' ) displayname = displayname.replace('[','' ) displayname = displayname.replace(']','' ) try: sirname = vals['sn'][0].lower() except: sirname = vals['sAMAccountName'][0].lower() try: givenname = vals['givenName'][0] except: givenname = vals['sAMAccountName'][0].lower() try: groups = vals['memberOf'] except: groups = 'none' initial = givenname[:1].upper() name = initial + "." + sirname accountname = accountname + "@" + emaildomain password = " \'\' " sys.stdout.flush() # if the account doesn't exist in the output of zmprov gaa createthe account if accountname +"\n" not in zmprovgaa: print accountname," exists in active directory but not in zimbra, theaccount is being created ", displayname, "\n" os.system(pathtozmprov +' ca %s %s displayName \"%s \"'% (accountname,password,displayname)) # if the account is in the group 'banned' check to see if account alreadylocked if banned in groups: zmprovga = os.popen(pathtozmprov + ' ga %s' % (accountname)) ga= [] ga = zmprovga.readlines() locked = "zimbraAccountStatus: locked\n" if locked not in ga: #if account not locked then lock it

Page 13: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

print accountname, " has been BANNED from the internet. Theemail account has been locked " os.system(pathtozmprov + ' ma %s zimbraAccountStatus locked' %(accountname)) # time.sleep(1) else: print accountname, " has a locked email account because they are in the'banned' group" #set any accounts to 'active' if they are not in the banned group and theaccount is currently locked else: zmprovga = os.popen(pathtozmprov + ' ga %s' % (accountname)) ga= [] ga = zmprovga.readlines() locked = "zimbraAccountStatus: locked\n" if locked in ga: os.system(pathtozmprov + ' ma %s zimbraAccountStatus active'% (accountname)) time.sleep(1) print accountname, " is no longer in the 'banned' group, therefore theaccount has been activated"except ldap.LDAPError, error_message: print error_messagel.unbind_s()

Eu o gravei com o nome de /usr/local/sbin/zimbra.py e o coloquei no crontabpara ser executado a cada hora.

Terminado de rodar o script, verifique na opção de Contas do Console deAdministração se as contas estão criadas corretamente.

Testando o Webmail

Agora pode ser testado o webmail com alguma conta do Active Directory.

No browser digite:

http://debian2.exemplo.com.br

Page 14: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Caso na tela de Configurações Gerais tenha colocado o domínio padrão, o queautentica no AD, basta apenas colocar o usuário e a senha. Senão é necessáriocolocar o usuário@dominio /senha para logon.

Se funcionou é correr pra galera, senão verifique os passos novamente.

Conclusão e observações finais

Não necessariamente o domínio do Zimbra tem de ser o mesmo do ActiveDirectory.

No caso, de utilizar um domínio diferente, tem fazer as alterações na hora decriar o domínio e no script de criação de contas do zimbra. Exemplo:

Domínio do ad: tabajara.com.brDomínio do Zimbra: exemplo.com.br

1. Na hora que está criando o domínio, quando se coloca o endereço do servidorexterno, é necessário colocar o domínio correto do servidor:

Page 15: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

No caso acima, deve-se mudar de exemplo.com.br para tabajara.com.br. Asoutras instruções permanecem.

2. No script zimbra.py altere as linhas:

banned = 'CN=users,DC=tabajara,DC=com, DC=br'scope = 'CN=users,DC=tabajara,DC=com, DC=br'domain = 'tabajara.com.br'ldapbinddomain="tabajara.com.br"

3. Com essas alterações, todos os emails @exemplo.com.br serão validados nodomínio @tabajara.com.br.

Existe uma maneira de autocompletar os endereços com os usuários do ADquando utilizado o webmail. Para isso é utilizada a opção "Lista Global deEndereços" na configuração do domínio.

Quando criando o domínio, na tela "Modo de Lista Global de Endereços",selecione "Externo" ou "Ambos".

Tendo selecionado ambos, tem uma configuração conforme a figura abaixo:

Page 16: Zimbra Collaboration Suite 5 0 No Debian 4 Autenticando No Active Directory Artigo

Mas a partir do próximo passo, tem uma configuração de GAL que eu nãoconsegui acertar como fazer. Se alguém se aventurar, posta aí que serábem-vindo.

** Nota importante **

Caso tenha definido o domínio padrão diferente do domínio de instalação (nonosso caso exemplo.com.br é diferente de debian2.exemplo.com.br), quando forusar a suíte de configuração deve-se usar o nome de usuário com o domínio deinstalação ([email protected] - no nosso caso), porque senão elevai procurar o usuário no domínio corrente.

Obrigado a todos.

http://www.vivaolinux.com.br/artigo/Zimbra-Collaboration-Suite-5.0-no-Debian-4-autenticando-no-Active-directory

Voltar para o site