Implantação de um Sistema de Workgroup Open Source

O objetivo deste documento é ajudar pessoas que, como eu, querem não somente a receita de bolo de como fazer, mas entender o por quê de cada coisa, entender um pouco do por quê e para quê. E é justamente isto que tento fazer neste documento, compilar de forma concisa tudo sobre groupware e correio eletrônico, os conceitos e a instalação. Espero que ajude a muitos como me ajudou.

[ Hits: 118.888 ]

Por: Claudio Rocha de Jesus em 14/01/2008


Configurações



Postfix

É necessário desativar o Sendmail, mesmo que você nunca o tenha instalado procure pelos arquivos citados.

Para desativar o Sendmail renomeie os seguintes arquivos da seguinte forma:

# mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
# mv /usr/sbin/newaliases /usr/sbin/newaliases.OFF
# mv /usr/sbin/mailq /usr/sbin/mailq.OFF


Mude as permissões dos arquivos:

# chmod 755 /usr/sbin/sendmail.OFF
# chmod 755 /usr/sbin/newaliases.OFF
# chmod 755 /usr/sbin/mailq.OFF


O Postfix é composto por dois arquivos principais de configuração o master.cf e o main.cf.

O arquivo master.cf, encontrado em /etc/postfix/master.cf é o responsável por controlar o funcionamento do processo master, que por sua vez é o módulo responsável por controlar todos os outros módulos, seja abrir a porta 25 para o módulo smtpd, seja chamar o qmgr para processar a fila de e-mails. O servidor residente master é o supervisor que mantêm um olho no bem estar do sistema do correio. Este é tipicamente iniciado junto com a inicialização do sistema operacional com o comando postfix start, e mantêm-se funcionando até que o sistema seja parado. O servidor master é responsável por iniciar processos do servidor Postfix, receber e entregar as mensagens, e por reiniciar os servidores que terminam prematuramente por causa de algum problema. Também é responsável para reforçar os limites da contagem do processo do servidor como especificado no arquivo de configuração de master.cf.

O arquivo de configuração main.cf (/etc/postfix/main.cf) especifica um subconjunto muito pequeno de todos os parâmetros (mais de 280 opcões) que controlam a operação do sistema de correio do Postfix. Os parâmetros especificados não explicitamente são deixados em seus valores padrão.

O formato geral do arquivo main.cf é como segue:

Cada linha lógica está no formato "parâmetro = valor". Espaços em branco em torno do "=" são ignorados.

