Zimbra
Zimbra[editar | editar código-fonte]
Principais comandos[editar | editar código-fonte]
Comandos úteis na administração do servidor
Descobrir qual é a versão e arquitetura do seu Zimbra:
zmcontrol -v
Comando para Iniciar o server:
/etc/init.d/zimbra start ou zmcontrol start
Parar o servidor
/etc/init.d/zimbra stop ou zmcontrol stop
Reiniciar o servidor:
/etc/init.d/zimbra restart ou zmcontrol restart
Checar o status do servidor:
/etc/init.d/zimbra status ou zmcontrol status
Obter ajuda do comando zmprov
zmprov help commands
Obter opções de uso do e a sintaxe de comandos do zmprov:
zmprov -h
Trocar o nome da máquina do Zimbra:
/etc/init.d/zimbra stop ; /opt/zimbra/libexec/zmsetservername -o antigo.dominio.com -n novo.dominio.com
Obter nome da máquina do Zimbra:
zmhostname
Administração de dominios
Listar todos os domínios no Zimbra:
zmprov gad
Criar outro domínio:
zmprov cd dominio.org.br
Renomear um domínio:
zmprov -l rd dominio.org.br dominio.net.br
Criar alias para domínio:
zmprov cad alias_dominio.com.br dominio.com.br
Verificar qual o domínio padrão do Zimbra:
zmprov gacf zimbraDefaultDomainName
Para remover um domínio ou um alias de domínio:
zmprov dd alias_dominio.com.br
Administração de usuarios e contas
Trocar a senha de administrador:
zmprov sp [email protected] 'senhaaqui'
Criar usuario:
zmprov ca [email protected] 'senhaaqui'
Alterar a senha de um usuário:
zmprov sp [email protected] 'dominio.usuario'
Listar todos usuarios
zmprov -l gaa
Listar todos os usuários de um domínio:
zmprov -l gaa dominio.com.br
Listar usuários que são administradores:
zmprov -l gaaa
Transformar um usuario em administrador:
zmprov -l gaaa dominio.com.br
Criar um usuario com o atributo de administrador
zmprov ma [email protected] zimbraIsAdminAccount TRUE
Renomear conta
zmprov ca [email protected] 'senhaaqui' zimbraIsAdminAccount TRUE
Renomear conta mudando de domínio
zmprov ra [email protected] [email protected]
Deletar Conta
zmpra da <[email protected]>
Visualizar atributos de uma conta
zmprov ga [email protected]
Adicionar alias a uma conta:
zmprov aaa [email protected] [email protected]
Listar os alias:
for i in $(zmprov -l gaa); do echo -e "\n$i:"; zmprov ga $i | grep MailAlias; done
Listar os alias de um determinado domínio:
for i in $(zmprov -l gaa dominio.com); do echo -e "\n$i:"; zmprov ga $i | grep MailAlias; done
Remover alias
zmprov raa [email protected] [email protected]
COS - Classes de Serviço
Listar Classes:
zmprov gac
Criar uma nova COS:
zmprov cc nome_da_classe
Ver todos os atributos de uma classe:
zmprov gc nome_da_classe
Alterar a COS de um usuário:
zmprov sac [email protected] nova_classe
Para ver quantos usuários de um dominio estão em classes:
zmprov cta dominio.com.br
Obter o atributo da quota da COS:
zmprov gc nome_classe zimbraMailQuota
Quota em disco
Obter quota utilizada por cada usuário de um domínio (Formato Conta Quota Quota Utilizada):
zmprov gqu localhost
Alterar attribute de quota para o valor de 80M, este número deve ser em bytes
zmprov mc nome_da_classe zimbraMailQuota 83886080
Checar se a quota foi alterada
zmprov gc nome_da_classe zimbraMailQuota
Para ver a quota de cada usuario, voce pode usar o comando:
for i in $(zmprov -l gaa); do zmprov ga $i zimbraMailQuota; done
Conectividade
Ativar somente o acesso http:
zmtlsctl http ; zmcontrol restart
Ativar somente o acesso https:
zmtlsctl https ; zmcontrol restart
Ativa o acesso http e https:
zmtlsctl mixed ; zmcontrol restart
Logs[editar | editar código-fonte]
Pastas de logs do zimbra
/var/zimbra/log/audit.log
ou
/var/zimbra/log/zimbra.log
ou
/opt/zimbra/log/mailbox.log
Ubuntu e Debian
/var/zimbra/log/mail.log
CentOS
/var/zimbra/log/maillog
Para Logs de entrega de email na caixa (LMTP) Login e Logout Imap/Pop/Mapi, Erros na aplicação java, operações de indexação, lentidão no banco de dados (slow queries) e outros
tail -f /opt/zimbra/log/mailbox.log
Logs de atividade do postfix, status dos serviços, atividades do antivirus e antispam e outros:
tail -f /opt/zimbra/log/zimbra.log
Logs de autenticação:
tail -f /opt/zimbra/log/audit.log
Logs do antivirus db:
tail -f /opt/zimbra/log/clamd.log
Logs de atualizaçao do Antivirus Clamav
tail -f /opt/zimbra/log/freshclam.log
Logs ao DB do store que estão demorando
tail -f /opt/zimbra/log/myslow.log
Logs de treinamento do Antispam
tail -f /opt/zimbra/log/spamtrain.log
Tipos de status de conta[editar | editar código-fonte]
Para obter o status de uma conta:
zmprov ga [email protected] | grep -i zimbraaccountstatus
Alterar o status da conta do usuário <[email protected]> para ativo:
zmprov ma [email protected] zimbraaccountstatus active
Lembrando que a função zimbraAccountStatus aceita como argumento os seguintes valores:
- active ou Ativa: Ativo é o estado normal para uma conta de caixa de correio. As mensagens são entregues e os usuários podem fazer logon na interface cliente normalmente.
- maintenance ou Manutenção: Quando um estado de caixa de correio está definido para a manutenção, o login é desativado , e e-mails endereçados para a conta são enfileirados no MTA (Postfix). Uma conta pode ser configurada para o modo de manutenção para fazer o backup , importação ou restaurar a caixa de correio.
- pending ou Pendente: Status pendente é um status que pode ser atribuído quando uma nova conta é criada e ainda não está pronto para se tornar ativa . O login é desativado e as mensagens são devolvidas aos remetentes.
- locked ou Bloqueada: Quando um status de uma conta é ‘bloqueado’, o usuário não pode entrar, mas as mensagens ainda são entregues a caixa. O status bloqueado pode ser definido, se você suspeitar que uma conta de email foi hackeada ou está sendo usado de forma não autorizada.
- closed ou Fechada: Quando o status do usuário é ‘fechado’, o login é desativado, e as mensagens são devolvidas . Este status é utilizado para inativar uma conta antes de excluir a mesma do servidor. A conta fechada não deixa de consumir uma licença.
- Bloqueio: Isso é definido automaticamente quando os usuários que tentam logar, não digitam sua senha correta e tem, então, sua conta bloqueada temporariamente. Você não pode definir esse status manualmente. Você configura uma política de login com um determinado número de tentativas de login falhas consecutivas que são permitidos antes que a conta seja bloqueada. Quanto tempo a conta é bloqueada é definido pelo COS ou configuração de conta, mas você pode alterar o status de bloqueio a qualquer momento.
Listas de Distribuição[editar | editar código-fonte]
Mostrar as listas existentes
zmprov gadl
Ver todas as informações de uma lista
zmprov gdl [email protected]
Para criar uma lista
zmprov cdl [email protected]
Renomear uma lista de distribuição
zmprov rdl [email protected] [email protected]
Exclui uma lista
zmprov ddl [email protected]
Exibir uma lista de distribuição da GAL
zmprov mdl [email protected] zimbraHideInGal FALSE
Ocultar uma lista de distribuição da GAL
zmprov mdl [email protected] zimbraHideInGal TRUE
Retorna todas as listas de distribuição
zmprov -l gadl dominio.com.br
USUÁRIOS E MEMBROS
Adicionar membros à lista de distribuição
zmprov adlm [email protected] [email protected]
Adicionar um usuario (<[email protected]>) a todas as listas de distribuição
for listas in $(zmprov gadl); do zmprov adlm $listas [email protected]; done
Visualizar membros de uma lista
zmprov gdlm [email protected]
Remover membro de uma lista
zmprov rdlm [email protected] [email protected]
PERMISSÕES
VERIFICAR PERMISSÕES de uma lista especifica
zmprov gg -t dl [email protected]
Permissões de ENVIO PARA A LISTA
Utiliza-se sempre a instrução "sendToDistList" ao fim do comando.
Permitir envio
zmprov grr dl [email protected] usr [email protected] sendToDistList
Concede permissão de envio para um usuario
zmprov grr dl [email protected] usr [email protected] sendToDistList
Concessão de permissão de envio para um grupo - grp
zmprov grr dl [email protected] grp [email protected] sendToDistList
Concessão depermissão de envio para um domínio - dom
zmprov grr dl [email protected] dom test.com sendToDistList
Concessão de permissão de envio para todos os usuários (internos) - all
zmprov grr dl [email protected] all sendToDistList
Concessão para todos os usuários (internos e externos) - pub
zmprov grr dl [email protected] pub sendToDistList
Remover permissão
Para remover a permissão utiliza-se o parâmetro "zmprov rvr dl" em qualquer um dos casos de permissão listados acima
zmprov rvr dl [email protected] usr [email protected] sendToDistList
Lista pública
Toda lista quando criada, já tem o status de "pública" até que se atribua alguém com essa permissão. Para torná-la pública, depois de algupem já ter sido autorizado, basta retirar todas as contas com permissão e ela voltará a ter o status de pública onde qualquer pessoa poderá enviar mensagens para ela.
Lista dinâmica
A lista dinâmica se caracteriza por contar todos os usuarios ativos de um dominio ou grupo específico.
zmprov cddl nome_da_lista
VERIFICA se um usuario é INTEGRANTE da lista
zmprov ckr dl [email protected] [email protected] sendToDistList
CONSULTAR a lista
zmprov gdlm [email protected] | grep [email protected]
PERMISSÕES DE ENVIO EM NOME DA LISTA
Para as autorizações de envio EM NOME DA LISTA usamos ao final o parâmetro "sendAsDistList"
Conceder permissão para que um determinado usuário possa enviar EM NOME DA LSITA
zmprov grr dl [email protected] usr [email protected] sendAsDistList
Concessão permissão de envio para um grupo - grp
zmprov grr dl [email protected] grp [email protected] sendAsDistList
Concessão permissão de envio para um domínio - dom
zmprov grr dl [email protected] dom test.com sendAsDistList
Concessão permissão de envio para todos os usuários (internos) - all
zmprov grr dl [email protected] all sendAsDistList
Concessão de permissão de envio para todos os usuários (internos e externos) - pub
zmprov grr dl [email protected] pub sendAsDistList
Lista geral de comandos e parâmetros
- ddAccountAlias(aaa) {name@domain|id} {alias@domain}
- addAccountLogger(aal) [-s/--server hostname] {name@domain|id} {logging-category} {trace|debug|info|warn|error}
- addDistributionListAlias(adla) {list@domain|id} {alias@domain}
- addDistributionListMember(adlm) {list@domain|id} {member@domain}+
- autoCompleteGal(acg) {domain} {name}
- autoProvControl(apc) {start|status|stop}
- checkPasswordStrength(cps) {name@domain|id} {password}
- checkRight(ckr) {target-type} [{target-id|target-name}] {grantee-id|grantee-name (note:can only check internal user)} {right}
- copyCos(cpc) {src-cos-name|id} {dest-cos-name}
- countAccount(cta) {domain|id}
- countObjects(cto) {userAccount|account|alias|dl|domain|cos|server|calresource|accountOnUCService|cosOnUCService|domainOnUCService|internalUserAccount|internalArchivingAccount|internalUserAccountX} [-d {domain|id}] [-u {UCService|id}]
- createAccount(ca) {name@domain} {password} [attr1 value1 [attr2 value2...]]
- createAliasDomain(cad) {alias-domain-name} {local-domain-name|id} [attr1 value1 [attr2 value2...]]
- createAlwaysOnCluster(caoc) {name} [attr1 value1 [attr2 value2...]]
- createBulkAccounts(cabulk) {domain} {namemask} {number of accounts to create}
- createCalendarResource(ccr) {name@domain} {password} [attr1 value1 [attr2 value2...]]
- createCos(cc) {name} [attr1 value1 [attr2 value2...]]
- createDataSource(cds) {name@domain} {ds-type} {ds-name} zimbraDataSourceEnabled {TRUE|FALSE} zimbraDataSourceFolderId {folder-id} [attr1 value1 [attr2 value2...]]
- createDistributionList(cdl) {list@domain}
- createDynamicDistributionList(cddl) {list@domain}
- createDomain(cd) {domain} [attr1 value1 [attr2 value2...]]
- createServer(cs) {name} [attr1 value1 [attr2 value2...]]
- createUCService(cucs) {name} [attr1 value1 [attr2 value2...]]
- createIdentity(cid) {name@domain} {identity-name} [attr1 value1 [attr2 value2...]]
- createSignature(csig) {name@domain} {signature-name} [attr1 value1 [attr2 value2...]]
- createXMPPComponent(cxc) {short-name} {domain} {server} {classname} {category} {type} [attr value1 [attr2 value2...]]
- deleteAccount(da) {name@domain|id}
- deleteAlwaysOnCluster(daoc) {name|id}
- deleteCalendarResource(dcr) {name@domain|id}
- deleteCos(dc) {name|id}
- deleteDataSource(dds) {name@domain|id} {ds-name|ds-id}
- deleteDistributionList(ddl) {list@domain|id} [true|false]
- deleteDomain(dd) {domain|id}
- deleteIdentity(did) {name@domain|id} {identity-name}
- deleteSignature(dsig) {name@domain|id} {signature-name}
- deleteServer(ds) {name|id}
- deleteUCService(ducs) {name|id}
- deleteXMPPComponent(dxc) {xmpp-component-name}
- describe(desc) [[-v] [-ni] [{entry-type}]] | [-a {attribute-name}]
- exit(quit)
- flushCache(fc) [-a] {acl|locale|skin|uistrings|license|all|account|config|globalgrant|cos|domain|galgroup|group|mime|server|alwaysOnCluster|zimlet|<extension-cache-type>} [name1|id1 [name2|id2...]]
- generateDomainPreAuth(gdpa) {domain|id} {name|id|foreignPrincipal} {by} {timestamp|0} {expires|0}
- generateDomainPreAuthKey(gdpak) [-f] {domain|id}
- getAccount(ga) [-e] {name@domain|id} [attr1 [attr2...]]
- getAlwaysOnCluster(gaoc) {name|id} [attr1 [attr2...]]
- getDataSources(gds) {name@domain|id} [arg1 [arg2...]]
- getIdentities(gid) {name@domain|id} [arg1 [arg...]]
- getSignatures(gsig) {name@domain|id} [arg1 [arg...]]
- getAccountMembership(gam) {name@domain|id}
- getAllAccounts(gaa) [-v] [-e] [-s server] [{domain}] -- NOTE: getAllAccounts can only be used with "zmprov -l/--ldap"
- getAccountLoggers(gal) [-s/--server hostname] {name@domain|id}
- getAllActiveServers(gaas) [-v]
- getAllAccountLoggers(gaal) [-s/--server hostname]
- getAllAdminAccounts(gaaa) [-v] [-e] [attr1 [attr2...]]
- getAllAlwaysOnClusters(gaaoc) [-v]
- getAllCalendarResources(gacr) [-v] [-e] [-s server] [{domain}]
- getAllConfig(gacf) [attr1 [attr2...]]
- getAllCos(gac) [-v]
- getAllDistributionLists(gadl) [-v] [{domain}]
- getAllDomains(gad) [-v] [-e] [attr1 [attr2...]]
- getAllEffectiveRights(gaer) {grantee-type} {grantee-id|grantee-name} [expandSetAttrs] [expandGetAttrs]
- getAllFbp(gafbp) [-v]
- getAllRights(gar) [-v] [-t {target-type}] [-c ALL|ADMIN|USER]
- getAllServers(gas) [-v] [-e] [service]
- getAllUCServices(gaucs) [-v]
- getAllXMPPComponents(gaxcs)
- getAuthTokenInfo(gati) {auth-token}
- getCalendarResource(gcr) {name@domain|id} [attr1 [attr2...]]
- getConfig(gcf) {name}
- getCos(gc) {name|id} [attr1 [attr2...]]
- getDistributionList(gdl) {list@domain|id} [attr1 [attr2...]]
- getDistributionListMembership(gdlm) {name@domain|id}
- getDomain(gd) [-e] {domain|id} [attr1 [attr2...]]
- getDomainInfo(gdi) name|id|virtualHostname {value} [attr1 [attr2...]]
- getConfigSMIMEConfig(gcsc) [configName]
- getDomainSMIMEConfig(gdsc) name|id [configName]
- getEffectiveRights(ger) {target-type} [{target-id|target-name}] {grantee-id|grantee-name} [expandSetAttrs] [expandGetAttrs]
- getCreateObjectAttrs(gcoa) {target-type} {domain-id|domain-name} {cos-id|cos-name} {grantee-id|grantee-name}
- getFreebusyQueueInfo(gfbqi) [{provider-name}]
- getGrants(gg) [-t {target-type} [{target-id|target-name}]] [-g {grantee-type} {grantee-id|grantee-name} [{0|1 (whether to include grants granted to groups the grantee belongs)}]]
- getMailboxInfo(gmi) {account}
- getQuotaUsage(gqu) {server}
- getRight(gr) {right} [-e] (whether to expand combo rights recursively)
- getRightsDoc(grd) [java packages]
- getServer(gs) [-e] {name|id} [attr1 [attr2...]]
- getUCService(gucs) [-e] {name|id} [attr1 [attr2...]]
- getShareInfo(gsi) {owner-name|owner-id}
- getSpnegoDomain(gsd)
- getXMPPComponent(gxc) {name|id} [attr1 [attr2...]]
- grantRight(grr) {target-type} [{target-id|target-name}] {grantee-type} [{grantee-id|grantee-name} [secret]] {right}
- help(?) commands
- modifyAccount(ma) {name@domain|id} [attr1 value1 [attr2 value2...]]
- modifyAlwaysOnCluster(maoc) {name|id} [attr1 value1 [attr2 value2...]]
- modifyCalendarResource(mcr) {name@domain|id} [attr1 value1 [attr2 value2...]]
- modifyConfig(mcf) attr1 value1 [attr2 value2...]
- modifyCos(mc) {name|id} [attr1 value1 [attr2 value2...]]
- modifyDataSource(mds) {name@domain|id} {ds-name|ds-id} [attr1 value1 [attr2 value2...]]
- modifyDistributionList(mdl) {list@domain|id} attr1 value1 [attr2 value2...]
- modifyDomain(md) {domain|id} [attr1 value1 [attr2 value2...]]
- modifyConfigSMIMEConfig(mcsc) configName [attr2 value2...]]
- modifyDomainSMIMEConfig(mdsc) name|id configName [attr2 value2...]]
- modifyIdentity(mid) {name@domain|id} {identity-name} [attr1 value1 [attr2 value2...]]
- modifySignature(msig) {name@domain|id} {signature-name|signature-id} [attr1 value1 [attr2 value2...]]
- modifyServer(ms) {name|id} [attr1 value1 [attr2 value2...]]
- modifyUCService(mucs) {name|id} [attr1 value1 [attr2 value2...]]
- modifyXMPPComponent(mxc) {name@domain} [attr1 value1 [attr value2...]]
- pushFreebusy(pfb) [account-id ...]
- pushFreebusyDomain(pfbd) {domain}
- purgeAccountCalendarCache(pacc) {name@domain|id} [...]
- purgeFreebusyQueue(pfbq) [{provider-name}]
- recalculateMailboxCounts(rmc) {name@domain|id}
- removeAccountAlias(raa) {name@domain|id} {alias@domain}
- removeAccountLogger(ral) [-s/--server hostname] [{name@domain|id}] [{logging-category}]
- removeDistributionListAlias(rdla) {list@domain|id} {alias@domain}
- removeDistributionListMember(rdlm) {list@domain|id} {member@domain}
- removeConfigSMIMEConfig(rcsc) configName
- removeDomainSMIMEConfig(rdsc) name|id configName
- renameAccount(ra) {name@domain|id} {newName@domain}
- changePrimaryEmail(cpe) {name@domain|id} {newName@domain}
- renameCalendarResource(rcr) {name@domain|id} {newName@domain}
- renameCos(rc) {name|id} {newName}
- renameDistributionList(rdl) {list@domain|id} {newName@domain}
- renameDomain(rd) {domain|id} {newDomain} -- NOTE: renameDomain can only be used with "zmprov -l/--ldap"
- renameUCService(rucs) {name|id} {newName}
- reIndexMailbox(rim) {name@domain|id} {start|status|cancel} [{types|ids} {type or id} [,type or id...]]
- compactIndexMailbox(cim) {name@domain|id} {start|status}
- verifyIndex(vi) {name@domain|id}
- getIndexStats(gis) {name@domain|id}
- revokeRight(rvr) {target-type} [{target-id|target-name}] {grantee-type} [{grantee-id|grantee-name}] {right}
- searchAccounts(sa) [-v] {ldap-query} [limit {limit}] [offset {offset}] [sortBy {attr}] [sortAscending 0|1*] [domain {domain}]
- searchCalendarResources(scr) [-v] domain attr op value [attr op value...] -- NOTE: searchCalendarResources can only be used with "zmprov -l/--ldap"
- searchGal(sg) {domain} {name} [limit {limit}] [offset {offset}] [sortBy {attr}]
- setLocalServerOnline(slso)
- selectMailbox(sm) {account-name} [{zmmailbox commands}]
- setAccountCos(sac) {name@domain|id} {cos-name|cos-id}
- setPassword(sp) {name@domain|id} {password}
- setServerOffline(sso) {name|id}
- getAllMtaAuthURLs(gamau)
- getAllReverseProxyURLs(garpu)
- getAllReverseProxyBackends(garpb)
- getAllReverseProxyDomains(garpd) -- NOTE: getAllReverseProxyDomains can only be used with "zmprov -l/--ldap"
- getAllMemcachedServers(gamcs)
- reloadMemcachedClientConfig(rmcc) all | mailbox-server [...]
- getMemcachedClientConfig(gmcc) all | mailbox-server [...]
- syncGal(syg) {domain} [{token}]
- updatePresenceSessionId(upsid) {UC service name or id} {app-username} {app-password}
- resetAllLoggers(rlog) [-s/--server hostname]
- unlockMailbox(ulm) {name@domain|id} [hostname (When unlocking a mailbox after a failed move attempt provide the hostname of the server that was the target for the failed move. Otherwise, do not include hostname parameter)]
- createHABOrgUnit(chou) {domain} {ouName}
- listHABOrgUnit(lhou) {domain}
- renameHABOrgUnit(rhou) {domain} {ouName} {newName}
- deleteHABOrgUnit(dhou) {domain} {ouName}
- createHABGroup(chg) {groupName} {ouName} {name@domain} {TRUE|FALSE} [attr1 value1 [attr2 value2...]]
- getHAB(ghab) {habRootGrpId}
- moveHABGroup(mhg) {habRootGrpId} {habParentGrpId} {targetHabParentGrpId}
- addHABGroupMember(ahgm) {name@domain|id} {member@domain}+
- removeHABGroupMember(rhgm) {name@domain|id} {member@domain}
- deleteHABGroup(dhg) {name@domain|id} [true|false]
- modifyHABGroupSeniority(mhgs) {habGrpId} {seniorityIndex}
- getHABGroupMembers(ghgm) {name@domain|id}
Conta no-reply[editar | editar código-fonte]
Crie a conta
zmprov ca [email protected] senha
Troque "senha" pela senha que a conta terá
Para rejeitar envios:
zmprov mcf +zimbraMtaRestriction "reject_recipient [email protected]"
Restart o MTA
zmmtactl restart
Para verificar se os serviços estão rodando
zmcontrol status
Criando uma regra que descarte qualquer mensagem enviada para a conta.
zmprov ma [email protected] zimbraMailSieveScript 'require ["fileinto", "reject"]; discard;'
Cria uma resposta automática para uma aventual resposta.
zmprov ma [email protected] zimbraMailSieveScript 'require ["reject"]; reject "Este endereço não aceita respostas.";'
Gerar listagem[editar | editar código-fonte]
Script[editar | editar código-fonte]
Antes de iniciar, devemos conferir a lista do zmaccts
pois a saída do comando tem uma limitação de caracteres na coluna dos endereços. (su zimbra)
zmaccts | awk '{print $1}'
Verifique se não está faltando nenhum caracter nos endereços. Caso precise fazer o ajuste (sudo su) no arquivo /opt/zimbra/bin/zmaccts.
Cópia de segurança
cp /opt/zimbra/bin/zmaccts2
Abra o arquivo para edição
vim /opt/zimbra/bin/zmaccts
Edite o parâmetro em negrito abaixo dos 36 (padrão) para a quantidade que seja necessária (sudo su)
# column whidths and separators my @w = ( 36, 11, 15, 15)
Após esse ajuste, pode iniciar a criação do script
Crie os arquivos necessários.
touch /home/mboxes.list chmod 777 /home/mboxes.list chown zimbra:zimbra /home/mboxes.list touch /home/mboxsize.txt chmod 777 /home/mboxsize.txt chown zimbra:zimbra /home/mboxsize.txt
Crie o arquivo do script
vim /home/detalhes_conta.sh
Cole as instruções abaixo no conteúdo do script
#!/bin/bash ################################### ##### Atribuição de variáveis ##### CLIENTE="zmhostname" REMETENTE=" " DESTINATARIO=" " SMTP=" :587" USUARIO=" " SENHA=" " LOGFILE="/home/mboxsize.txt" ################################### ############################# ##### INICIO ##### zmprov -l gaa > /home/mboxes.list # Exporta a lista de todas as contas e Listas de Distribuição para o arquivo /home/mboxes.list date > /home/mboxsize.txt # Insere a data no arquivo echo ", CONTA , STATUS , DATA DE CRIAÇÃO , ÚLTIMO LOGIN, TAMANHO, DESCRIÇÃO, CONTA ADMIN, ENCAMINHAMENTOS, COMPARTILHAMENTOS" >> /home/mboxsize.txt # Insere o cabeçalhos da lista for mb in $(cat "/home/mboxes.list"); do echo "| CONTA: $mb" # Coleta o nome da conta # Coleta e escreve a descrição da conta descricao_conta="$(zmprov ga "$mb" description | grep description | awk -F 'description:' '{print $2}')"; echo "| DESCRIÇÃO: $descricao_conta" # Coleta o user da conta # mb2="$(echo "$mb" |awk -F\@ '{print $1}')" # Coleta e escreve o status da conta status="$(zmaccts | sort | awk '{print ",",$1,","$2,","$3,","$5}' | grep ", $mb")" echo "| STATUS: $status" # Coleta e escreve o tamanho em disco da conta msize="$(zmmailbox -z -m "$mb" gms)"; echo "| TAMANHO: $msize" # Verifica se a conta é Admin ou não isAdmin="$(zmprov GetAccount "$mb" | grep "zimbraIsAdminAccount:" | awk '{print $2}')" echo "| ADMINISTRADOR: $isAdmin" # Coletar e escreve os encaminhamentos de cada conta encaminha_conta="$(zmprov ga "$mb" zimbraPrefMailForwardingAddress |grep -v '#')" echo "| ENCAMINHAMENTOS: $encaminha_conta" # Coleta os compartilhamentos da conta share_conta="$(zmprov ga "$mb" zimbraSharedItem | cut -d ';' -f 2,6,9 | grep -v '#' | tr '\n' ' ' | sed 's/granteeName/ Nome/g' | sed 's/folderPath/ Local/g' | sed 's/type/ Tipo/g')" echo "| COMPARTILHAMENTOS: $share_conta" # Escreve os cabeçalhos da lista echo "$status ,$msize ,$descricao_conta ,$isAdmin ,$encaminha_conta ,$share_conta" >> /home/mboxsize.txt echo "$status ,$msize ,$descricao_conta ,$isAdmin ,$encaminha_conta ,$share_conta" echo " " done echo "Completed" ##### ENVIA O E-MAIL ##### /usr/bin/sendemail -f $REMETENTE -t $DESTINATARIO -u "$CLIENTE - Listagem Contas" -m "Segue log em anexo." -o tls=no -a "$LOGFILE" -s $SMTP -xu $USUARIO -xp $SENHA ##########################
Atribua permissões ao script
chmod +x /home/detalhes_conta.sh chown zimbra:zimbra /home/detalhes_conta.sh
Rodar script (lembre de estar no mesmo diretório do arquivo e de estar como usuario zimbra - su zimbra)
nohup ./detalhes_conta.sh &
Para acompanhar o andamento:
tail -f /home/mboxsize.txt
depois do script concluir a rotina va em /home/mboxsize.txt para copiar as informações
cat /home/mboxsize.txt