Problème migration depuis zimbra

Bonjour à tous.
Je commence l’installation de bluemind, et j’aimerais, si possible, réussir à migrer les données depuis zimbra vers bluemind.
Hélas, vu que je poste ici vous devez vous en douter, je rencontre un problème avec bm-migrator … lorsque j’essaie d’exécuter bm-migrator, j’ai des erreurs :

[INFO    ] Loading password database (CSV) passwords_zimbra.csv
[INFO    ] Loading BluMind domain database...
[DEBUG   ] Starting new HTTPS connection (1): localhost:443
[DEBUG   ] https://localhost:443 "GET /api/domains HTTP/1.1" 401 106
Traceback (most recent call last):
  File "bmapi/api.py", line 81, in _handle_response
  File "requests/models.py", line 960, in raise_for_status
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://localhost:443/api/domains

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "bm-migrator-script.py", line 2, in <module>
  File "bmmigrator/__main__.py", line 184, in main
  File "bmmigrator/zimbra/commands.py", line 469, in run_zimbra_cmd
  File "bmmigrator/zimbra/commands.py", line 75, in zimbra_sync
  File "bmmigrator/zimbra/users.py", line 36, in zimbra_sync_users
  File "bmapi/api.py", line 158, in get_domains
  File "bmapi/api.py", line 96, in get
  File "bmapi/api.py", line 83, in _handle_response
bmapi.api.APIError: session id passwd is not valid 401 on https://localhost:443/api/domains
[284964] Failed to execute script bm-migrator-script

ma commande complète étant :
./bm-migrator-1.9.4_linux_amd64 --debug --bluemind-insecure --bluemind-user admin0@global.virt --bluemind-password bmpasswd zimbra --zimbra-host mydomain.com --zimbra-port 7071 --zimbra-user root --zimbra-password rootpasswd sync usersall --imap-host zimbrahost.mydomain.com --imap-port 8443 --admin-account root --admin-password rootpasswd --passwords-csv passwords_zimbra.csv

auriez-vous des idées comment régler mon soucis? des pistes ?
Merci beaucoup par avance :slight_smile:

Il faut utiliser un token d’API et pas le mot de passe de l’admin0@global.virt.
Vous pouvez utiliser le contenu du fichier /etc/bm/bm-core.tok.

Attention, changez le mot de passe de l’admin0@global.virt, il semble apparaître dans les logs que vous avez posté.

Je vous remercie pour votre réponse.
Je vais changer ce mot de passe (j’avais pas vu qu’il était dans le log…) en attendant j’ai édité mon poste pour pas le laisser traîner …
Je viens de tester ça. Du coup j’ai changé la commande en prennant le token api qui se trouve dans /etc/bm/bm-core.tok.
Cela donne :
./bm-migrator-1.9.4_linux_amd64 --debug --bluemind-insecure --bluemind-password tokenApi zimbra --zimbra-host mydomain.com --zimbra-port 7071 --zimbra-user root --zimbra-password rootpasswd sync usersall --imap-host zimbrahost.mydomain.com --imap-port 8443 --admin-account root --admin-password rootpasswd --passwords-csv passwords_zimbra.csv
Du coup maintenant, cela ne me fait plus une erreur sur GET /api/domains, ça commence à synchroniser les utilisateurs, mais ça s’arrête avec une erreur sur le premier utilisateur …
Et le premier utilisateur est admin@mydomain.com (logique vu qu’il existe aussi un admin@mydomain.com sous bluemind)…
Ma question est donc, peut on à la fois utiliser l’option zimbra sync usersall et à la fois une option pour lui dire d’ignorer l’utilisateur admin@mydomain.com ? si oui, qu’elle est l’option à donner pour lui dire d’ignorer cet utilisateur ? ou alors peut-on faire un truc du style --only email:user2@mydomain.com email:user3@mydomain.com ?