As linhas vazias e linhas somente com espaços em branco são ignoradas, como são as linhas cujo o primeiro caracter é um ` # ' que são linhas de comentário.

Um valor de parâmetro pode consultar outros parâmetros.

As expressões "$$name", "${name}" ou "$(name)" são substituídos recursivamente pelo valor do parâmetro nomeado.

A expressão "${name?value }" expande ao "valor" quando "$$name" não esta vazia. Este formato é suportado na versão 2.2 do Postfix e nas anteriores.

A expressão "${name:value }" expande ao "valor" quando "$$name" está vazia. Este formato é suportado na versão 2.2 do Postfix e nas anteriores.

Quando o mesmo parâmetro é definido múltiplas vezes, somente a última instância será relembrada.

A ordem de definições dos parâmetros de main.cf não importa.

Exemplo de configuração do Postfix para ser um servidor de relay enviando pelo servidor de um provedor externo.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
smtpd_banner = $myhostname ESMTP $ mydomain
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
#Diretorio de fila
queue_directory = /var/spool/postfix
#Diretorio de armazenamento de emails
mail_spool_directory = /var/spool/mail
#Diretorio de Comandos
command_directory = /usr/sbin
#Diretorio do daemon Postfix
daemon_directory = /usr/lib/postfix
#Usuario do Postfix
mail_owner = postfix
#Hostname do servidor
myhostname = xserver.minhaempresa.com.br
#Dominio do servidor
#mydomain = minhaempresa.com.br
# Tamanho maximo da caixa de mensagem (100MB)
mailbox_size_limit = 102400000
#Tamanho maximo da mensagem (2MB)
message_size_limit = 2048000
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
#Grupo do Postfix
setgid_group = postdrop
#Servidor do Provedor Hydranet
relayhost = [200.184.136.76]

Para testar a configuração em uma máquina cliente abra um terminal Telnet acessando a porta 25.

$ telnet 192.168.100.3 25
HELO minhaempresa.com.br # digite para identificar-se ao servidor
MAIL FROM: <sistemas@minhaempresa.com.br> # indicação para quem irá enviar o email
RCPT TO: <superuser@minhaempresa.com.br> # indicação de quem esta enviando
DATA # informando que irá digitar o corpo do email
End data with <CR><LF>.<CR><LF> # mensagem de instrução de como sair
Esta e uma mensagem de teste! # corpo da mensagem (body)
. # use "." para encerrar o corpo do email
Ok: queued as DBE2652004D # confirmação de entrada na fila

Veja no log se a mensagem foi enviada. Utilize o seguinte comando:

# tail -f /var/log/mail.info

Se a mensagem foi enviada então o servidor esta funcionando corretamente caso negativo verifique os logs para obter mais informações sobre o que aconteceu.

1.1 Mailbox ou Maildir

Entrega por Mailbox:

Por padrão o mailbox por usuário é um arquivo no diretório de spool de mensagens do UNIX ou (/var/mail/user/ ou /var/spool/mail/user). A localização pode ser especificada com o parâmetro de configuração mail_spool_directory. Especifique um nome terminando em "/" para compatibilidade com a entrega Maildir do Qmail. Alternativamente, a Mailbox por usuário pode ser um arquivo no diretório home do usuário com um nome especificado através do parâmetro da configuração do home_mailbox. Especifique um nome relativo do caminho.

A entrega por Mailbox pode ser delegada aos transportes alternativos da mensagem especificados no arquivo master.cf. Os parâmetros de configuração mailbox_transport_maps e mailbox_transport especificam um transporte opcional de mensagem que deve ser usado para todos os receptores locais, não obstante se estão encontrados na base de dados do passwd do UNIX. Os parâmetros do fallback_transport_maps e do fallback_transport especificam um transporte opcional da mensagem para os receptores que não são encontrados nas base de dados aliases ou passwd do UNIX.

Entrega por Maildir:

Maildir é uma organização específica de um-arquivo-por-mensagem que foi introduzida com o sistema do Qmail por Daniel Bernstein. Para o Postfix trabalhar entregando no formato maildir-style especifique por exemplo no arquivo main.cf: home_mailbox = Maildir/.

Um caminho relativo que terminar em "/" passa fazer a entrega como maildir. O valor do home_mailbox é adicionado ao caminho do diretório home do usuário. O formato do maildir é suportado também com entrega através dos pseudônimos ou através dos arquivos .forward. Especificam /file/name/ como o destino. O "/" gira sobre a entrega do maildir. Não é necessário criar o diretório Maildir quando a entrega é para um usuáiro local, ou seja, não virtual. O Postfix criará este diretório quando chegar uma mensagem para o usuário no seu diretório home ficando uma estrutura como segue:

/home/user/Maildir/
/home/user/Maildir/cur
/home/user/Maildir/new
/home/user/Maildir/tmp

A mensagem entregue com sucesso fica armazenada no diretório new no formato IddeEntrega.domino.do.Postfix, por exemplo:

1138916114.V806Ib800aM308022.xserver.minhaempresa.com.br

A mensagem pode ser lida com o comando cat.

# cat /home/superuser/Maildir/new/\
1138916114.V806Ib800aM308022.xserver.minhaempresa.com.br


Cyrus IMAP

Para integrar o Postfix com o Cyrus IMAP temos que alterar os seguintes atributos no /etc/postfix/master.cf:

cyrus   unix    -       n       n       -       -       pipe    flags= user=cyrus      argv=/usr/sbin/cyrdeliver -r ${sender} -m ${extension} ${user}

Comente as seguintes linhas caso existam:

#flags=R user=cyrus argv=/usr/lib/cyrus/deliver -e -m ${extension} ${user}
#flags=R user=cyrus argv=/usr/lib/cyrus/deliver -r ${sender} -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# cyrus unix - n n - - pipe
# user=cyrus argv=/usr/lib/cyrus/deliver -e -r ${sender} -m ${extension} ${user}

Descomente ou adicione a seguinte linha em /etc/postfix/main.cf:

mailbox_transport = cyrus

Reinicie o Postfix:

# /etc/init.d/postfix restart

Edite o arquivo /etc/imapd.conf e adicione, altere ou descomente as seguintes linhas:

configdirectory: /var/lib/cyrus
partition-default: /var/spool/cyrus/mail
admins: superuser cyrus
allowanonymouslogin: no
sieveusehomedir: false
sievedir: /var/spool/sieve
sasl_pwcheck_method: saslauthd
sasl_passwd_check: saslauthd

Mais arquivos de configuração

1. Adicione o usuário do Daemon (cyrus) ao grupo mail:

# adduser cyrus mail

2. Configure o SASL para autenticação. Edite o arquivo /etc/default/saslauthd alterando e descomentando as linhas deixando-as da seguinte maneira:

# This needs to be uncommented before saslauthd will be run automatically
START=yes

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="sasldb"

3. Reinicie os serviços:

# /etc/init.d/inetd restart
# /etc/init.d/postfix restart
# /etc/init.d/saslauthd restart
# /etc/init.d/cyrus21 restart


Verifique nos arquivos de log as mensagens geradas para saber se existe algum erro.

# tail /var/log/syslog
# tail /var/log/messages
# tail /var/log/auth.log
# tail /var/log/mail.info
# tail /var/log/mail.err


4. Criando o arquivo sasldb com os usuários cyrus e superuser:

# saslpasswd2 -c superuser

5. Defina uma senha para os usuários cyrus e superuser

# passwd superuser

6. Testando Cyrus IMAP

# su superuser
# imtest -m login -p imap 192.168.100.3


Entre com a sua senha. Se você vir algo como:

S: C01 OK Completed
Please enter your password:

Se der uma mensagem positiva a configuração esta OK. Digite:

. logout

para sair.

7. Criando mailbox no Cyrus:

Para criar mailbox no Cyrus deve-se antes se conectar no servidor:

# cyradm --user superuser --auth login 192.168.100.3

Entre com a senha pré-definida anteriormente.

Você verá o cursor ficar definido como localhost.localdomain> o que indica que você esta conectado no servidor IMAP.

Digitando-se apenas help têm-se uma lista de comandos válidos.

Para verificar se existe alguma mailbox criada digite: lm.

Também pode-se utilizar lm user.*, lm user.%.

Para criar uma mailbox digite: cm user.superuser

O usuário com o qual você acessou deve possuir permissão de criar usuário. Têm que estar definido como usuário administrador no arquivo imapd.conf, também visto anteriormente.

Para apagar uma mailbox digite: dm user.superuser

O Cyrus IMAP armazena as mensagens no diretório /var/spool/cyrus/mail. E dentro deste diretório existe outros de "a" até "z", onde deve-se procurar a mailbox do usuário pela primeira letra do seu nome. Por exemplo a mailbox do usuário superuser esta gravada em /var/spool/cyrus/mail/a/user/superuser.

Pronto o Postfix, IMAP e o SASL estão configurados e funcionando corretamente.

OpenLDAP

Os schemas definem registros ou campos que a base de dados podem manipular. É algo similar as tabelas de banco de dados SQL, só que se chamam schemas. Alguns schemas já vêm ativados por padrão no OpenLDAP que servem para atividades gerais e básicas porém para necessidades mais especificas é necessário criar outro schema ou utilizar algum que satisfaça a necessidade especifica. Para a integração do Postfix utilizamos o schema disponibilizado com o Qmail porque o Postfix não disponibiliza um próprio.

Vá para o diretório /usr/src/.

# cd /usr/src

Baixe o código fonte do Qmail:

# wget http://cr.yp.to/software/qmail-1.03.tar.gz

Descompacte o arquivo de código fonte baixado:

# tar -xvzf qmail-1.03.tar.gz

Baixe o arquivo de patch do Qmail:

# wget http://www.nrg4u.com/qmail/qmail-ldap-1.03-20041201.patch.gz

Extraia o arquivo de patch baixado:

# gunzip qmail-ldap-1.03-20041201.patch.gz

Aplique o patch no código fonte:

# patch -d /usr/src/qmail-1.03 -p1 < qmail-ldap-1.03-20041201.patch

Mova o diretório de patch para o do código fonte:

# mv qmail-1.03 source-ldap-1.03-20041201

Copie o arquivo qmail.schema para o diretório de schemas do ldap /etc/ldap/schema.

# cp /usr/src/source-ldap-1.03-20041201/qmail.schema /etc/ldap/schema/

Edite o arquivo /etc/ldap/slapd.conf adicionando ou alterando conforme o seguinte:

Adicionando o qmail.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/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   objectClass     eq
index   mail,mailAlternateAddress,uid                   eq,sub
index   accountStatus,mailHost,deliveryMode             eq
index   default    sub

Definindo o sufixo da base de dados:

Altere a seguinte linha para ficar parecido com o seguinte:

# The base of your directory in database #1
suffix          "dc=minhaempresa,dc=com,dc=br"

Definindo o administrador da base de dados:

Logo depois da entrada do suffix adicionado acima adicione estas linhas para definir o administrador da base ldap.

rootdn "cn=superuser,dc=minhaempresa,dc=com,dc=br"
rootpw "{MD5}duRjaV84aRFe66iboPLP2w=="

A entrada em rootpw é a senha do administrador encriptada com o hash MD5. Para gerar esta saída utilize o seguinte comando:

# slappasswd -h {MD5} -s senhasecreta

Reinicie o servidor OpenLDAP:

# /etc/init.d/slapd restart

Populando a base de dados:

Agora temos que popular a base, isto é, criar alguma entrada no banco de dados. Crie um arquivo chamado initial.ldif com o conteúdo abaixo, pode cria-lo dentro do diretório /etc/ldap.

# People, minhaempresa.com.br
dn: ou=People,dc=minhaempresa,dc=com,dc=br
objectClass: top
objectClass: organizationalUnit
ou: People
description: Pessoas com contas de email na empresa.

# Groups, minhaempresa.com.br
dn: ou=Groups,dc=minhaempresa,dc=com,dc=br
objectClass: top
objectClass: organizationalUnit
ou: Groups
description: Todos os grupos da empresa.

Execute o seguinte comando:

# ldapadd -D "cn=superuser,dc=minhaempresa,dc=com,dc=br" -W -x -f initial.ldif

Entre com a senha quando solicitado e provavelmente dará uma mensagem positiva podendo continuar.

Para consultar as entradas na base execute:

# ldapsearch -x -b "dc=minhaempresa,dc=com,dc=br" '(objectclass=*)'

Criando usuários na base da dados:

Para criar um usuário de exemplo crie um outro arquivo chamado users.ldif contendo o seguinte conteúdo:

dn: uid=crochadejesus,ou=People,dc=minhaempresa,dc=com,dc=br
uid: crochadejesus
cn: crochadejesus
sn: crochadejesus
mailAlternateAddress: sistemas@minhaempresa.com.br
mail: sistemas@xserver.minhaempresa.com.br
mailHost: xserver.minhaempresa.com.br
userPassword: secretpassword
objectClass: qmailUser
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
description: Usuario

dn: uid=superuser,ou=People,dc=minhaempresa,dc=com,dc=br
uid: superuser
cn: superuser
sn: superuser
mailAlternateAddress: superuser@minhaempresa.com.br
mailAlternateAddress: postmaster@minhaempresa.com.br
mailAlternateAddress: root@minhaempresa.com.br
mail: superuser@xserver.minhaempresa.com.br
mailHost: xserver.minhaempresa.com.br
userPassword: secret
objectClass: qmailUser
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
description: Administrador do Cyrus

Adicione-o a base como anteriormente:

# ldapadd -D "cn=superuser,dc=minhaempresa,dc=com,dc=br" -W -x -f /etc/ldap/users.ldif

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 = localhost
ldapsource_domain = minhaempresa.com.br
ldapsource_search_base = dc=minhaempresa,dc=com,dc=br
ldapsource_query_filter = (&(mail=%s)(objectClass=qmailUser))
ldapsource_result_attribute = mail
ldapsource_bind = no

Integrando o Cyrus IMAP com o LDAP:

Crie a configuração para o saslauthd saber como se conectar no LDAP.

Crie um arquivo chamado saslauthd.conf dentro do diretório /etc/ com o seguinte conteúdo (/etc/saslauthd.conf):

ldap_servers: ldap://127.0.0.1/
ldap_version: 3
ldap_timeout: 10
ldap_time_limit: 10
ldap_cache_ttl: 30
ldap_cache_mem: 32768
ldap_scope: sub
ldap_base_dn: dc=minhaempresa,dc=com,dc=br
ldap_search_base: ou=People,dc=minhaempresa,dc=com,dc=br
ldap_auth_method: bind
ldap_filter: (uid=%u)

Agora configure o saslauthd para usar LDAP como autenticador modificando o arquivo /etc/default/saslauthd:

MECHANISMS="ldap"
PARAMS="-O /etc/saslauthd.conf"

Pode-se especificar mais de um modo de autenticação separando-os com espaço no parâmetro MECHANISMS por exemplo:

MECHANISMS="ldap pam"

A entrada PARAMS= indica o caminho do arquivo de configuração.

Reinicie o saslauthd:

# /etc/init.d/saslauthd restart

Edite o arquivo /etc/imapd.conf alterando as entradas para os seguintes valores:

sasl_mech_list: PLAIN
allowapop: no
allowplaintext: yes
sasl_minimum_layer: 0
sasl_pwcheck_method: saslauthd

Comente a linha:

#sasl_passwd_check: saslauthd

Reinicie o servidor cyrus:

# /etc/init.d/cyrus21 restart

Para testar use o comando abaixo:

# testsaslauthd -u crochadejesus -p secretpassword

Se vir uma mensagem de 0: OK "Success." quer dizer que esta tudo certo com a configuração e o Cyrus SASL esta buscando as informações de usuário na base LDAP.

Pronto! Esta preparada a base para o workgroup.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Análise de produtos
   3. Definições
   4. Produtos
   5. Pacotes utilizados
   6. Configurações
   7. Configurações - continuação
   8. eGroupware
   9. Configuração de contas LDAP
   10. Atualizando a versão do eGroupWare
   11. ClamAV
   12. Patch de auto-create do Cyrus
   13. Bibliografia
Outros artigos deste autor

Git - Ciclo básico de trabalho

Compilando o Mono 2.2 no Ubuntu 8.10

Conversão da base de dados do Cyrus IMAP no Debian

Leitura recomendada

Qmail Auditor, auditoria no servidor Qmail

Servidor de e-mail com OpenBSD - Postfix & Cia

Migração Zimbra com Zextras Migration Tool

Servidor de email com SMTP, POP, IMAP, quota e MySQL

Servidor Postfix Total

  
Comentários
[1] Comentário enviado por lucas.suporte em 14/01/2008 - 14:50h

otimo artigo, com bastante conceitos nos assuntos abordados, apresentando um forma de o leitor expandir o assunto do artigo.
Parabens!
Lucas Rocha
Analista de Rede

[2] Comentário enviado por Sandro Li em 14/01/2008 - 16:45h

Este artigo é excelente. Parabéns Claudio! Para mim, que sou novo aqui, ele está muito bem explicado.

Sandro Lima
Técnico em Informática.

[3] Comentário enviado por rodrigosalmeida em 14/01/2008 - 16:48h

Muito bom artigo...Parabens...

[4] Comentário enviado por jorcelangelo em 15/01/2008 - 14:52h

Uns dos melhores tutoriais que ja encontrei sobre software-livre na internet.
Parabens!!! Voce merece nota 10 !!!

E um detalhe, continue enviando tutoriais. Sempre estaremos agradecidos pelo seu trabalho.

[5] Comentário enviado por rlamana em 17/01/2008 - 11:28h

Muito bacana o artigo.

Vale a pena citar também o Zimbra que é um ótimo suite de colaboração e já esta totalmente traduzido para português brasil!

Abraços


[6] Comentário enviado por jamerson em 30/10/2008 - 17:07h

muito bom artigo, mas vc acha o egroupware melhor q o OpenGroupware?

[7] Comentário enviado por tiagotavares em 14/11/2008 - 12:14h

Respondendo a pergunta do usuário "jamerson", não minha opinião o EGroupware é melhor que o OpenGroupware. Estou migrando do OGO para o EGroupware, e estou gostando muito!

[8] Comentário enviado por dbsechin em 16/04/2009 - 18:29h

Alguem conseguiu integrar o addressbook do egroupware ao LDAP?

não estou conseguindo, se alguem conseguir...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts