Live Chat Software by Kayako
Knowledgebase
Migração de caixas de email usando o imapsync
Posted by Jean Melo on 14/Jul 09:40

O objetivo principal de uso do imapsync é quando não temos como migrar as caixas postais que estão em formato diferente de Maildir, como por exemplo em banco de dados. Ou caso não queria converter o formato mailbox para Maildir.

O imapsync conecta no servidor de origem e destino fazendo a sincronia das caixas postais. É um processo rápido e simples.

Como pré-requisito é necessário configurar uma conta administrativa global em cada um dos servidores imap para que seja possível logar com qualquer usuário e transferir os dados.

No dovecot isso é simples, basta adicionar o seguinte na configuração no dovecot.conf e reiniciar o serviço:

auth_master_user_separator = *

passdb {

  driver = passwd-file

  args = /usr/local/etc/dovecot/passwd.masterusers

  master = yes

  result_success = continue

}

Criar o arquivo /usr/local/etc/dovecot/passwd.masterusers com htpasswd, exemplo:

htpasswd -c admin /usr/local/etc/dovecot/passwd.masterusers 123

Ou seja criamos o usuario admin com a senha 123.

Agora basta reiniciar o serviço e você conseguirá conectar com qualquer usuario via imap usando a seguinbet sintaxe: 

usuario*admin senha

Na autenticação via imap seria:

a login 

usuario*admin senha

Caso a migração esteja sendo feita a partir de outro tipo de servidor imap procure na documentação respectiva como colocar um administrador global para conseguir fazer a autenticação sem precisar saber a senha de todos os usuários.

Feito isso instale o imapsync:

# pkg install imapsync

Agora use o script a seguinte fazer as devidas alterações para gerar a sincronia. Mude o host1 (origem) e host2 (destino) e altere os dados dos usuários administradores da origem e destino:

#!/bin/sh

set -xv    

    logfile="sinklog.txt"

    host1=192.168.242.238    # host1 is Source

    host2=127.0.0.1    # host2 is Dest

                             # everything after @ symbol

    

    ###### Do not modify past here ######

    date=`date +%X_-_%x`

    echo "" >> $logfile

    echo "------------------------------------" >> $logfile

    echo "IMAPSync started..  $date" >> $logfile

    echo "" >> $logfile

    

    { while IFS=';' read  u1; do

            user=$u1    

             echo "Syncing User $user"

            date=`date +%X_-_%x`

            echo "Start Syncing User $u1"

            echo "Starting $u1 $date" >> $logfile

    imapsync --nosyncacls --syncinternaldates --host1 $host1 --user1=$user --authuser1='franciney.souza@prodap.ap.gov.br' --password1 '1010' --host2 $host2 --user2=$user*admin --password2 '123'

            date=`date +%X_-_%x`

            echo "User $user done"

            echo "Finished $user $date" >> $logfile

            echo "" >> $logfile

            done ; } < userlist.txt

    

    date=`date +%X_-_%x`

    echo "" >> $logfile

    echo "IMAPSync Finished..  $date" >> $logfile

    echo "------------------------------------" >> $logfile

Dentro do diretorio onde rodara o script crie o arquivo userlist.txt com a lista de todos usuários no formato usuário@dominio, pois ele vai pegar a informação para migrar a partir dai.

Feito isso basta rodar o script. Todos os logs de sincronia serão gerados no arquivo sinklog.txt.

(1 vote(s))
Helpful
Not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
Help Desk Software by Kayako