Bon effectivement, le coup avec --only email:user1@mydomain.com email:user2@mydomain.com marchent, mais, maintenant je suis bloqué un peu plus loin… bon l’avantage, c’est que ça avance, petit à petit, mais ça avance…
j’ai donc ma ligne de commande maintenant qui ressemble à ça:
./bm-migrator-1.9.4_linux_amd64 --debug --bluemind-insecure --bluemind-password tokenApi zimbra --zimbra-host mydomain.com --zimbra-port 7071 --zimbra-user root --zimbra-password rootpasswd sync usersall --only email:user1@mydomain.com email:user2@mydomain.com email:user3@mydomain.com --imap-host zimbrahost.mydomain.com --imap-port 7993 --admin-account root --admin-password rootpasswd --passwords-csv passwords_zimbra.csv
(et oui en plus je m’étais planté dans le port imap)
Mais maintenant j’ai un autre souci avec chaque utilisateur:

Host2: success login on [localhost] with user [user1@mydomain.com] auth [LOGIN] or [LOGIN]
[DEBUG   ] Host2 Buffer I/O: 8192000
[DEBUG   ] ++++ Listing 1 errors encountered during the sync ( avoid this listing with --noerrorsdump ).
[DEBUG   ] Err 1/1: Host1 failure: can not open imap connection on host1 [mydomain.com] with user [user1@mydomain.com]: Unable to connect to mydomain.com:  Connection timed
out                                                                                                                                                                                 
[DEBUG   ] The most frequent error is ERR_CONNECTION_FAILURE_HOST1. Check that host1 mydomain.com on port 7993 is the right IMAP server to be contacted for your mailbox.
[DEBUG   ] Exiting with return value 101 (EXIT_CONNECTION_FAILURE_HOST1) 1/5000 nb_errors/max_errors PID 28330
[DEBUG   ] Disconnecting from host2 localhost user2 user1@mydomain.com
[DEBUG   ] Log file is LOG_imapsync/2022_06_10_17_10_08_587_user1@mydomain.com_user1@mydomain.com.txt ( to change it, use --logfile filepath ; or use --nolog to turn off l
ogging )                                                                                                                                                                            
[DEBUG   ]  
[ERROR   ] [user1@mydomain.com] imapsync (exit code: 101) in 0:02:01.613916
[INFO    ] [user1@mydomain.com] imap sync finished

À priori il n’est pas possible de se connecter en IMAP à votre serveur Zimbra depuis le poste sur lequel vous exécutez bm-migrator.
Pourriez-vous nous transmettre le fichier LOG_imapsync/2022_06_10_17_10_08_587_user1@mydomain.com_user1@mydomain.com.txt

Concernant l’utilisateur admin en conflit, vous pouvez supprimer celui dans BlueMind, il sera importé et vous pourrez ensuite lui donner les droits d’administration du domaine en l’ajoutant au groupe admin.

Oui c’est bien ce qu’il me semble pour l’IMAP, pourtant, j’ai bien vérifié à plusieurs reprises sur le paramétrage de mon client mail (autant mobile que Thunderbird sur mon pc) et c’est bien le port 7993 en IMAP avec SSL qui est utilisé… D’où mon incompréhension à cette erreur …
d’autant qu’il trouve tout les dossiers et sous-dossiers de la boite mail en question …

