Servidor de e-mails vinculado ao AD (Postfix + Courier)

Cenário

Apresento aqui um exemplo do cenário que encontrei quando houve a solicitação da criação do servidor de e-mail:

Servidor 1:

  • Windows 2003 ou 2008
  • Controlador de Domínio (AD)
  • Servidor DNS
  • Host: wolverine
  • IP: 192.168.1.203
  • Domínio: www.xmen.com.br

Obs.: não entrarei em detalhes da instalação do Windows ou AD.

Servidor 2:

  • Debian Squeeze
  • Instalação dos pacotes básicos
  • host: storm
  • IP: 192.168.1.200

Obs.: não entrarei em detalhes da instalação do Debian.

Instalação do Samba + Kerberos

O primeiro passo da preparação do servidor de e-mail é a instalação do Samba + Kerberos. E com estes pacotes teremos acesso aos usuários e grupos do AD.

Os pacotes necessários, são:

  • krb5-user;
  • samba;
  • samba-common;
  • winbind;
  • ntpdate.

Então, para a instalação executamos o seguinte comando:

# aptitude install krb5-user samba samba-common winbind ntpdate

Todos os pacotes serão automaticamente instalados e devemos, neste passo, selecionar a opção recomendada pelo instalador, caso seja solicitado.

Após a instalação iniciaremos as configurações, começando pelo arquivo /etc/hosts, onde faremos a indicação dos endereços de algumas máquinas importantes na nossa rede.

Execute e comando:

# vi /etc/hosts

Adicione as linhas abaixo ao final do arquivo:

192.168.1.203  wolverine.xmen.com.br  wolverine
192.168.1.200  storm.xmen.com.br        storm

Seguindo as configurações editaremos o arquivo /etc/resolv.conf. Nele, indicaremos qual será o nosso servidor DNS (o mesmo servidor do AD).

Vamos editar o arquivo “resolv.conf” com os dados do domínio e o DNS do AD. Execute e comando:

# vi /etc/resolv.conf

Substitua todo o conteúdo do arquivo pelas linhas abaixo (lembrando de substituir os nomes para sua realidade):

domain xmen.com.br
search xmen.com.br
nameserver 192.168.1.203

Configuração do Kerberos

Kerberos é o protocolo que faz com que as informações trafeguem com segurança pela rede. Ele requer uma configuração específica para o servidor que controla o domínio.

Vamos editar o arquivo /etc/krb5.conf com os dados da nossa rede. O que está em maiúsculo deve permanecer em maiúsculo.

Execute e comando:

# vi /etc/krb5.conf

Substitua todo o conteúdo do arquivo pelas linhas abaixo (lembrando de substituir os nomes para sua realidade):

[libdefaults]
default_realm = XMEN.COM.BR
dns_lookup_realm= true
dns_lookup_kdc= true
ticket_lifetime= 24h
forwardable= yes

krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true

[realms]
XMEN.COM.BR= {
kdc= wolverine.xmen.com.br
admin_server= wolverine.xmen.com.br
default_domain= XMEN.COM.BR
kpasswd_server= XMEN.COM.BR
}

[domain_realm]
.xmen.com.br= XMEN.COM.BR
xmen.com.br= XMEN.COM.BR

[login]
krb4_convert = true
krb4_get_tickets = false

#Fim do arquivo

Agora testaremos as configurações e a comunicação segura com o AD. Execute e comando:

# kinit [email protected]

Se o seu Windows está em pt_BR, provavelmente você deverá usar: [email protected].

Será solicitada a senha do usuário indicado do AD, não deverá aparecer qualquer erro.

Configuração do Samba + Ingresso no domínio

Nesta etapa vamos fazer a configuração do Samba, onde poderemos, além de usarmos os usuários do AD, compartilhar diretórios diretamente da máquina GNU/Linux.

Para configurar o Samba editaremos o arquivo /etc/samba/smb.conf. Arquivo onde, posteriormente, poderemos configurar outras funções de compartilhamentos.

Execute e comando:

# vi /etc/samba/smb.conf

Substitua todo o conteúdo do arquivo pelas linhas abaixo (lembrando de substituir os nomes para sua realidade):

[global]
#Domínio no qual o servidor fará parte
workgroup = XMEN
#Nome que o servidor será visto quando visualizada a rede
server string = Servidor Emails
#Nome NetBIOS do servidor (hostname)
netbios name = storm
#Domínio para login
realm = XMEN.COM.BR
#Arquivo onde será gerado o log do Samba
log file = /var/log/samba/%m.log
#Nível do log
os level = 20
#Tamanho máximo do arquivo de log
max log size = 50
#Nível do debug
debug level = 1
#Tipo de segurança de autenticação
security = ADS
encrypt passwords = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
unix charset = UTF-8
password server = *
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes

#Faixa de IDs dos grupos do AD
idmap uid = 10000-20000
#Faixa de IDs dos usuários do AD
idmap gid = 10000-20000
#Diretório padrão dos usuários do AD
template homedir = /home/%U
#bash padrão dos usuários do AD
template shell = /bin/bash
winbind use default domain = yes

#Fim do arquivo

Agora configuraremos o sistema para que ele solicite as senhas dos usuários também no servidor AD. Então editamos o arquivo /etc/nsswitch.conf com o parâmetro necessário.

Execute e comando:

# vi /etc/nsswitch.conf

Substitua o conteúdo das linhas abaixo:

passwd: compat
group: compat
shadow: compat

