br-linux

Artigos br-linux.org
Artigos sobre Linux em bom português, originais e com qualidade

Como instalar Qmail+OpenLDAP no Slackware 10
Publicado em 20 de setembro de 2004

Neste artigo o Aldemari Borges( aldemari@gmail.com) nos mostra como instalar o QMAIL com suporte ao LDAP no Linux.
Um excelente artigo bem completo.

Como instalar Qmail+OpenLDAP no Slackware 10

Autor: Aldemari Borges (aldemari@gmail.com) - LPIC-1 (http://www.linuxman.com.br)


Neste artigo, iremos instalar o MTA Qmail com suporte a LDAP no Linux.
Considero esta a melhor solução quando se busca desempenho e balanceamento de cargas em servidores de email.


Algumas vantagens da implementação Qmail + LDAP:

* Alta velocidade das respostas do serviço LDAP
* Flexibilidade de configuração
* Escalabilidade, já que podemos replicar a base do mesmo com facilidade
* Possibilidade de Load Balance
* Há recurso de gerenciamento da base LDAP via WEB
--> http://brlinux.linuxsecurity.com.br/tutoriais/002995.html#002995
* Grandes implementações no Patch do Qmail-ldap


Antes de tudo, precisaremos instalar o Openldap no Linux.


Sugiro que seja seguido o artigo do link abaixo para esta instalação inicial:

--> http://www.dicas-l.unicamp.br/dicas-l/20040713.php

OBs: Só um detalhe. Na hora de compilar o Openldap, deveremos utilizar neste nosso caso de uso a opção abaixo:

env CPPFLAGS="-I/usr/include/db4" LDFLAGS="-L/usr/lib" ./configure --enable-crypt --enable-spasswd


Configurando o Openldap

@@ Edite o ldap.conf conforme abaixo:

# vi /usr/local/etc/openldap/ldap.conf

BASE dc=linuxman,dc=com,dc=br
host 127.0.0.1
ssl yes

--> Salve e saia(:wq)


@@ Altere o slapd.conf conforme abaixo:

# vi /usr/local/etc/openldap/slapd.conf


include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/openldap.schema


#Linha para criação default de senhas do tipo CRYPT
password-hash {CRYPT}
password-crypt-salt-format "$1$.8s"

database bdb
suffix "dc=linuxman,dc=com,dc=br"
rootdn "cn=Manager,dc=linuxman,dc=com,dc=br"
rootpw secret

##################Inicio#############33

***IMPORTANTE - Aconselho alterar a senha secret que está em "Clear Mode", para alguma opção criptografada.
***Pode-se fazer isto usando o comando slappasswd como abaixo:
# slappasswd
New password:
Re-enter new password:
{SSHA}IMzCFI4FW4O6gpe0JVm3/+V/rDMmrjj1
--> copia-se esta linha acima e cola no lugar do secret do arquivo slapd.conf....
ex:
rootpw {SSHA}IMzCFI4FW4O6gpe0JVm3/+V/rDMmrjj1

#################FIM###################

mode 0600
defaultaccess read

index objectClass eq
index mail,mailAlternateAddress,uid eq,sub
index accountStatus,mailHost,deliveryMode eq
index default sub


--> Salve e saia (:wq)

Iniciando o Servidor Ldap

- Se tudo ocorreu bem, deveremos executar a linha abaixo para iniciarmos o servidor LDAP:

# /usr/local/libexec/slapd -4

Call: A Opção '-4' passa ao slapd que ele deverá utilizar a topologia IPv4.

Instalação do Daemontools

- O Daemontools, como o próprio nome sugere. É um conjunto de ferramentas usadas para fazer o controle de serviços do
Linux/Unix.

Passos para Instalação:

# cd /usr/local/
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# wget http://qmail.xnet.com.pl/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# tar -zxvf daemontools-0.76.tar.gz
# cd /usr/local/admin/daemontools-0.76
# patch -p1 <../../daemontools-0.76.errno.patch
# package/install

Pronto...... está pronto o Daemontools.....


Install ucspi-tcp

- O ucspi-tcp, é uma aplicação cliente/servidor, onde se pode definir as políticas de relay, de conexões simultãneas,
entre outros controles de acesso.

# cd /usr/local/
# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# wget http://qmail.xnet.com.pl/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
# tar -zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# patch -p1 <../ucspi-tcp-0.88.errno.patch
# make
# make setup check

Instalação do Patch do Qmail

- O Patch do Qmail, está otimizadamente implementado. Já com a adoção dos principais patches.

# wget http://cr.yp.to/software/qmail-1.03.tar.gz
# wget http://www.nrg4u.com/qmail/qmail-ldap-1.03-20040701.patch.gz
# tar -zxvf qmail-1.03.tar.gz
# gunzip qmail-ldap-1.03-20040701.patch.gz
# cd qmail-1.03
# patch -p1 <../qmail-ldap-1.03-20040701.patch
# cp qmail.schema /usr/local/etc/openldap/schema


*** Adicione /etc/openldap/slapd.conf:

include /etc/openldap/schema/qmail.schema

*** Alterações no Makefile do Qmail-ldap(Patched) ***

######INICIO#####################
LDAPFLAGS=-DEXTERNAL_TODO -DBIGTODO -DDASH_EXT -DDATA_COMPRESS -DALTQUEUE -DQUOTATRASH -DSMTPEXECCHECK

LDAPLIBS=-L/usr/local/lib -lldap -llber

LDAPINCLUDES=-I/usr/local/include

ZLIB=-lz

ZINCLUDES=-I/usr/include

TLS=-DTLS_REMOTE -DTLS_SMTPD

TLSINCLUDES=-I/usr/include/openssl

TLSLIBS=-L/usr/lib -lssl -lcrypto

OPENSSLBIN=/usr/bin/openssl

MNW=-DMAKE_NETSCAPE_WORK

MDIRMAKE=-DAUTOMAILDIRMAKE

HDIRMAKE=-DAUTOHOMEDIRMAKE

SHADOWLIBS=-lcrypt

DEBUG=-DDEBUG

######FIM###################


*** Criação dos usuários de sistema do Qmail(Default)

# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias alias
# useradd -g nofiles -d /var/qmail qmaild
# useradd -g nofiles -d /var/qmail qmaill
# useradd -g nofiles -d /var/qmail qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail qmailq
# useradd -g qmail -d /var/qmail qmailr
# useradd -g qmail -d /var/qmail qmails

*** Instalação do usuário virtual do Qmail-LDAP

- Na implemtação do Qmail-Ldap, precisaremos de um usuário
que tenha permissão sobre as contas dos usuários de email.

# groupadd -g 777 vmail
# useradd -g vmail -d /var/vmail -m -s /sbin/nologin -u 777 vmail
# rm /var/vmail/.screenrc

*** Instalação do Qmail-ldap

# make setup check

Setando os arquivos de Controle do Qmail

########
Nota: Mais informações podem ser obtidas em /var/qmail/doc/QLDAPINSTALL
########

# cd /var/qmail/control

--> Endereço do MX setado em seu DNS
# echo "mail.linuxman.com.br" > /var/qmail/control/me

--> Domínio pelo qual o Qmail aceitará Relay(Pode ser setado no LDAP)
# echo "linuxman.com.br" > /var/qmail/control/rcpthosts

--> Domínio onde ele fará Relay Local(Pode ser setado no LDAP)
# echo "linuxman.com.br" > /var/qmail/control/locals

--> Endereço do servidor de LDAP
# echo "127.0.0.1" > /var/qmail/control/ldapserver

--> A Base DN que será consultada pelo Qmail
# echo "ou=qmail,dc=linuxman,dc=com,dc=br" > /var/qmail/control/ldapbasedn

--> A classe de Objetos a consultar pelo Qmail
# echo "qmailUser" > /var/qmail/control/ldapobjectclass

--> Define se deve verificar o /etc/passwd caso não encontre no LDAP
# echo 0 > /var/qmail/control/ldaplocaldelivery

--> Define o padrão das caixas de mensagens
# echo "./Maildir/" > /var/qmail/control/defaultdelivery

--> Define se irá ser usado em Cluster
# echo 0 > /var/qmail/control/ldapcluster

--> Tamanho máximo da caixa(1MB)
# echo 1000000 > /var/qmail/control/defaultquotasize

--> Número máximo de mensagens por caixa postal
# echo 1000 > /var/qmail/control/defaultquotacount

--> Mensagem caso se passe de 70% da quota
# echo "Contacte o Administrador de Sistemas" > /var/qmail/control/quotawarning

--> Onde se encontrarão as caixas postais dos usuários
# echo /emails > /var/qmail/control/ldapmessagestore

--> Uid do usuário vmail
# echo 777 > /var/qmail/control/ldapuid

--> GID do usuário vmail
# echo 777 > /var/qmail/control/ldapgid

--> Define os Ip's que o qmail-remote pode aceitar requisições
# echo 0.0.0.0 > /var/qmail/control/outgoingip

--> Mensagem que pode ser apresentada em alguns momentos do LDAP
# echo "Contacte o Administrador através do email admin@linuxman.com.br" > /var/qmail/control/custombouncetext

--> Login para conexão no LDAP
# echo "cn=Manager,dc=linuxman,dc=com,dc=br" > /var/qmail/control/ldaplogin

--> Senha do LDAP server(Clear Mode)
# echo secret > /var/qmail/control/ldappassword ; chmod 600 /var/qmail/control/ldappassword


Criação do arquivo rc

# vi /var/qmail/rc

##### INICIO ####
#!/bin/sh
# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"
####FIM######

--> Deixemos o arquivo executável

# chmod +x /var/qmail/rc


Criação do dirmaker

# vi /var/qmail/bin/dirmaker.sh

####INICIO#########################
#!/bin/sh
MAILDIRMAKE=/usr/lib/courier-imap/bin/maildirmake
/bin/mkdir -m 0700 -p $1
$MAILDIRMAKE $1/Maildir
for i in Trash Sent; do
$MAILDIRMAKE -f $i $1/Maildir
done
#################FIM##################

OBS: Iremos ainda instalar o Courier-imap para o script acima ser válido.


Instalando o qmail-conf

- O qmail-conf é um aplicativo muito facilitador em se falando de criar os arquivos necessários para serem
executados pelo daemontools.

Temos um ótimo tutorial no site oficial do projeto:

http://www.din.or.jp/~ushijima/qmail-conf/install.html

Farei o passo a passo, pois irá dar um erro na hora da instalação, se for seguido fielmente
como está no site acima.

Passos:

# cd /usr/local
# wget http://www.din.or.jp/~ushijima/qmail-conf/qmail-conf-0.60.tar.gz
# wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
# wget http://qmail.xnet.com.pl/moni.csi.hu/pub/glibc-2.3.1/djbdns-1.05.errno.patch
# tar -zxvf djbdns-1.05.tar.gz
# cd djbdns-1.05
# patch -p1 <../djbdns-1.05.errno.patch
# cd ../
# tar -xzvf qmail-conf-0.60.tar.gz
# cd qmail-conf-0.60
# make -f Makefile.ini djbdns=/usr/local/djbdns-1.05
# make
# make setup check
# ln -s /var/qmail/bin/qmail-*-conf /usr/sbin


Criando e Executando os arquivos de start e log do Qmail

# /var/qmail/bin/qmail-delivery-conf qmaill /var/qmail/service/qmail
# ln -s /var/qmail/service/qmail /service
# svc -u /service/qmail

--> Através de um: 'ps aux', é possível visualizar os processos do qmail com seus respectivos users.

OBS: Ainda não irá funcionar a parte de Sockets do Qmail. Pois só os processos internos de delivery que estão ativos.
Precisamos ativar agora o controle de requisições SMTP, que será gerido através do ucspi-tcp.

Criando e Executando os arquivos de inicialização do Soacket SMTP

# /var/qmail/bin/qmail-smtpd-conf qmaild qmaill /var/qmail/service/smtpd
# ln -s /var/qmail/service/smtpd /service
# svc -u /service/smtp


Definindo o Relay permitido pelo SMTP

# cd /service/smtpd/

# vi tcp
###INICIO###
127.:allow,RELAYCLIENT=""
10.4.32.:allow,RELAYCLIENT=""
:allow
###FIM###

# make

--> Pronto.....Apenas o localhost e a classe 10.4.32.0/24 poderão acessar.


Populando a base LDAP

-Criemos o arquivo TOP da nossa árvore LDAP

# vi qmail_top.ldif

####INICIO#####
# Base Qmail TOP
dn: dc=linuxman,dc=com,dc=br
objectclass: dcObject
objectclass: organization
o: Linuxman Corporation
dc: linuxman
####FIM######

# vi qmail_ou.ldif

#####INICIO#####
#BASE OU do LDAP/QMAIL
dn: ou=qmail,dc=linuxman,dc=com,dc=br
ou: qmail
objectclass: top
objectclass: organizationalUnit
#####FIM#######

# vi qmail_users.ldif

####INICIO#######
# Base de users
dn: cn=Admin,ou=qmail,dc=linuxman,dc=com,dc=br
cn: Admin
ou: qmail
sn: Admin
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: qmailUser
mail: admin@linuxman.com.br
mailHost: mail.linuxman.com.br
mailQuotaSize: 0
mailQuotaCount: 0
uid: admin
accountStatus: active
userPassword: {MD5}HcOEp4BZTNt+KpBFQckxLQ==
mailMessageStore: /emails/admin
mailAlternateAddress: admin@linuxman.com.br
mailAlternateAddress: postmaster@linuxman.com.br
mailAlternateAddress: root@linuxman.com.br
############FIM################

Adicionando os dados na base LDAP


# ldapadd -x -D "cn=Manager,dc=linuxman,dc=com,dc=br" -W -f qmail_top.ldif

# ldapadd -x -D "cn=Manager,dc=linuxman,dc=com,dc=br" -W -f qmail_ou.ldif

# ldapadd -x -D "cn=Manager,dc=linuxman,dc=com,dc=br" -W -f qmail_users.ldif

OBS: Neste nosso caso, definimos a senha para 'secret'

OBS2: Execute:

# mkdir /emails
# chown vmail.vmail /emails

########################################################################################################################
DICA: Você pode instalar o PHPLDAPADIN, que é um software via web, onde se pode administrar com facilidade,
funcionalidades do OpenLDAP.
Pode-se seguir o link abaixo para a instalação no Slackware 10.

http://brlinux.linuxsecurity.com.br/tutoriais/002995.html
########################################################################################################################


Consultando a base LDAP

# ldapsearch -x -b 'dc=linuxman,dc=com,dc=br' '(ou=qmail)'

--> Você verá o retorno, com os dados enviados anteriormente.


Consultando a base LDAP através do Qmail

# /var/qmail/bin/qmail-ldaplookup -m admin@linuxman.com.br

--> Serão retornados os valores referentes ao usuário solicitado portador do mailaddress consultado.


Instalando o Courier IMAP

OBS: deve ser compilado em modo usuário e apenas instado como root.

$ cd /tmp
$ wget http://ovh.dl.sourceforge.net/sourceforge/courier/courier-imap-3.0.7.tar.bz2
$ tar -jxvf courier-imap-3.0.7.tar.bz2
$ ./configure
$ make
$ make check

$ su root
# make install
# make install-configure


Configurando o Courier-IMAP para autenticar no LDAP

# vi /usr/lib/courier-imap/etc/authdaemonrc

-Alterar apenas as seguintes linhas para ficar como abaixo:

########INICIO##########
authmodulelist="authldap"
authmodulelistorig="authldap"
#######FIM##############


# vi /usr/lib/courier-imap/etc/authldaprc

-Alterar apenas as seguintes linhas para ficar como abaixo:

########INICIO##########
LDAP_SERVER localhost
LDAP_BASEDN ou=qmail,dc=linuxman,dc=com,dc=br
LDAP_BINDDN cn=Manager,dc=linuxman,dc=com,dc=br
LDAP_BINDPW secret
LDAP_DOMAIN linuxman.com.br
LDAP_GLOB_UID vmail
LDAP_GLOB_GID vmail
LDAP_HOMEDIR mailMessageStore
LDAP_MAILDIR mailMessageStore
#LDAP_CLEARPW clearPassword (Comente esta linha)
#LDAP_MAILDIR mailbox (Comente esta linha também)
#######FIM##############

# /usr/lib/courier-imap/libexec/pop3d.rc start
# /usr/lib/courier-imap/libexec/imapd.rc start


Join Now !!!


Autor: Aldemari Borges - LPIC-1 (www.linuxman.com.br)
Email: aldemari@gmail.com

Postado por fuji em setembro 20, 2004 12:36 PM

Comentários para "Como instalar Qmail+OpenLDAP no Slackware 10"

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)

Envie seu comentário









Lembrar as informações pessoais?


Atenção: Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum, onde mais pessoas estarão disponíveis para respondê-lo..






Nota: os comentários pertencem a seus respectivos autores e são de responsabilidade de quem os postou. O restante desta nota está disponível sob a licença GNU FDL, exceto se explicitamente declarado em contrário.