Here is imapsync 2.200 on host hal-bluemind, a linux system with 3.2/15.6 free GiB of RAM
with Perl 5.30.0 and Mail::IMAPClient 3.43
Transfer started at vendredi 10 juin 2022-06-10 19:27:07 +0200 CEST
PID is 13632 my PPID is 13508
Log file is LOG_imapsync/2022_06_10_19_27_07_702_user1@mydomain.com_user1@mydomain.com.txt ( to change it, use --logfile path ; or use --nolog to turn off logging )
System load: 0.80 0.44 0.41 10/2071
Load is 0.80 0.44 0.41 10/2071 on 4 cores
Current directory is /root
Real user id is root (uid 0)
Effective user id is root (euid 0)
$RCSfile: imapsync,v $ $Revision: 2.200 $ $Date: 2022/04/04 16:05:55 $
Command line used, run by /usr/bin/perl:
/usr/bin/imapsync --host1 mydomain.com --port1 7993 --user1 user1@mydomain.com --authmech1 PLAIN --host2 localhost --port2 993 --user2 user1@mydomain.com --authmech2 LOGIN --exclude (?i)\b(Junk|Spam|Trash)\b --skipheader X-* --useheader Date --useheader Subject --useheader Message-ID --regexflag s/\\\\(?!Answered|Flagged|Deleted|Seen|Recent|Draft)[^\s]*\s*//ig --regextrans2 s,!|"|%|;|<|>|\\|`|{|\||}|@,-,g --regexmess s/(\x00)+//g --buffersize 8192000 --maxsize 52428800 --addheader --delete2duplicates --nofoldersizes --noreleasecheck --nosyncacls --nocheckfoldersexist --no-modulesversion --skipsize --subscribe --syncinternaldates --noreleasecheck --errorsmax 5000 --authuser1 admin --debug --sslargs2 SSL_verify_mode=0 --ssl2 --folder Archives --folder Archives/2019 --folder Archives/Cemes --folder Drafts --folder INBOX --folder INBOX/rpg --folder INBOX/impots --folder INBOX/DUT --folder INBOX/Cl&AOk-Windows --folder INBOX/Archives --folder INBOX/Archives/Cemes --folder INBOX/Archives/Cemes/Envoy&AOk-s --folder INBOX/Archives/Cemes/Courrier entrant --folder INBOX/ovh --folder INBOX/archive mails free --folder INBOX/archive mails free/non tri&AOk-s --folder INBOX/archive mails free/non tri&AOk-s/envoy&AOk-s --folder INBOX/domotique --folder INBOX/banque --folder INBOX/diablo3 --folder INBOX/modelisme --folder INBOX/cours informatique --folder INBOX/maison --folder INBOX/maison/contrats --folder INBOX/McDo --folder INBOX/free --folder INBOX/geothermie --folder INBOX/pizzas --folder INBOX/ci --folder Junk --folder Sent --folder Trash
Temp directory is /tmp ( to change it use --tmpdir dirpath )
kill -QUIT 13632 # special behavior: call to sub catch_exit
kill -TERM 13632 # special behavior: call to sub catch_exit
kill -INT 13632 # special behavior: call to sub catch_reconnect
kill -HUP 13632 # special behavior: call to sub catch_print
kill -USR1 13632 # special behavior: call to sub toggle_sleep
File /tmp/imapsync.pid does not exist
PID file is /tmp/imapsync.pid ( to change it, use --pidfile filepath ; to avoid it use --pidfile "" )
Writing my PID 13632 in /tmp/imapsync.pid
Writing also my logfile name in /tmp/imapsync.pid : LOG_imapsync/2022_06_10_19_27_07_702_user1@mydomain.com_user1@mydomain.com.txt
IMAPClient 3.43
Info: will resync flags for already transferred messages. Use --noresyncflags to not resync flags.
sslcheck
SSL debug mode level is --debugssl 1 (can be set from 0 meaning no debug to 4 meaning max debug)
Host2: SSL default mode is like --sslargs2 "SSL_verify_mode=0", meaning for host2 SSL_VERIFY_NONE, ie, do not check the server certificate.
Host2: Use --sslargs2 SSL_verify_mode=1 to have SSL_VERIFY_PEER, ie, check the server certificate. of host2
Info: will act as --uidexpunge2
Info: turned ON syncinternaldates, will set the internal dates (arrival dates) on host2 same as host1.
Host1: will try to use PLAIN authentication on host1
Host2: will try to use LOGIN authentication on host2
Host1: imap connection timeout is 120 seconds
Host2: imap connection timeout is 120 seconds
Host1: imap connection keepalive is on on host1. Use --nokeepalive1 to disable it.
Host2: imap connection keepalive is on on host2. Use --nokeepalive2 to disable it.
Host1: IMAP server [mydomain.com] port [7993] user [user1@mydomain.com]
Host2: IMAP server [localhost] port [993] user [user1@mydomain.com]
eval $string =~ s/(\x00)+//g