Pelo seguinte conteúdo:

passwd: compat winbind
group: compat winbind
shadow: compat winbind

Com todas as configurações feitas, podemos fazer o ingresso do servidor de e-mails como um cliente do nosso domínio Windows.

Para ingressar no domínio, execute o comando:

# net ads join -U administrator

Obs.: Se o seu Windows está em pt_BR, provavelmente você devera usar “administrador”.

Será solicitada a senha do administrador e a máquina será adicionada ao domínio.

Para concluir as configurações é necessário a reinicialização dos serviços Samba e Winbind. Execute os comandos:

# /etc/init.d/samba restart
# /etc/init.d/winbind restart

Para verificarmos a comunicação de todos os serviços devemos executar os seguintes comandos:

1. Mostra que o terminal está devidamente configurado no servidor:

# net ads testjoin

2. Mostra que a comunicação com o servidor está OK:

# wbinfo -t

3. Lista os usuários do AD:

# wbinfo -u

4. Lista os grupos do AD:

# wbinfo -g

5. Lista todos os usuários do sistema (GNU/Linux + AD):

# getent passwd

6. Lista todos os grupos do sistema (GNU/Linux + AD):

# getent group

Instalação e configuração do Postfix + Courier

Postfix é um agente de transferência de e-mails (MTA) prático, seguro e fácil de administrar. Será o principal serviço do nosso servidor GNU/Linux.

Para instalar o Postfix execute o comando:

# aptitude install postfix postfix-doc

Obs.: Na instalação será questionado qual o tipo do servidor. Deve ser selecionada a opção: “Servidor de Internet”

A configuração desse serviço é bem simples, basta editarmos o arquivo /etc/postfix/main.cf. Execute o comando:

# vi /etc/postfix/main.cf

Substitua todo o conteúdo do arquivo pelas linhas abaixo (lembrando de substituir os nomes para sua realidade):

#Especifique seu domínio
mydomain = xmen.com.br
#hostname do servidor de e-mails
myhostname = storm.$mydomain
#Domínio remetente do e-mail
myorigin = $mydomain
#Domínios que esse servidor vai receber como destinatário
mydestination = $myhostname, $mydomain
#Especifique aqui a sua rede
mynetworks = 127.0.0.0/8 192.168.1.0/24
#Diretório destino da mensagem dentro do diretório de cada usuário
home_mailbox = Maildir/

#Fim do arquivo

Depois de salvo o arquivo, faremos um reload no serviço do Postfix para que ele assuma as novas configurações. Execute o comando:

# postfix reload

Em seguida usamos uma ferramenta do próprio Postfix para verificar a integridade das configurações. Execute o comando:

# postfix check

O retorno desse comando deve ser vazio!

Nesse ponto já podemos fazer um teste do funcionamento do Postfix. Para isso usaremos o comando mail. Execute o comando:

# echo “Teste de funcionamento do POSTFIX” | mail -s “Criação de Conta” root

Verifique no diretório /root se foi criado o diretório Maildir. Dentro do novo diretório deve existir a mensagem no diretório new, até que ela seja lida.

Finalização

Para acessarmos a caixa de mensagens de cada um dos usuários usaremos o Courier, mais especificamente o pacote IMAP, já que esse tipo de comunicação já mantém os arquivos no servidor criando um repositório em uma única máquina.

Para instalar o Courier execute o comando:

# aptitude install courier-authdaemon courier-imap

Script de criação do diretório Maildir

Nesse ponto já temos funcionando os serviços de transmissão e entrega de e-mails aos usuários. Mas esses e-mails serão entregues no diretório padrão de cada usuário, que no caso dos usuários do AD, configuramos como /home/$user lá no “smb.conf”.

Acontece que estes diretórios não são criados automaticamente, como na criação de um usuário no próprio GNU/Linux. Então criei um script que vai listar os usuários novos na base do AD e criar os diretórios para estes novos usuários.

Para executarmos o script, criaremos o seguinte diretório: /usersdominio. Execute o comando:

# mkdir /usersdominio

Crie o script. Execute o comando:

# vi /usersdominio/criacontas.sh

Acrescente o seguinte conteúdo:

#!/bin/bash
/etc/init.d/winbind restart

#### Lista as contas que ja existem e ordena
ls /home > /usersdominio/existentes.txt
sort /usersdominio/existentes.txt > /usersdominio/existentes_alf.txt

#### Lista as contas do AD e compara definindo as novas
wbinfo -u | grep -v ‘\$’ | sort > /usersdominio/noAD.txt
comm -13 /usersdominio/existentes_alf.txt /usersdominio/noAD.txt > /usersdominio/novos.txt

#### Rotina para criacao dos diretorios e MAILDIR

for usuario in `cat /usersdominio/novos.txt`
do
mkdir /home/$usuario
chown -R $usuario /home/$usuario
echo “Bem Vindo a sua nova Caixa Postal” | mail -s “Criação de Conta” $usuario
done

#### Deleta a lista dos novos
rm -f /usersdominio/novos.txt

#Fim do arquivo

Agora vamos deixá-lo executável. Execute o comando:

# chmod +x /usersdominio/criacontas.sh

Se quiser é possível agendar para que o script rode a cada período deixando a criação mais automática.

Agora basta configurar a conta no seu leitor de e-mail preferido ou instalar um Webmail (que poderá ser tema de um outro artigo).

* Lembrando: para a autenticação das contas usamos os usuários e senhas do AD.

Rolar para cima