diff --git a/CHANGELOG b/CHANGELOG index fb5b01a..08434e1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ CHANGELOG +### 1.0.3 ### + +- Translated into English + ### 1.0.2 ### - Criado aviso para instalações com mais de um servidor Mailbox @@ -39,4 +43,4 @@ CHANGELOG - Viabiliza a importação das classes de serviço padrão (Default e DefaultExternal), removendo as entradas no LDAP ao importar para adicionar as entradas exportadas. -- Exclui da exportação das contas de serviço do Zimbra, evitando impacto nas configurações do novo ambiente. \ No newline at end of file +- Exclui da exportação das contas de serviço do Zimbra, evitando impacto nas configurações do novo ambiente. diff --git a/TODO b/TODO index c45a34f..5b9497c 100644 --- a/TODO +++ b/TODO @@ -1,18 +1,18 @@ TODO: -[x] Confirmar se o novo nome do servidor, caso o hostname seja modificado, seja um FQDN; via -[x] Confirmar se o nome do novo servidor (zmhostname) corresponde ao nome das entradas LDAP; -[x] Tratar conta do admin (opção) - apelidos root e postmaster; -[x] Incluir exceção para não importar contas de sistema (zimbraIsSystemResource:TRUE); -[x] Verificar timeout em operações de export e import com caixas postais grandes (+2GB); via -[ ] Criar controle de sessões de exportação e importação; -[ ] Melhorar a varáivel para conectar no ldap com o valor da ldap_url ao invés de ldap://$ZIMBRA_HOSTNAME -[ ] Habilitar opção para já iniciar o export das caixas postais; via -[ ] Implementar migração dos domínios; - 1.2 -[ ] Incrementar a documentação; -[ ] Permitir filtro para exportar caixas postais: todas, somente ativas, etc...; *continuar importando todas as entradas no LDAP - 1.2 -[ ] Permitir migração de configuração de autenticação externa e/ou GAL (testar zimbraAuthMech); - 1.2 -[ ] Permitir migrar configurações comuns, tais como: relayhost, mynetworks; - 1.2 -[ ] Tratar correções e verificações de vulnerabilidades (zimbra) conhecidas. - 1.2 -[ ] Utilizar whiptail para interface. - 2.0 -[ ] Criar correção de compartilhamentos - 2.0 +[x] Confirm that the new server name, if the hostname is modified, is an FQDN; via +[x] Confirm that the name of the new server (zmhostname) matches the name of the LDAP entries; +[x] Treat admin account (option) -root and postmaster nicknames; +[x] Add exception to not import system accounts (zimbraIsSystemResource:TRUE); +[x] Check timeout in export and import operations with large mailboxes (+2GB); via +[ ] Create control of export and import sessions; +[ ] Improve the variable to connect to ldap with the value of ldap_url instead of ldap://$ZIMBRA_HOSTNAME +[ ] Enable the option to start exporting mailboxes; via +[ ] Implement domain migration; -1.2 +[ ] Increase documentation; +[ ] Allow filter to export mailboxes: all, only active, etc...; *continue importing all entries in LDAP -1.2 +[ ] Allow migration of external authentication configuration and/or GAL (test zimbraAuthMech); -1.2 +[ ] Allow migrating common configurations, such as: relayhost, mynetworks; -1.2 +[ ] Handle fixes and checks for known vulnerabilities (zimbra). -1.2 +[ ] Use whiptail for interface. -2.0 +[ ] Create Shares Fix -2.0 diff --git a/description b/description index 3bcfd28..95b90cc 100644 --- a/description +++ b/description @@ -1 +1 @@ -Essa ferramenta foi criada visando facilitar o processo de migração entre ambientes Zimbra, independentemente de qual versão ou edição esteja sendo utilizada. Motivada pelos desafios encontrados em migrações efetuadas pela BKTECH (parceiro oficial Zimbra para negócios e treinamentos), além da participação em comunidades do Zimbra, a ferramenta visa, no decorrer de sua evolução, atender os mais diversos cenários, contemplando também a migração de outras plataformas, livres e proprietárias - "A2Z: Anything/Anywhere to Zimbra". +This tool was created to facilitate the migration process between Zimbra environments, regardless of which version or edition is being used. Motivated by the challenges encountered in migrations carried out by BKTECH (official Zimbra partner for business and training), in addition to participation in Zimbra communities, the tool aims, in the course of its evolution, to meet the most diverse scenarios, also including migration from other platforms , free and proprietary -"A2Z: Anything/Anywhere to Zimbra". \ No newline at end of file diff --git a/func.sh b/func.sh index cc935f5..fb0452c 100644 --- a/func.sh +++ b/func.sh @@ -1,14 +1,14 @@ #!/bin/bash #Changelog: -# 15/Nov/2016: Criação do arquivo func.sh (Fabio Soares Schmidt) - -#FUNCOES E VARIAVEIS PARA O UTILITARIO -NORMAL_TEXT="printf '\e[1;34m%-6s\e[m\n'" #Azul -ERROR_TEXT="printf '\e[1;31m%s\e[0m\n'" #Vermelho -INFO_TEXT="printf '\e[1;33m%s\e[0m\n'" #Amarelo -CHOICE_TEXT="printf '\e[1;32m%s\e[0m\n'" #Verde -NO_COLOUR="'\e[0m'" #Branco -MAILBOX_LIST=`zmprov -l gaa | grep -v -E "admin|virus-|ham.|spam.|galsync"` #TODAS AS CONTAS DO ZIMBRA, EXCETO CONTAS DE SISTEMA +# 15/Nov/2016: Creating the func.sh file (Fabio Soares Schmidt) + +#FUNCTIONS AND VARIABLES FOR THE UTILITY +NORMAL_TEXT="printf '\e[1;34m%-6s\e[m\n'" #Blue +ERROR_TEXT="printf '\e[1;31m%s\e[0m\n'" #Red +INFO_TEXT="printf '\e[1;33m%s\e[0m\n'" #Yellow +CHOICE_TEXT="printf '\e[1;32m%s\e[0m\n'" #Green +NO_COLOUR="'\e[0m'" #White +MAILBOX_LIST=`zmprov -l gaa | grep -v -E "admin|virus-|ham.|spam.|galsync"` #ALL ZIMBRA ACCOUNTS EXCEPT SYSTEM ACCOUNTS WORKDIR=`pwd`"/export" SINGLE_MAILBOX=1 MAILBOX_SERVERS="`zmprov gas mailbox | wc -l`" @@ -23,9 +23,9 @@ echo ++++++++++++++++++++++++++++++++++++++++ test_exec() { -read -p "Continuar (sim/nao)?" choice +read -p "Continue (Yes/No)?" choice case "$choice" in - y|Y|yes|s|S|sim ) $NORMAL_TEXT "Iniciando utilitario";; + y|Y|yes|s|S|sim ) $NORMAL_TEXT "Starting utility";; n|N|no|nao ) exit 0;; * ) test_exec ;; esac @@ -37,10 +37,10 @@ Check_Directory() { if [ ! -d "$DIRETORIO" ]; then - $ERROR_TEXT "ERRO: O diretorio $DIRETORIO nao existe, abortando execucao." + $ERROR_TEXT "Error: The directory $DIRETORIO does not exist, aborting execution." exit 1 else - $INFO_TEXT "OK: Diretorio $DIRETORIO existente." + $INFO_TEXT "OK: Existing $DIRECTORY directory." fi } @@ -55,10 +55,10 @@ for i in "${COMANDOS[@]}" # do whatever on $i type $i >/dev/null 2>/dev/null if [ $? == 0 ]; then - $INFO_TEXT "OK: comando $i existente." + $INFO_TEXT "OK: existing $i command." separator_char else - $ERROR_TEXT "ERRO: O comando $i nao foi encontrado, abortando execucao." + $ERROR_TEXT "Error: The command $i was not found, aborting execution." exit 1 fi done @@ -72,10 +72,10 @@ Check_Maibox() { if (($MAILBOX_SERVERS > $MAILBOX_SERVERS)); then - $ERROR_TEXT "CUIDADO: A versao atual foi desenvolvida para ambientes Single Server ou com apenas um servidor mailbox." - $ERROR_TEXT "CUIDADO: Para ambientes com mais de um servidor Mailbox sera necessario alterar os arquivos exportados se desejar renomear os servidores" + $ERROR_TEXT "CAUTION: The current version was developed for Single Server environments or environments with just one mailbox server." + $ERROR_TEXT "CAUTION: For environments with more than one Mailbox server, it will be necessary to change the exported files if you want to rename the servers" else - $NORMAL_TEXT "OK: Ambiente possui apenas um servidor Mailbox" + $NORMAL_TEXT "OK: Environment has only one Mailbox server" fi } @@ -84,7 +84,7 @@ fi Enter_New_Hostname() { -read -p "Informe o novo hostname do servidor Zimbra: " userInput +read -p "Enter the new Zimbra server hostname: " userInput if [[ -z "$userInput" ]]; then @@ -93,12 +93,12 @@ if [[ -z "$userInput" ]]; then else TEST_FQDN=`echo $userInput | awk -F. '{print NF}'` if [ ! $TEST_FQDN -ge 2 ]; then - $ERROR_TEXT "ERRO: O hostname informado nao e um FQDN valido" + $ERROR_TEXT "Error: The hostname provided is not a valid FQDN" Enter_New_Hostname fi OLD_HOSTNAME="$zimbra_server_hostname" NEW_HOSTNAME="$userInput" - $CHOICE_TEXT "Hostname informado: $NEW_HOSTNAME" + $CHOICE_TEXT "Hostname reported: $NEW_HOSTNAME" fi } @@ -108,9 +108,9 @@ Run_as_Zimbra() { if [ "$(whoami)" == "zimbra" ]; then - $INFO_TEXT "OK: Executando como Zimbra." + $INFO_TEXT "OK: Running as Zimbra." else - $ERROR_TEXT "ERRO: Esse comando deve ser executado como Zimbra." + $ERROR_TEXT "ERROR: This command must be run as Zimbra." exit 1 fi } @@ -120,14 +120,14 @@ fi Replace_Hostname() { #$INFO_TEXT "Modificar hostname" -read -p "O Hostname do servidor do Zimbra sera alterado (sim/nao)?" choice +read -p "Will the Zimbra server hostname be changed (yes/no)?" choice case "$choice" in y|Y|yes|s|S|sim ) - $CHOICE_TEXT "O Hostname do servidor sera alterado." + $CHOICE_TEXT "The server Hostname will be changed." Enter_New_Hostname Execute_Replace_Hostname ;; - n|N|no|nao ) $CHOICE_TEXT "Sera mantido o hostname do servidor.";; + n|N|no|nao ) $CHOICE_TEXT "The server hostname will be maintained.";; * ) Replace_Hostname ;; esac } @@ -136,7 +136,7 @@ esac Execute_Replace_Hostname() { -sed -i s/$OLD_HOSTNAME/$NEW_HOSTNAME/g $DESTINO/CONTAS.ldif +sed -i s/$OLD_HOSTNAME/$NEW_HOSTNAME/g $DESTINO/ACCOUNTS.ldif sed -i s/$OLD_HOSTNAME/$NEW_HOSTNAME/g $DESTINO/LISTAS.ldif } @@ -144,10 +144,10 @@ sed -i s/$OLD_HOSTNAME/$NEW_HOSTNAME/g $DESTINO/LISTAS.ldif export_Mailboxes() { -read -p "Deseja exportar as caixas postais (sim/nao)?" choice +read -p "Do you want to export mailboxes (yes/no)?" choice case "$choice" in - y|Y|yes|s|S|sim ) $CHOICE_TEXT "Sera criada a RELACAO para o export FULL de todas as contas do sistema.";; - n|N|no|nao ) $CHOICE_TEXT "Nao sera efetuado o export das caixas postais. Execucao abortada pelo usuario." ; exit 0 ;; + y|Y|yes|s|S|sim ) $CHOICE_TEXT "The RELATIONSHIP will be created for the FULL export of all accounts in the system.";; + n|N|no|nao ) $CHOICE_TEXT "Mailboxes will not be exported. Execution aborted by user." ; exit 0 ;; * ) export_Mailboxes ;; esac } @@ -156,13 +156,13 @@ esac Export_Dest() { -read -p "Informe qual sera o diretorio utilizado para exportacao: " userInput +read -p "Enter the directory used for export: " userInput if [[ -z "$userInput" ]]; then - $ERROR_TEXT "Nenhum diretorio informado" + $ERROR_TEXT "No directories provided" Export_Dest else EXPORT_PATH="$userInput" - $CHOICE_TEXT "Diretorio informado:" "$userInput" + $CHOICE_TEXT "Directory provided:" "$userInput" fi } @@ -170,12 +170,12 @@ fi execute_Export_Full() { - $NORMAL_TEXT "INBOX: Criando arquivo com as contas relacionadas para exportacao:" + $NORMAL_TEXT "INBOX: Creating a file with related accounts for export:" $INFO_TEXT "$WORKDIR/script_export_FULL.sh" for mailbox in $( echo $MAILBOX_LIST ); do - echo "zmmailbox -z -m $mailbox -t 0 getRestURL \"//?fmt=tgz\" > $EXPORT_PATH/$mailbox.tgz" >> $WORKDIR/script_export_FULL.sh #comando para export full + echo "zmmailbox -z -m $mailbox -t 0 getRestURL \"//?fmt=tgz\" > $EXPORT_PATH/$mailbox.tgz" >> $WORKDIR/script_export_FULL.sh #command to export full chmod +x $WORKDIR/script_export_FULL.sh - echo "zmmailbox -z -m $mailbox -t 0 postRestURL \"//?fmt=tgz&resolve=skip\" $EXPORT_PATH/$mailbox.tgz" >> $WORKDIR/script_import_FULL.sh #comando para import full + echo "zmmailbox -z -m $mailbox -t 0 postRestURL \"//?fmt=tgz&resolve=skip\" $EXPORT_PATH/$mailbox.tgz" >> $WORKDIR/script_import_FULL.sh #command to import full chmod +x $WORKDIR/script_import_FULL.sh done } @@ -184,7 +184,7 @@ done execute_Export_Trash() { - $NORMAL_TEXT "LIXEIRA: Criando arquivo com as contas relacionadas para exportacao:" + $NORMAL_TEXT "TRASH: Creating file with related accounts for export:" $INFO_TEXT "$WORKDIR/script_export_TRASH.sh" for i in $( echo $MAILBOX_LIST ); do echo "zmmailbox -z -m $i -t 0 gru \"//Trash?fmt=tgz\" > $EXPORT_PATH/$i-Trash.tgz" >> $WORKDIR/script_export_TRASH.sh @@ -199,7 +199,7 @@ done execute_Export_Junk() { - $NORMAL_TEXT "SPAM: Criando arquivo com as contas relacionadas para exportacao:" + $NORMAL_TEXT "SPAM: Creating file with related accounts for export:" $INFO_TEXT "$WORKDIR/script_export_JUNK.sh" for i in $( echo $MAILBOX_LIST ); do echo "zmmailbox -z -m $i -t 0 gru \"//Junk?fmt=tgz\" > $EXPORT_PATH/$i-Junk.tgz" >> $WORKDIR/script_export_JUNK.sh diff --git a/skell/banner_simples.txt b/skell/banner_simples.txt index e13044d..1e3d9e4 100644 --- a/skell/banner_simples.txt +++ b/skell/banner_simples.txt @@ -2,6 +2,6 @@ | __ )| | _| |_ ___ ___| |__ | _ \| |/ / __/ _ \/ __| '_ \ | |_) | <| || __/ (__| | | | - |____/|_|\_\\__\___|\___|_| |_| Z2Z - Versão 1.0.2 - Mantido por BKTECH + |____/|_|\_\\__\___|\___|_| |_| Z2Z - Version 1.0.3 - Mantido por BKTECH ################################################################################################################################# diff --git a/skell/importar_ldap.sh b/skell/importar_ldap.sh index 92d616f..572634a 100644 --- a/skell/importar_ldap.sh +++ b/skell/importar_ldap.sh @@ -1,18 +1,18 @@ #/bin/bash -### Z2Z - Mantido por BKTECH ### -### Copyright (C) 2016 Fabio Soares Schmidt ### -### PARA INFORMACOES SOBRE A FERRAMENTA, FAVOR LER OS ARQUIVOS README E INSTALL ### +### Z2Z -Maintained by BKTECH ### +### Copyright (C) 2016 Fabio Soares Schmidt ### +### FOR INFORMATION ABOUT THE TOOL, PLEASE READ THE README AND INSTALL FILES ### -#DEFININDO VARIAVEIS DE AMBIENTE DO ZIMBRA +#DEFINING ZIMBRA ENVIRONMENTAL VARIABLES source ~/bin/zmshutil zmsetvars -#FUNCOES E VARIAVEIS PARA O UTILITARIO -NORMAL_TEXT="printf \e[1;34m%-6s\e[m\n" #Azul -ERROR_TEXT="printf \e[1;31m%s\e[0m\n" #Vermelho -INFO_TEXT="printf \e[1;33m%s\e[0m\n" #Amarelo -CHOICE_TEXT="printf \e[1;32m%s\e[0m\n" #Verde -NO_COLOUR="printf \e[0m" #Branco +#FUNCTIONS AND VARIABLES FOR THE UTILITY +NORMAL_TEXT="printf \e[1;34m%-6s\e[m\n" #Blue +ERROR_TEXT="printf \e[1;31m%s\e[0m\n" #Red +INFO_TEXT="printf \e[1;33m%s\e[0m\n" #Yellow +CHOICE_TEXT="printf \e[1;32m%s\e[0m\n" #Green +NO_COLOUR="printf \e[0m" #White DEFAULTCOS_DN="cn=default,cn=cos,cn=zimbra" DEFAULTEXTERNALCOS_DN="cn=defaultExternal,cn=cos,cn=zimbra" SERVER_HOSTNAME=$zimbra_server_hostname @@ -20,65 +20,65 @@ SESSION=`date +"%d_%b_%Y-%H-%M"` SESSION_LOG="registro-$SESSION.log" -#CONFIRMA SE ESTA SENDO EXECUTADO COM O USUARIO ZIMBRA +#CONFIRM IF IT IS RUN WITH USER ZIMBRA if [ "$(whoami)" != "zimbra" ]; then - $ERROR_TEXT "Esse comando deve ser executado como Zimbra." + $ERROR_TEXT "This command must be run as Zimbra." exit 1 fi -#ARQUIVOS NECESSARIOS PARA EXECUCAO -declare -a ARQUIVOS_IMPORT=('CONTAS.ldif' 'COS.ldif'); +#FILES REQUIRED FOR EXECUTION +declare -a IMPORT_FILES=('ACCOUNTS.ldif' 'COS.ldif'); -for i in "${ARQUIVOS_IMPORT[@]}" +for i in "${IMPORT_FILES[@]}" do if [ -r $i ] then - $INFO_TEXT "OK: Arquivo $i encontrado" + $INFO_TEXT "OK: File $i found" else - $ERROR_TEXT "ERRO: Arquivo $i nao encontrado ou sem permissao de leitura." + $ERROR_TEXT "ERROR: File $i not found or without read permission." exit 1 fi done -#OBTENDO HOSTNAME NAS ENTRADAS PARA CONFIRMAR SE CORRESPONDE AO HOSTNAME DO SERVIDOR -LDIF_HOSTNAME=`grep zimbraMailHost CONTAS.ldif | uniq | awk '{print $2}'` +#GETTING HOSTNAME IN ENTRIES TO CONFIRM IF IT MATCHES THE SERVER'S HOSTNAME +LDIF_HOSTNAME=`grep zimbraMailHost ACCOUNTS.ldif | uniq | awk '{print $2}'` if [ "$SERVER_HOSTNAME" != "$LDIF_HOSTNAME" ]; then - $ERROR_TEXT "ERRO: O hostname do servidor nao corresponde ao hostname dos arquivos de importacao" - $INFO_TEXT "Hostname do servidor: $SERVER_HOSTNAME" - $INFO_TEXT "Hostname nos arquivos para importacao: $LDIF_HOSTNAME" + $ERROR_TEXT "ERROR: The server hostname does not match the hostname of the import files" + $INFO_TEXT "Server hostname: $SERVER_HOSTNAME" + $INFO_TEXT "Hostname in the files for import: $LDIF_HOSTNAME" exit 1 fi -#COMANDOS NECESSARIOS PARA A EXECUCAO +#COMMANDS REQUIRED FOR EXECUTION declare -a COMANDOS=('ldapsearch' 'zmhostname' 'zmshutil' 'zmmailbox'); for i in "${COMANDOS[@]}" do type $i >/dev/null 2>/dev/null if [ $? != 0 ]; then - $ERROR_TEXT "ERRO: O comando $i nao foi encontrado, abortando execucao." + $ERROR_TEXT "ERROR: The command $i was not found, aborting execution." exit 1 fi done # clear -cat banner_simples.txt #Exibir Banner +cat banner_simples.txt #Display Banner -#INICIANDO ROTINAS DE IMPORTACAO +#STARTING IMPORT ROUTINES echo "" echo "" -$INFO_TEXT "Essa versao NAO cria ou importa os dominios, somente continue se ja tiver criado os dominios do ambiente" -$INFO_TEXT "Importacao iniciada em: $SESSION" &> $SESSION_LOG -$NORMAL_TEXT "Registro da sessao: $SESSION_LOG" -ZIMBRAADMIN_DN=`ldapsearch -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -w $zimbra_ldap_password -b '' -LLL uid=admin dn | awk '{print $2}'` &>> $SESSION_LOG #OBTER DN DO ADMIN +$INFO_TEXT "This version DOES NOT create or import domains, only continue if you have already created the environment domains" +$INFO_TEXT "Import started at: $SESSION" &> $SESSION_LOG +$NORMAL_TEXT "Session registration: $SESSION_LOG" +ZIMBRAADMIN_DN=`ldapsearch -x -H ldap://$SERVER_LDAP_HOSTNAME -D $zimbra_ldap_userdn -w $zimbra_ldap_password -b '' -LLL uid=admin dn | awk '{print $2}'` &>> $SESSION_LOG #GET ADMIN DN -#INTERATIVIDADE: execucao da importacao +#INTERACTIVITY: execution of the import test_exec() { -read -p "Deseja iniciar a importacao das CLASSES DE SERVICO, CONTAS, NOMES ALTERNATIVOS E LISTAS E DISTRIBUICAO (sim/nao)?" choice +read -p "Do you want to start importing COS, ACCOUNTS, ALIAS AND DISTRIBUTION LIST (yes/no)?" choice case "$choice" in - y|Y|yes|s|S|sim ) $NORMAL_TEXT "Iniciando Z2Z";; + y|Y|yes|s|S|sim ) $NORMAL_TEXT "Starting Z2Z";; n|N|no|nao ) exit 0;; * ) test_exec ;; esac @@ -87,38 +87,38 @@ read -p "Deseja iniciar a importacao das CLASSES DE SERVICO, CONTAS, NOMES ALTER test_exec #executa a funcao test_exec -#INTERATIVIDADE: importacao do usuario admin +#INTERACTIVITY: importing the admin user test_importadmin() { echo "" -read -p "Deseja importar o usuario ADMIN (sim/nao)?" choice +read -p "Do you want to import the ADMIN user (yes/no)?" choice case "$choice" in y|Y|yes|s|S|sim ) - $NORMAL_TEXT "Removendo ADMIN: $ZIMBRAADMIN_DN" - ldapdelete -r -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -c -w $zimbra_ldap_password $ZIMBRAADMIN_DN &>> $SESSION_LOG + $NORMAL_TEXT "Removing ADMIN: $ZIMBRAADMIN_DN" + ldapdelete -r -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -c -w $zimbra_ldap_password $ZIMBRAADMIN_DN &>> $SESSION_LOG ;; - n|N|no|nao ) $CHOICE_TEXT "O usuario admin nao sera importado. Utilize a senha da NOVA instalacao";; + n|N|no|nao ) $CHOICE_TEXT "The admin user will not be imported. Use the NEW installation password";; * ) test_importadmin ;; esac } -test_importadmin #executa a funcao test_importadmin +test_importadmin #executes the test_importadmin function -#INICIA IMPORTACAO DAS CLASSES DE SERVICO, CONTAS, NOMES ALTERNATIVOS E LISTAS DE DISTRIBUICAO -## REMOVE AS CLASSES DE SERVICO PADRAO DO ZIMBRA: DEFAULT E ZIMBRADEFAULT -$INFO_TEXT "Removendo classes de servico padrao: Default e DefaultExternal" -ldapdelete -r -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -c -w $zimbra_ldap_password $DEFAULTCOS_DN &>> $SESSION_LOG -ldapdelete -r -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -c -w $zimbra_ldap_password $DEFAULTEXTERNALCOS_DN &>> $SESSION_LOG +#BEGINS IMPORTATION OF SERVICE CLASSES, ACCOUNTS, ALTERNATIVE NAMES AND DISTRIBUTION LISTS +## REMOVE ZIMBRA'S DEFAULT COS: DEFAULT AND ZIMBRADEFAULT +$INFO_TEXT "Removing default service classes: Default e DefaultExternal" +ldapdelete -r -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -c -w $zimbra_ldap_password $DEFAULTCOS_DN &>> $SESSION_LOG +ldapdelete -r -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -c -w $zimbra_ldap_password $DEFAULTEXTERNALCOS_DN &>> $SESSION_LOG -## IMPORTACAO DAS COS, CONTAS, APELIDOS E LISTAS +## IMPORT OF COS, ACCOUNTS, ALIAS AND DISTRIBUTION LISTS -$INFO_TEXT "Importando classes de servico" -ldapadd -c -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f COS.ldif &>> $SESSION_LOG -$INFO_TEXT "Importando contas" -ldapadd -c -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f CONTAS.ldif &>> $SESSION_LOG -$INFO_TEXT "importando nomes alternativos" -ldapadd -c -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f APELIDOS.ldif &>> $SESSION_LOG -$INFO_TEXT "importando listas de distribuicao" -ldapadd -c -x -H ldap://$zimbra_server_hostname -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f LISTAS.ldif &>> $SESSION_LOG +$INFO_TEXT "Importing COS" +ldapadd -c -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f COS.ldif &>> $SESSION_LOG +$INFO_TEXT "Importing accounts" +ldapadd -c -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f ACCOUNTS.ldif &>> $SESSION_LOG +$INFO_TEXT "importing alias" +ldapadd -c -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f ALIAS.ldif &>> $SESSION_LOG +$INFO_TEXT "import distribution lists" +ldapadd -c -x -H ldap://$SERVER_HOSTNAME -D $zimbra_ldap_userdn -w $zimbra_ldap_password -f LISTAS.ldif &>> $SESSION_LOG # diff --git a/util/add_disclaimer.sh b/util/add_disclaimer.sh index 36bd6db..a85c104 100644 --- a/util/add_disclaimer.sh +++ b/util/add_disclaimer.sh @@ -1,11 +1,10 @@ #!/bin/bash -#Utilitario para adicionr disclaimer para todos os dominios -#A partir da versão 8.5, foi adicionada o recurso de criacao de disclaimer por dominio, nao sendo possivel -#utilizar um disclaimer universal +#Utility to add disclaimer for all domains +#As of version 8.5, the feature of creating a disclaimer per domain was added, which is not possible +#use a universal disclaimer -#Obtem a relacao de todos os dominios para adicionar um disclaimer padrao +#Get the list of all domains to add a standard disclaimer for DOMAIN in $(zmprov gad); do - echo Adicionando Disclaimers para o dominio: $DOMAIN + echo Adding Disclaimers to the domain: $DOMAIN zmprov md $DOMAIN zimbraAmavisDomainDisclaimerText "$(cat /opt/zimbra/postfix/conf/disclaimer.txt)" zmprov md $DOMAIN zimbraAmavisDomainDisclaimerHTML "$(cat /opt/zimbra/postfix/conf/disclaimer.html)" -done diff --git a/util/audit_forwards.sh b/util/audit_forwards.sh index cdf6ebb..a3e21a4 100644 --- a/util/audit_forwards.sh +++ b/util/audit_forwards.sh @@ -1,6 +1,6 @@ #!/bin/sh -#Script para auditoria de todos os encaminhamentos configurados nas contas do Zimbra -#Referencia: https://wiki.zimbra.com/wiki/Obtain_all_the_forwards_per_each_account +#Script to audit all forwarding configured in Zimbra accounts +#Reference: https://wiki.zimbra.com/wiki/Obtain_all_the_forwards_per_each_account for account in `zmprov -l gaa`; do forwardingaddress=`zmprov ga $account |grep 'zimbraPrefMailForwardingAddress' |sed 's/zimbraPrefMailForwardingAddress: //'` diff --git a/util/mailbox_size.sh b/util/mailbox_size.sh index bf12b92..e13a08d 100644 --- a/util/mailbox_size.sh +++ b/util/mailbox_size.sh @@ -1,12 +1,12 @@ #!/bin/bash -#Script para obter o tamanho (utilizacao real) das caixas postais do ambiente -#Util para validar o processo de migracao -#Referencia: https://wiki.zimbra.com/wiki/Get_all_user%27s_mailbox_size_from_CLI +#Script to obtain the size (actual usage) of the environment's mailboxes +#Use to validate the migration process +#Reference: https://wiki.zimbra.com/wiki/Get_all_user%27s_mailbox_size_from_CLI all_accounts=`zmprov -l gaa` for account in $all_accounts do mbox_size=`zmmailbox -z -m $account gms` - echo "Espaco UTILIZADO da conta $account = $mbox_size" + echo "USED ​​space of the account $account = $mbox_size" done diff --git a/z2z.sh b/z2z.sh index a4c0de4..ac26bd7 100644 --- a/z2z.sh +++ b/z2z.sh @@ -3,49 +3,49 @@ ### Copyright (C) 2016 Fabio Soares Schmidt ### ### PARA INFORMACOES SOBRE A FERRAMENTA, FAVOR LER OS ARQUIVOS README E INSTALL ### -### VERSAO 1.0.2 +### VERSION 1.0.3 - Translated in english -#CARREGA FUNCOES UTILIZADAS PELO SCRIPT +#LOADS FUNCTIONS USED BY THE SCRIPT . func.sh -#INICIAR Z2Z +#START Z2Z TOOL clear cat banner.txt echo "" # -#CONFIRMA SE ESTA SENDO EXECUTADO COM O USUARIO ZIMBRA +#CONFIRM THAT IT IS RUNNING WITH ZIMBRA USER Run_as_Zimbra separator_char -#CONFIRMA SE O USUARIO DESEJA CONTINUAR COM A EXECUCAO +#CONFIRMS THAT THE USER WANTS TO CONTINUE WITH THE EXECUTION test_exec separator_char -#TESTES PARA EXECUCAO DO UTILITARIO +#TESTS FOR RUNNING THE UTILITY -#COMANDOS NECESSARIOS +#NECESSARY COMMANDS declare -a COMANDOS=('ldapsearch' 'zmmailbox' 'zmshutil' 'zmprov'); Check_Command separator_char -#VALIDA AMBIENTE SINGLE SERVER OU SINGLE MAILBOX +#VALIDATES SINGLE SERVER OR SINGLE MAILBOX ENVIRONMENT Check_Maibox separator_char -#DEFININDO VARIAVEIS DE AMBIENTE DO ZIMBRA +#SETTING ZIMBRA ENVIRONMENT VARIABLES source ~/bin/zmshutil zmsetvars -#DEFININDO NOME DO SERVIDOR COM VARIAVEL DO AMBIENTE +#SETTING SERVER NAME WITH ENVIRONMENT VARIABLE ZIMBRA_HOSTNAME=$zimbra_server_hostname -#DEFININDO USUARIO PARA BIND NO LDAP DO ZIMBRA COM VARIAVEL DO AMBIENE +#DEFINING USER FOR BIND IN ZIMBRA LDAP WITH ENVIRONMENT VARIABLE ZIMBRA_BINDDN=$zimbra_ldap_userdn -####DIRETORIOS +####DIRECTORIS DIRETORIO=$WORKDIR Check_Directory @@ -53,77 +53,77 @@ separator_char DIRETORIO="`pwd`/skell" Check_Directory separator_char -DESTINO=$WORKDIR -mkdir $WORKDIR/alias #Cria diretorio temporario para exportar os nomes alternativos +DESTINATION=$WORKDIR +mkdir $WORKDIR/alias #Create temporary directory to export alternative names -#PODE CONTINUAR +#CAN CONTINUE - #EXPORTANDO CLASSES DE SERVICO - $NORMAL_TEXT "EXPORTANDO CLASSES DE SERVICO" + #EXPORTING COS + $NORMAL_TEXT "EXPORTING COS " separator_char - ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL "(objectclass=zimbraCOS)" > $DESTINO/COS.ldif - $INFO_TEXT "CLASSES DE SERVICO EXPORTADAS COM SUCESSO: $DESTINO/COS.ldif" + ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL "(objectclass=zimbraCOS)" > $DESTINATION/COS.ldif + $INFO_TEXT "COS SUCCESSFULLY EXPORTED: $DESTINATION/COS.ldif" separator_char - #EXPORTANDO CONTAS - DESCONSIDERANDO CONTAS DE SERVICO DO ZIMBRA (zimbraIsSystemResource=TRUE) - $NORMAL_TEXT "EXPORTANDO CONTAS" + #EXPORTING ACCOUNTS - EXCLUDING SERVICES ACCOUNTS ZIMBRA (zimbraIsSystemResource=TRUE) + $NORMAL_TEXT "EXPORTING ACCOUNTS" separator_char - ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL '(&(!(zimbraIsSystemResource=TRUE))(objectClass=zimbraAccount))' > $DESTINO/CONTAS.ldif - $INFO_TEXT "CONTAS EXPORTADAS COM SUCESSO: $DESTINO/CONTAS.ldif" + ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL '(&(!(zimbraIsSystemResource=TRUE))(objectClass=zimbraAccount))' > $DESTINATION/ACCOUNTS.ldif + $INFO_TEXT "ACCOUNTS SUCCESSFULLY EXPORTED: $DESTINATION/ACCOUNTS.ldif" separator_char - #EXPORTANDO NOMES ALTERNATIVOS - $NORMAL_TEXT "EXPORTANDO NOMES ALTERNATIVOS" + #EXPORTING ALIAS + $NORMAL_TEXT "EXPORTING ALIAS" separator_char - ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL '(&(!(uid=root))(!(uid=postmaster))(objectclass=zimbraAlias))' uid | grep ^uid | awk '{print $2}' > $DESTINO/lista_contas.ldif + ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL '(&(!(uid=root))(!(uid=postmaster))(objectclass=zimbraAlias))' uid | grep ^uid | awk '{print $2}' > $DESTINATION/lista_contas.ldif - for MAIL in $(cat $DESTINO/lista_contas.ldif); + for MAIL in $(cat $DESTINATION/lista_contas.ldif); do - ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL "(&(uid=$MAIL)(objectclass=zimbraAlias))" > $DESTINO/alias/$MAIL.ldif - cat $DESTINO/alias/*.ldif > $DESTINO/APELIDOS.ldif + ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL "(&(uid=$MAIL)(objectclass=zimbraAlias))" > $DESTINATION/alias/$MAIL.ldif + cat $DESTINATION/alias/*.ldif > $DESTINATION/APELIDOS.ldif done - $INFO_TEXT "NOMES ALTENATIVOS EXPORTADOS COM SUCESSO: $DESTINO/APELIDOS.ldif" + $INFO_TEXT "ALIAS EXPORTED SUCCESSFULLY: $DESTINATION/APELIDOS.ldif" separator_char -#EXPORTANDO LISTAS DE DISTRIBUICAO - $NORMAL_TEXT "EXPORTANDO LISTAS DE DISTRIBUICAO" +#EXPORTING DISTRIBUTION LISTS + $NORMAL_TEXT "EXPORTING DISTRIBUTION LISTS" separator_char -ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL "(|(objectclass=zimbraGroup)(objectclass=zimbraDistributionList))" > $DESTINO/LISTAS.ldif - $INFO_TEXT "LISTAS DE DISTRIBUICAO EXPORTADAS COM SUCESSO: $DESTINO/LISTAS.ldif" +ldapsearch -x -H ldap://$ZIMBRA_HOSTNAME -D $ZIMBRA_BINDDN -w $zimbra_ldap_password -b '' -LLL "(|(objectclass=zimbraGroup)(objectclass=zimbraDistributionList))" > $DESTINATION/LISTAS.ldif + $INFO_TEXT "SUCCESSFUL EXPORTED DISTRIBUTION LISTS: $DESTINATION/LISTAS.ldif" separator_char -#LIMPA OS ARQUIVOS TEMPORARIOS CRIADOS NO DIRETORIO EXPORT +#CLEANS TEMPORARY FILES CREATED ON THE EXPORT DIRECTORY Clear_Workdir -#COPIA SCRIPT DE IMPORTACAO E BANNER SIMPLES +#COPY IMPORT SCRIPT AND SIMPLE BANNER cp skell/importar_ldap.sh export/ cp skell/banner_simples.txt export/ chmod +x export/importar_ldap.sh -#INTERATIVIDADE: ALTERAR HOSTNAME DO SERVIDOR +#INTERACTIVITY: CHANGE SERVER HOSTNAME Replace_Hostname separator_char -#INTERATIVIDADE: EXPORTAR (RELACAO) DE CAIXAS POSTAIS +#INTERACTIVITY: EXPORT (LIST) OF MAILBOXES export_Mailboxes separator_char Export_Dest -#EXPORTANDO CAIXA POSTAL +#EXPORTING MAILBOXES execute_Export_Full separator_char -#EXPORTANDO LIXEIRA +#EXPORTING TRASH execute_Export_Trash separator_char -#EXPORTANDO SPAM +#EXPORTING SPAM execute_Export_Junk separator_char -#FIM \ No newline at end of file +#END \ No newline at end of file