Checking each --regexmess command with an space string.
Ok with each --regexmess
Checking each --regexflag command with an space string.
Ok with each --regexflag
Host1: connecting and login on host1 [mydomain.com] port [7993] with user [user1@mydomain.com]
Host1 failure: can not open imap connection on host1 [mydomain.com] with user [user1@mydomain.com]: socket closed while reading data from server
Host2: connecting and login on host2 [localhost] port [993] with user [user1@mydomain.com]
Host2 IP address: 127.0.0.1 Local IP address: 127.0.0.1
Host2 banner: * OK IMAP4 ready^M
Host2 capability before authentication: IMAP4rev1 UIDPLUS XLIST QUOTA IDLE NAMESPACE AUTH=PLAIN AUTH
Host2: success login on [localhost] with user [user1@mydomain.com] auth [LOGIN] or [LOGIN]
Host2 Buffer I/O: 8192000
++++ Listing 1 errors encountered during the sync ( avoid this listing with --noerrorsdump ).
Err 1/1: Host1 failure: can not open imap connection on host1 [mydomain.com] with user [user1@mydomain.com]: socket closed while reading data from server
The most frequent error is ERR_CONNECTION_FAILURE_HOST1. Check that host1 mydomain.com on port 7993 is the right IMAP server to be contacted for your mailbox.
Exiting with return value 101 (EXIT_CONNECTION_FAILURE_HOST1) 1/5000 nb_errors/max_errors PID 13632
Removing pidfile /tmp/imapsync.pid
Disconnecting from host2 localhost user2 user1@mydomain.com
Log file is LOG_imapsync/2022_06_10_19_27_07_702_user1@mydomain.com_user1@mydomain.com.txt ( to change it, use --logfile filepath ; or use --nolog to turn off logging )

Voici une image de la page (bon ouverte en locale, pas à distance avec le nom de comaine) de mon interface zimbra, où les ports imap sont marqués. (j’ai testé avec le port imap simple sans ssl, et les ports sont bien ouverts, mais bm-migrator n’y accède pas…)

Ah et pour le compte admin, oui je pense que c’est ce que je ferai (le détruire sur bluemind pour le synchro après)

En tout cas merci de ton aide :smiley:

donc, j’ai continué mes recherche et je suis tombé sur ça …
voici ma commande:
./bm-migrator-1.9.4_linux_amd64 --debug --bluemind-insecure --bluemind-password tokenAPI zimbra --zimbra-host mydomain.com --zimbra-port 7071 --zimbra-user root --zimbra-password passwd sync usersall --only email:user2@mydomain.com email:user3@mydomain.com email:user5@mydomain.com email:user4@mydomain.com email:user1@mydomain.com --imap-host mydomain.com --imap-port 7143 --tls --passwords-csv passwords_zimbra.csv
Cela me donne le résultat (ici posté pour un utilisateur):

