Oggi un cliente ci ha chiesto di spostare le email da una cartella ad un’altra del suo account Zimbra.
Potreste pensare: e cosa ci vuole, si va nella webmail, si selezionano le email e si trascinano nella cartella di destinazione. Vero, niente di più facile, se fosse possibile accedere a queste email tramite la webmail.
Il problema è che le email contenute in questa cartella non risultano visibili tramite webmail, probabilmente a causa di qualche flag impostato dal dominio originario della casella; l’account è stato infatti trasferito da un altro provider e le email sono state spostate tramite una sincronizzazione con mailsync.
In questi casi l’unica soluzione è il ricorso alla CLI (Command Line Interface) di Zimbra.
Tramite la CLI, direttamente sul server di posta Zimbra, abbiamo lanciato il seguende comando, che sposta nella cartella /TEST le email risultanti dalla ricerca eseguita sulla cartella /TEST2
zmmailbox -z -m "[email protected]" moveMessage `zmmailbox -z -m "[email protected]" search -t message -l 999 "in:TEST2" | grep ^[0-9] | awk '{ printf("%s,",$2) }'` /TEST
Nello script abbiamo utilizzato due comandi Zimbra
- moveMessage, per spostare le email
- search, per trovare le email da spostare
Questo si è reso necessario dal fatto che il comando moveMessage sposta le email partendo dal loro ID di riferimento
moveMessage(mm) {msg-ids} {dest-folder-path}
Abbiamo quindi, prima cercato le email nella directory desiderata con il comando search
zmmailbox -z -m "[email protected]" search -t message -l 999 "in:TEST2"
poi abbiamo costruito la stringa da passare a moveMessage
| grep ^[0-9] | awk '{ printf("%s,",$2) }'