Tadeu's Blog Linux, Apple e Informatica

23Jun/101

Migrando do OpenWebMail+SendMail para Zimbra

Tive este ótimo desafio de migrar do OpenWebMail para o Zimbra. Sempre estive de olho no que o Zimbra poderia oferecer para usuários finais sem falar para o administrador . OpenWebMail também pode ser bem potente porem precisa de um administrador mais encima do servidor controlando.

1 - Problemas com: OpenWebMail+SendMail+Outros

O grande problema que estava tendo com o antigo servidor era basicamente as caixas dos usuários serem maiores que 1GB então para o OpenWebMail abrir estas caixas era um custo de CPU muito grande alem da antiga maquina ser uma maquina virtual que não ajudava muito com operação I.O.(Acho que seja um problema bem comum de sistemas que usam mbox). Com o SendMail não tenho reclamação fazia seu trabalho com rapidez .

Outro problema que estava tendo era com SPAM, não tinha forma simples de fazer um treinamento com as mensagens que eram ou não eram SPAM e com o Zimbra somente com um único click os próprios usuários podem realizar este treinamento do que é Spam e não é.  O servidor antigo tinha ate o SpamAssassin instalado porem para fazer algo parecido como o Zimbra no treinamento de Spam tinha que tentar fazer uma padronização de pastas com usuarios e fazer eles moverem as mensagens para as pastas e fazer um crontab para rodar sempre o SpamAssassin nestas pastas de todos usuários para ele aprender o que seria SPAM ou não.

Outra coisa que me incomodava era que o antigo servidor não tem suporte a IMAP e usava um servido POP que somente buscava os mbox de um lugar.

2 - Desafio: Migrando caixas de e-mail

Não tem segredo.  O Zimbra tem uma ótima documentação de qual ferramenta usar para a migração de emails: http://wiki.zimbra.com/index.php?title=User_Migration

As caixas de email do antigo servidor eram organizadas das seguintes formas:

  • /mail/usuario
  • /home/horizontes/usuario/mail

Com isso teria que fazer uma escolha de um servidor de IMAP que tivesse suporte a multiplas caixas. Outro problema que tive era o pouco tempo para fazer migração de 80 GB de email e não podia parar um servidor para fazer a migração, tinha que fazer a migração em HOT e com isso vem o grande problema,  como fazer o controle de senhas ?  Quero dizer que não podia mudar a senha do servidor original para poder fazer a autenticação no IMAP pois assim o usuário não ia conseguir olhar seus emails. Acabei descobrindo que o dovecot tem uma solução simples e rápido para isso.

2.1 - dovecot

O dovecot tem opção de usar o "modulo" passwd-file que tem a possibilidade de você informar,  em um arquivo de texto simples,  usuário e senha:

user:{plain}password
user2:{plain}password2

E automaticamente ele busca informações do /etc/passwd do diretorio Home do usuario, precisava disso pois configurei o  dovecot para ler os mbox da seguinte forma:

mail_location = mbox:~/mail:INBOX=/mail/%u

Para configuração do devecot olhar o link acima que é muito bem documentado.

Resolvi colocar como senha para os usuários os 3 primeiro dígitos do CPF e os 3 últimos dígitos, com isso resolvi o problema de usuário e senha durante a migração. Agora é buscar a ferramenta para migração dos e-mails.

2.2 - imapsync e criação de usuário.

Agora com os problemas da senha resolvido bastava fazer um script simples para fazer a migração e criação dos usuário no zimbra, o script abaixo foi executado na maquina que o zimbra foi instalado.

#!/bin/bash

while read LINHA
do
email=`echo $LINHA |cut -d: -f1`
nome=`echo $LINHA |cut -d: -f2`
senha=`echo $LINHA |cut -d: -f3`
echo "/opt/zimbra/bin/zmprov ca $email $senha displayName $nome zimbraCOSid 1c6d4f62-e622-4370-8082-fab43b41e4b5"
/opt/zimbra/bin/zmprov ca $email $senha displayName "$nome" zimbraCOSid 1c6d4f62-e622-4370-8082-fab43b41e4b5
echo "/opt/zimbra/bin/zmprov listaGeralEmail@empresa.com $email"
/opt/zimbra/bin/zmprov adlm listaGeralEmail@empresa.com $email
nomeantigo=`echo $email |cut -d "@" -f1`
imapsync --buffersize 8192000 --nosyncacls --subscribe --noauthmd5 --syncinternaldates --host1 192.168.20.87 --user1 $nomeantigo.nh --password1 $senha --host2 localhost --user2 $email --password2 $senha
done < listausuarios

O parametro zimbraCOSid é ID da sua "Class of Service"  e para obter este numero basta entrar na área administrativa e clicar na sua COS padrão para os usuários.

No arquivo "listausuarios" ele esta no seguinte formato:

email@daempresa.com:'Nome da Pessoa':password

Lembrando que o password são os 3 primeiro dígitos do CPF e os 3 últimos dígitos. Antes de executar o script é importante você entrar na área administrativa do Zimbra ir em "Global Settings>IMAP" e selecionar "Enable clear text login"  senão vai dar erro durante a migração. Basta executar os scripts que ele vai criar o usuário e migrar as contas de e-mail.

21Oct/092

Migrando do OpenSuse para Debian

Tive que realizar uma pequena migração de OpenSuse para Debian, coisa fácil quando usado o rsync porem os usuario que foram migrados não queriam autenticar no Debian, fui pesquisar o motivo e descobrir que o OpenSuse usa o algoritmo Blowfish para fazer criptografia de senha e o Debian esta no MD5 por padrão. Como a migração do servidores era do Samba não podia simplesmente ignorar os grupos e usuários tive que utilizar o diff e pach para realizar esta migração. Vamos ao passo a passo do trabalho realizado.

1 - Vamos configurar o Debian para utilizar o Blowfish para autenticação no PAM

  • apt-get install libpam-unix2
  • Substituir "pam_unix.so" por "pam_unix2.so" nos seguintes arquivos:
    • /etc/pam.d/common-auth
    • /etc/pam.d/common-account
    • /etc/pam.d/common-session
    • /etc/pam.d/common-password
  • Substituir "md5" por blowfish no arquivo:
    • /etc/pam.d/common-password

Para a senha de root funcionar você tem que mudar a senha para funcionar perfeitamente com o novo algoritimo de cryp. Porem estava tendo mais um problema, como juntar os arquivos passwd e groups sem dar conflito de ID dos serviços principais do Debian, o jeito foi usar o path como foi falando acima.  Fiz o seguinte codigo abaixo para fazer todo processo do path pois minha intenção e somente ativar o servidor de Backup quando o primario falhar, sim esta ativação tem que ser manual.

#!/bin/bash

echo "Iniciando Samba de backup"
echo "Fazendo bkp dos arquivos importantes /etc/original202/"
mkdir -p /etc/original202/
cp /etc/passwd /etc/original202/
cp /etc/shadow /etc/original202/
cp /etc/group /etc/original202/
echo "Juntando arquivo de passwd para manter usuarios"
cd /tmp
cp /etc/passwd passwd.old
cp /etc/bkp/passwd passwd.new
diff -c passwd.old passwd.new > passwd.patch
patch < passwd.patch
cp passwd.old /etc/passwd
cp /etc/shadow shadow.old
cp /etc/bkp/shadow shadow.new
diff -c shadow.old shadow.new > shadow.patch
patch < shadow.patch
cp shadow.old /etc/shadow
cp /etc/group group.old
cp /etc/bkp/group group.new
diff -c group.old group.new > group.patch
patch < group.patch
cp group.old /etc/group