Here is imapsync 2.200 on host hal-bluemind, a linux system with 3.3/15.6 free GiB of RAM
with Perl 5.30.0 and Mail::IMAPClient 3.43
Transfer started at vendredi 10 juin 2022-06-10 22:55:20 +0200 CEST
PID is 30026 my PPID is 29910
Log file is LOG_imapsync/2022_06_10_22_55_20_800_user1@mydomain.com_user1@mydomain.com.txt ( to change it, use --logfile path ; or use --nolog to turn off logging )
System load: 0.85 0.72 0.66 3/2087
Load is 0.85 0.72 0.66 3/2087 on 4 cores
Current directory is /root
Real user id is root (uid 0)
Effective user id is root (euid 0)
$RCSfile: imapsync,v $ $Revision: 2.200 $ $Date: 2022/04/04 16:05:55 $
Command line used, run by /usr/bin/perl:
/usr/bin/imapsync --host1 mydomain.com --port1 7143 --user1 user1@mydomain.com --authmech1 PLAIN --host2 localhost --port2 993 --user2 user1@mydomain.com --authmech2 LOGIN --exclude (?i)\b(Junk|Spam|Trash)\b --skipheader X-* --useheader Date --useheader Subject --useheader Message-ID --regexflag s/\\\\(?!Answered|Flagged|Deleted|Seen|Recent|Draft)[^\s]*\s*//ig --regextrans2 s,!|"|%|;|<|>|\\|`|{|\||}|@,-,g --regexmess s/(\x00)+//g --buffersize 8192000 --maxsize 52428800 --addheader --delete2duplicates --nofoldersizes --noreleasecheck --nosyncacls --nocheckfoldersexist --no-modulesversion --skipsize --subscribe --syncinternaldates --noreleasecheck --errorsmax 5000 --authuser1 admin --debug --ssl1 --sslargs2 SSL_verify_mode=0 --ssl2 --folder Archives --folder Archives/2019 --folder Archives/Cemes --folder Drafts --folder INBOX --folder INBOX/rpg --folder INBOX/impots --folder INBOX/DUT --folder INBOX/Cl&AOk-Windows --folder INBOX/Archives --folder INBOX/Archives/Cemes --folder INBOX/Archives/Cemes/Envoy&AOk-s --folder INBOX/Archives/Cemes/Courrier entrant --folder INBOX/ovh --folder INBOX/archive mails free --folder INBOX/archive mails free/non tri&AOk-s --folder INBOX/archive mails free/non tri&AOk-s/envoy&AOk-s --folder INBOX/domotique --folder INBOX/banque --folder INBOX/diablo3 --folder INBOX/modelisme --folder INBOX/cours informatique --folder INBOX/maison --folder INBOX/maison/contrats --folder INBOX/McDo --folder INBOX/free --folder INBOX/geothermie --folder INBOX/pizzas --folder INBOX/ci --folder Junk --folder Sent --folder Trash
Temp directory is /tmp ( to change it use --tmpdir dirpath )
kill -QUIT 30026 # special behavior: call to sub catch_exit
kill -TERM 30026 # special behavior: call to sub catch_exit
kill -INT 30026 # special behavior: call to sub catch_reconnect
kill -HUP 30026 # special behavior: call to sub catch_print
kill -USR1 30026 # special behavior: call to sub toggle_sleep
File /tmp/imapsync.pid does not exist
PID file is /tmp/imapsync.pid ( to change it, use --pidfile filepath ; to avoid it use --pidfile "" )
Writing my PID 30026 in /tmp/imapsync.pid
Writing also my logfile name in /tmp/imapsync.pid : LOG_imapsync/2022_06_10_22_55_20_800_user1@mydomain.com_user1@mydomain.com.txt
IMAPClient 3.43
Info: will resync flags for already transferred messages. Use --noresyncflags to not resync flags.
sslcheck
SSL debug mode level is --debugssl 1 (can be set from 0 meaning no debug to 4 meaning max debug)
Host1: SSL default mode is like --sslargs1 "SSL_verify_mode=0", meaning for host1 SSL_VERIFY_NONE, ie, do not check the server certificate.
Host1: Use --sslargs1 SSL_verify_mode=1 to have SSL_VERIFY_PEER, ie, check the server certificate. of host1
Host2: SSL default mode is like --sslargs2 "SSL_verify_mode=0", meaning for host2 SSL_VERIFY_NONE, ie, do not check the server certificate.
Host2: Use --sslargs2 SSL_verify_mode=1 to have SSL_VERIFY_PEER, ie, check the server certificate. of host2
Info: will act as --uidexpunge2
Info: turned ON syncinternaldates, will set the internal dates (arrival dates) on host2 same as host1.
Host1: will try to use PLAIN authentication on host1
Host2: will try to use LOGIN authentication on host2
Host1: imap connection timeout is 120 seconds
Host2: imap connection timeout is 120 seconds
Host1: imap connection keepalive is on on host1. Use --nokeepalive1 to disable it.
Host2: imap connection keepalive is on on host2. Use --nokeepalive2 to disable it.
Host1: IMAP server [mydomain.com] port [7143] user [user1@mydomain.com]
Host2: IMAP server [localhost] port [993] user [user1@mydomain.com]
eval $string =~ s/(\x00)+//g

