Migrando as contas do Servidor Atual para o Novo Servidor com o ImapSync

Vamos obter o imapsync

cd /usr/src
git clone https://github.com/imapsync/imapsync.git

Vamos instalar as dependências do ImapSync

aptitude install  libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl liburi-perl libio-tee-perl \
 libio-socket-ssl-perl libfile-spec-perl libdigest-hmac-perl makepasswd libio-socket-ssl-perl libfile-copy-recursive-perl   -y

Agora vamos acessar o diretório do imapsync

cd /usr/src/imapsync

Agora precisamos criar um diretório de controle interno dele

mkdir dist

Agora vamos compilar ele

make

Agora vamos mandar instalar ele

make install clean

Agora vamos pegar por exemplo a conta do nerso para sincronizar

Vamos criar um arquivo contendo o usuário e senha do servidor de email atual e o usuário e senha do servidor novo, nós podemos ter um usuário por linha

vim /usr/src/users
nerso@douglasqsantos.com.br;senha1;nerso@douglasqsantos.com.br;senha2
douglas@douglasqsantos.com.br;senha1;douglas@douglasqsantos.com.br;senha2

O arquivo deve ser no seguinte formato:

usuário1;senha1;usuário2;senha2

Onde:

  • usuário1: é o usuário do servidor atual que está no uol
  • senha1: é a senha do usuário atual que está no uol
  • usuário2: é o usuário do servidor novo que acabamos de montar
  • senha2: é a senha do usuário do servidor novo que acabamos de montar

Nós vamos fazer o sincronismo de todas as contas que estiverem no arquivo /tmp/users

Agora vamos ao script de sincronismo

vim /usr/src/sincroniza.sh
#!/bin/bash
#-------------------------------------------------------------------------
# sincroniza.sh
#
# Site  : http://www.douglasqsantos.com.br
# Autor : Douglas Q. dos Santos <douglas.q.santos@douglasqsantos.com.br>
# Manutenção: Douglas Q. dos Santos <douglas.q.santos@douglasqsantos.com.br>
#
#-------------------------------------------------------------------------
# Efetua o sincronismo das caixas de mensagens entre servidor de email
#-------------------------------------------------------------------------
# Histórico:
#
# Versão 1:
# Data: 22/02/2011
# Descrição: Efetua o sincronismo das caizas de mensagens entre servidores
# de email utilizando o imapsync no Debian Squeeze
#
#--------------------------------------------------------------------------
#Licença: http://creativecommons.org/licenses/by-sa/3.0/legalcode
#
#--------------------------------------------------------------------------

#VARIAVEIS GLOBAIS UTILIZADAS NO SCIRPT
RED="\033[01;31m"
GREEN="\033[01;32m"
WHITE="\033[01;37m"
CLOSE="\033[m"
IMAPSYNC=$(which imapsync)
SERVER1="mail.douglasqsantos.com.br"
SERVER2="localhost"
LISTA="/usr/src/users"
LOGS="/var/log/sincroniza.log"


#FUNÇÃO PARA SINCRONIZAR AS MENSAGENS
_Sincronizar()
{
for END in $(cat ${LISTA}); 
do
#O ARQUIVO DEVE ESTAR SEPARADO POR ; 
USER1=$(echo ${END} | cut -d ';' -f 1)
SENHA1=$(echo ${END} | cut -d ';' -f 2)
USER2=$(echo ${END} | cut -d ';' -f 3)
SENHA2=$(echo ${END} | cut -d ';' -f 4)
echo -e "${GREEN}SINCRONIZANDO A CONTA DE EMAIL ${RED}${USER1}${CLOSE} ${GREEN}DO SERVIDOR${CLOSE} ${RED}${SERVER1}${CLOSE} ${GREEN}PARA O SERVIDOR${CLOSE} ${RED}${SERVER2}${CLOSE} ${CLOSE}"
sleep 2
${IMAPSYNC} --host1 ${SERVER1} --user1 ${USER1} --password1 ${SENHA1} --host2 ${SERVER2} --user2 ${USER2} --password2 ${SENHA2}
_Validar ${USER1}
done
}

#FUNÇÃO PARA VALIDAR SE A CONTA CONSEGUIU SER SINCRONIZADA
_Validar()
{
if [ $? -eq 0 ]; then
  echo -e "${GREEN}CONTA DE EMAIL ${RED}${1}${CLOSE} ${GREEN}SINCRONIZADA COM SUCESSO ${CLOSE}" 
else
      echo -e "${RED}FALHA AO SINCRONIZAR A CONTA DE EMAIL ${WHITE}${1}${CLOSE}${CLOSE}"
  #GERANDO LOGS DAS CONTAS QUE DERAO PROBLEMAS PARA SINCRONIZAR
      echo -e "FALHA AO SINCRONIZAR A CONTA DE EMAIL ${1} NA DATA: $(date)" >> ${LOGS}
fi

}

_Sincronizar

Agora precisamos dar permissão para o nosso script

chmod +x /usr/src/sincroniza.sh

Agora é só mandar executar ele

/usr/src/sincroniza.sh

Em alguns casos precisamos habilitar o ssl ou tls podemos passar os seguinte parametros na linha de conexão com o server

--ssl1                 : Use an SSL connection on host1.
--ssl2                 : Use an SSL connection on host2.
--tls1                 : Use an TLS connection on host1.
--tls2                 : Use an TLS connection on host2.

Quando acabar o sincronismo vamos ter algo como abaixo

Host2 Nb messages:             494 messages
Host2 Total size:        117416141 bytes (111.98 MiB)
Host2 Biggest message:     7830835 bytes (7.47 MiB)
Host2 Time spent:              0.7 seconds
++++ Statistics
Transfer started on               : Sun Jan 13 16:39:00 2013
Transfer ended on                 : Sun Jan 13 16:39:13 2013
Transfer time                     : 13.0 sec
Messages transferred              : 0 
Messages skipped                  : 496
Messages found duplicate on host1 : 12
Messages found duplicate on host2 : 0
Messages void (noheader) on host1 : 0
Messages void (noheader) on host2 : 0
Messages deleted on host1         : 0
Messages deleted on host2         : 0
Total bytes transferred           : 0 (0.00 KiB)
Total bytes duplicate host1       : 383100 (374.12 KiB)
Total bytes duplicate host2       : 0 (0.00 KiB)
Total bytes skipped               : 117384026 (111.95 MiB)
Total bytes error                 : 0 (0.00 KiB)
Message rate                      : 0.0 messages/s
Average bandwidth rate            : 0.0 KiB/s
Reconnections to host1            : 0
Reconnections to host2            : 0
Memory consumption                : 82.4 MiB
Biggest message                   : 0 bytes
Initial difference host2 - host1  : -2 messages, -350985 bytes (-342.76 KiB)
Final   difference host2 - host1  : -2 messages, -350985 bytes (-342.76 KiB)
Detected 0 errors

This current imapsync is up to date
Homepage: http://imapsync.lamiral.info/
CONTA DE EMAIL nerso@douglasqsantos.com.br SINCRONIZADA COM SUCESSO 

Caso alguma conta de problemas para sincronizar vamos ter o arquivo de log em /var/log/sincroniza.log

Referências