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
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.