Checking each --regexmess command with an space string.
Ok with each --regexmess
Checking each --regexflag command with an space string.
Ok with each --regexflag
Host1: connecting and login on host1 [mydomain.com] port [7143] with user [user1@mydomain.com]
DEBUG: .../IO/Socket/SSL.pm:842: local error: SSL connect attempt failed error:1408F10B:SSL routines:ssl3_get_record:wrong version number
DEBUG: .../IO/Socket/SSL.pm:845: fatal SSL error: SSL connect attempt failed error:1408F10B:SSL routines:ssl3_get_record:wrong version number
DEBUG: ...5.30/IO/Socket.pm:48: ignoring less severe local error 'IO::Socket::IP configuration failed', keep 'SSL connect attempt failed error:1408F10B:SSL routines:ssl3_get_record:wrong version number'
Host1 failure: can not open imap connection on host1 [mydomain.com] with user [user1@mydomain.com]: Unable to connect to mydomain.com: SSL connect attempt failed error:1408F10B:SSL routines:ssl3_get_record:wrong version number
Host2: connecting and login on host2 [localhost] port [993] with user [user1@mydomain.com]
Host2 IP address: 127.0.0.1 Local IP address: 127.0.0.1
Host2 banner: * OK IMAP4 ready^M
Host2 capability before authentication: IMAP4rev1 UIDPLUS XLIST QUOTA IDLE NAMESPACE AUTH=PLAIN AUTH
Host2: success login on [localhost] with user [user1@mydomain.com] auth [LOGIN] or [LOGIN]
Host2 Buffer I/O: 8192000
++++ Listing 1 errors encountered during the sync ( avoid this listing with --noerrorsdump ).
Err 1/1: Host1 failure: can not open imap connection on host1 [mydomain.com] with user [user1@mydomain.com]: Unable to connect to mydomain.com: SSL connect attempt failed error:1408F10B:SSL routines:ssl3_get_record:wrong version number
The most frequent error is ERR_CONNECTION_FAILURE_HOST1. Check that host1 mydomain.com on port 7143 is the right IMAP server to be contacted for your mailbox.
Exiting with return value 101 (EXIT_CONNECTION_FAILURE_HOST1) 1/5000 nb_errors/max_errors PID 30026
Removing pidfile /tmp/imapsync.pid
Disconnecting from host2 localhost user2 user1@mydomain.com
Log file is LOG_imapsync/2022_06_10_22_55_20_800_user1@mydomain.com_user1@mydomain.com.txt ( to change it, use --logfile filepath ; or use --nolog to turn off logging )

Quel est le résultat de la commande - exécutée depuis le serveur sur lequel vous exécutez bm-migrator:

openssl s_client --host mydomain.com --port 7143 --starttls imap <<EOF
. logout
EOF

J’ai enfin trouvé hier la commande avec les options qui me permettent de bien synchronisé la boîte (je la donnerai en fin de sujet comme récapitulatif).
De ce que j’ai compris, on ne peux pas passer par le port IMAP si un certificat et mis sur le serveur zimbra. Mais, si on met le port IMAPS il fait une erreur sur le certificat. Il faut donc lui spécifier l’option --tls pour qu’il valide le certificat.
De plus, même avec le fichier passwords_zimbra.csv qu’il faut extraire depuis le serveur zimbra pour la première partie de la commande (à savoir là où bm-migrator crée les utilisateurs sur bluemind, initialise leurs mot de passe et essaient de synchroniser les agendas et répertoires) celui-ci n’est apparemment pas utilisé pour la partie sync allusers (car il me faisait alors une erreur sur “bad password for user1@mydomain.com on server mydomain.com”). Il faut donc lui spécifier un compte et mot de passe administrateur qui puisses voir les boites mails des utilisateurs…
Pour résumé, voici la commande qui a marché pour mon cas:
./bm-migrator-1.9.4_linux_amd64 --debug --bluemind-insecure --bluemind-password apiToken zimbra --zimbra-host mydomain.com --zimbra-port 7071 --zimbra-user root --zimbra-password admin_password sync usersall --only email:user1@mydomain.com email:user2@mydomain.com email:user3@mydomain.com --imap-host mydomain.com --imap-port 7993 --tls --admin-account root@mydomain.com --admin-password admin_password --parallel 5 --passwords-csv passwords_zimbra.csv
Merci en tout cas Toony pour ton aide
Le sujet peut être fermé, mais je sais pas comment faire…