Antes de configurar as conexões do LDAP no eGroupware siga as instruções no arquivo Readme LDAP para a versão 2.x do OpenLDAP.
Os seguintes arquivos são utilizados com o OpenLDAP 2.x:
- phpgwaccount.schema: Define o objectclass phpgwAccount e seus atributos;
- phpgwcontact.schema: Define o objectclass phpgwContact e seus atributos.
Copie os dois arquivos de schema que estão no diretório /var/www/egroupware/phpgwapi/doc/ldap/ para o diretório de schema do OpenLDAP. No Debian está em /etc/ldap/schema e adicione no arquivo /etc/ldap/slapd.conf uma linha de include para cada arquivo de schema. Da seguinte forma:
include /etc/openldap/schema/phpgwaccount.schema
include /etc/openldap/schema/phpgwcontact.schema
É necessário ajustar também os índices para o seguinte:
index default eq
index objectClass eq
index phpgwContactOwner pres,eq,sub
index uidNumber pres,eq
index mail,mailAlternateAddress,uid eq,sub
index accountStatus,mailHost,deliveryMode eq
Feito isso, prossiga:
Modificar uma base de dados LDAP existente para usar com eGroupWare (para uma nova instalação usando contas LDAP).
Importar contas LDAP para as tabelas do eGroupWare (para uma nova instalação usando contas no SQL).
Exportar contas eGroupWare do SQL para o LDAP.
Configurar contas de demonstração no LDAP.
Isto irá criar 1 conta de administrador e 3 contas demo.
Os usuários/senhas são: demo/guest, demo2/guest and demo3/guest.
Remover todas as contas SQL, grupos, regras de acesso e preferências existentes? (Normalmente isso não é necessário - seus dados serão perdidos)
Detalhes da conta do Administrador
usuário para administração
Primeiro nome do Administrador
Último nome do Administrador
Senha do Administrador
Digite novamente a senha
Criar contas de Demonstração
Configurando manualmente o acesso ao Postgresql
Certifique-se que pode alcançar a base de dados do postgres.
No /etc/postgresql/postgresql.conf defina 'tcpip_socket = true' caso não esteja, removendo o carcater "#" do inicio da linha.
Verifique se o método de acesso apropriado é permitido dentro de /etc/postgresql/pg_hba.conf:
Comente as linhas acima e deixe-as assim:
TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all postgres ident sameuser
local egroupware all trust
local all all ident sameuser
host all all 127.0.0.1 255.255.255.255 ident sameuser
host egroupware all 127.0.0.1 255.255.255.255 md5
host all all 0.0.0.0 0.0.0.0 reject
host all all 0.0.0.0 255.255.255.255 reject
Reinicie o servidor de banco de dados:
# /etc/init.d/postgresql restart
Para testar se a conexão esta acontecendo corretamente execute:
# su postgres
$ psql -h localhost template1
Exibindo a seguinte mensagem esta tudo correto:
Bem-vindo ao psql 7.4.7, o terminal iterativo do PostgreSQL.
Digite: \copyright para mostrar termos de distribuição
\h para ajuda com comandos SQL
\? para ajuda com comandos internos
\g ou terminar com ponto-e-vírgula para executar a consulta
\q para sair
template1=#
Para sair do terminal do postgres digite \q e pressione enter.
Agora crie um usuário que possua privilégios de acessar o banco de dados do eGroupware. Siga os passos abaixo:
$ createuser egroupware -P
Entre com a senha duas vezes
Enter password for new user:
Enter it again:
Responda "Y" para a próxima pergunta.
Shall the new user be allowed to create databases? (y/n) y
Responda "N" para a próxima pergunta.
Shall the new user be allowed to create more new users? (y/n) n
Se exibir a mensagem abaixo o usuário foi criado corretamente.
CREATE USER
Crie uma base de dados:
$ createdb -U egroupware egroupwaredbname
CREATE DATABASE
Adicionar domínio no arquivo header.inc.php
Nesta tela é feito primeiro uma análise da configuração do php, informando por exemplo qual a versão do php utilizada, se existe suporte a banco de dados e qual.
Mudanças necessárias em outros arquivos de configuração:
Integrando o Postfix com o LDAP:
Abra o arquivo /etc/postfix/main.cf acrescentando as seguintes linhas:
# Integracao com OpenLDAP
virtual_maps = ldap:ldapsource
ldapsource_server_host = 192.168.100.3
ldapsource_domain = minhaempresa.com.br
ldapsource_search_base = dc=minhaempresa,dc=com,dc=br
ldapsource_query_filter = (&(mail=%s)(objectClass=phpgwAccount))
ldapsource_result_filter = %u
ldapsource_result_attribute = uid
ldapsource_scope = sub
ldapsource_bind = no
Adicionando os schema:
Depois das outras linhas de include que já existem inclua uma para o schema do qmail, conforme mostrado abaixo:
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/phpgwaccount.schema
include /etc/ldap/schema/phpgwcontact.schema
include /etc/ldap/schema/qmail.schema
Aqui a ordem das entradas faz diferença.
Indexando a base de dados:
Para fazer buscas mais eficientes na base de dados, podemos indexar a base com certos campos. Para isso inclua o seguinte no arquivo slapd.conf:
# Indexing options for database #1
index default eq,sub
index objectClass eq
index phpgwContactOwner pres,eq,sub
index mail,mailAlternateAddress,uid eq,sub
index accountStatus,mailHost,deliveryMode eq
index uidNumber pres,eq