Zimbra Herramientas de Consola

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Manual de Zimbra Open Source edition v 6.

0 1

Laboratorio 6

Herramientas de Consola de Zimbra y Migración

The table below lists the CLI commands in /opt/zimbra/bin.

Table 1 zimbra CLI Commands


CLI Description
ldap Start, stop, or find the status of zimbra LDAP
ldapsearch Perform a search on an LDAP server
logmysqladmin Send myslqadmin commands to the logger mysql
mailboxd Start, stop, find the status of the mailboxd server
Enters interactive command-line MySQL session with the mailbox
mysql mysql
mysql.server Start, stop the SQL instance for the mailboxpackage
mysqladmin Send admin commands to MySQL
postconf Postfix command to view or modify the postfixconfiguration
postfix Start, stop, reload, flush, check, upgrade-configuration of postfix
qshape Examine postfix queue in relation to time andsender/recipient domain
zmaccts Lists the accounts and gives the status ofaccounts on the domain
zmamavisdctl Start, stop, restart, or find the status of theAmavis-D New
zmantispamctl Start, stop, reload, status for anti-spam service
zmantivirusctl Start, stop, reload, status for the anti-virus service
zmapachectl Start, stop, reload, or check status of Apacheservice (for spell check)
zmarchive config Command to view, modify, or configure archiving
zmarchivectl Start, stop, reload, status for archiving
zmarchivesearch Search archives on the account
zmauditswatchctl Start, stop, restart, reload, status of theauditswatch
Performs full backups and incremental backupsfor a designated mail
zmbackup host.
zmbackupabort Stops a backup that is in process.
zmbackupquery Find a specific full backup set
zmblobchk Check consistency of the Zimbra blob store
Check consistency of appointments andattendees in the Zimbra
zmcalchk calendar
zmcertmgr Manage self-signed and commercial certificates
zmclamdctl Start, stop, or find the status of Clam AV

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 2

Clean iPlanet ICS calendar files


zmcleaniplanetics
zmcontrol (Start/Stop Start, stop, status of the Zimbra servers. Also can use to find the
Service) Zimbra version installed.
Start, stop, the conversion server or find thestatus of the converted
zmconvertctl attachments conversion/indexing
zmdumpenv General information about the serverenvironment is displayed
zmgsautil Create, delete the GAL sync account and initiate manual syncs.
zmhostname Find the hostname of the Zimbra server
zmhsm Start, stop and status of a HSM session.
zmitemdatafile Extracts and packs tgz files that ZCS uses forREST import/export
zmjava Execute Java with Zimbra-specific environmentsettings
zmldappasswd Changes the LDAP password
zmlicense View and install your Zimbra license
zmlmtpinject Testing tool
zmlocalconfig Used to set or get the local configuration of aZimbra server
zmloggerctl Start, stop, reload, or find the status of the Zimbra logger service
zmloggerhostmap Used to manually map a DNS hostname to azmhostname.
zmlogswatchctl Start, stop, status of the swatch that is monitoring logging
zmmailbox Performs mailbox management tasks
Start, stop, reload, or find the status of themailbox components
zmmailboxdctl (mailboxd, MySQL, convert)
zmmailboxmove (Move Used to move selected mailboxes from oneZimbra server to another.
Mailbox)
zmmboxsearch (Cross Search across mailboxes to find messages andattachments
Mailbox Search)
zmmetadump Support tool that dumps an item’s metadata in ahuman-readable form
zmmtaconfigctl Start, stop, or find the status of the MTAconfiguration daemon
zmmtactl Start, stop, or find the status of the MTA
zmmypasswd Trace messages
zmmypasswd Change MySQL passwords
zmmysqlstatus Status of mailbox SQL instance
zmperditionctl Start, stop, or find the status of the perdition IMAP proxy
Performs data restore using backed upsnapshots taken periodically.
zmplayredo Users who use snapshots to backup and restore their information from
a standby site use this command.
Performs all provisioning tasks in Zimbra LDAP,including creating
zmprov (Provisioning) accounts, domains, distribution lists and aliases
zmproxyconfgen Generates configuration for the nginx proxy

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 3

zmproxyctl Start, stop, restart, and find the status of the IMAP proxy service
Purges POP/IMAP routing information from oneor more memcached
zmproxypurge servers
Ability to write Python scripts that access Zimbra Java libraries. It sets
zmpython the ZCS class path and starts the Jython interpreter.
Support tool for dumping contents of a redologfile for debugging
zmredodump purposes
Performs full restores and incremental restoresfor a designated mail
zmrestore host
zmrestoreldap Restore accounts from the LDAP backup
zmrestoreoffline (Offline Performs full restore when the Zimbra server (i.e., the mailboxd
Restore) process) is down
zmsaslauthdctl Start, stop, or find the status of saslauthd(authentication)
zmschedulebackup Schedule backups and add the command to your cron table
zmshutil Used for other zm scripts, do not use
zmskindeploy Deploy skins for accounts from the command line
zmsoap Print mail, account, and admin information in the SOAP format
zmspellctl Start, stop, or find the status of the spell checkserver
zmsshkeygen Generate Zimbra’s SSH encryption keys
zmstat-chart Generate charts from zmstat data collected in adirectory
zmstat-chart-config Generate an .xml file with data included from the account setup
Outputs an XML configuration that describes the current state of the
zmstat-chart-config data gathered from zmstat-chart to generate charts on the
administration console.
zmstatctl Start, stop, check status, or rotate logs of zmstat data collectors
zmstorectl Start, stop, or find the status of Zimbra storeservices
Start, stop, or find the status of the Swatchprocess, which is used in
zmswatchctl monitoring
zmsyslogsetup Used to setup system log config file
zmthrdump Initiate a thread dump and save the data to a filewith a timestamp
Set the Web server mode to the communication protocol options:
zmtlsctl HTTP, HTTPS or mixed
zmtrainsa Used to train the anti-spam filter to recognizewhat is spam or ham
Provides mechanism to process timezonechanges from the command
zmtzupdate line
zmupdateauthkeys Used to fetch the ssh encryption keys created by zmsshkeygen
zmvolume Manage storage volumes on your Zimbra Mailbox server
zmzimletctl Deploy and configure Zimlets

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 4

6.1. Ejemplos de Herramientas de consola


Loguearse primero como usuario zimbra
$> su - zimbra

6.11.- Comandos Generales

Dominios hospedados en el servidor


$> zmprov gad

Todas las cuentas del servidor


$> zmprov -l gaa

Cuentas de un dominio específico


$> zmprov -l gaa dominio.com

Detalle de cuentas de un dominio especifico


$> zmprov -l gaa -v dominio.com

Detalle de cuentas de un dominio especifico con Cuenta y Nombre


$> zmprov gaa -v dominio.com | grep -e zimbraMailDeliveryAddress -e displayName | sed
's/zimbraMailDeliveryAddress/Cuenta/' | sed 's/displayName/Nombre/'

5.1.2.- Cuentas

Detalle de una cuenta


$> zmprov ga [email protected]

Buscar parámetro en detalle de la cuenta


$> zmprov ga [email protected] | grep -i Parametro

Modificar parámetro en cuenta


$> zmprov ma [email protected] Parametro NuevoValor

Buscar todas las cuentas de Administradores


$> zmprov gaaa

Cambiar password de una cuenta


$> zmprov sp [email protected] nuevopassword

Agregar/Quitar alias a una cuenta


$> zmprov aaa [email protected] [email protected]
$> zmprov raa [email protected] [email protected]

Buscar cuentas que coincidan por parámetro


$> zmprov sa parametro=cadena

Buscar en cuales listas se encuentra una cuenta

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 5

$> zmprov gam [email protected]

Crear una cuenta (todo en una sola línea)


$> zmprov ca [email protected] nnnnabcd cn 'Nombre(s) ApMaterno ApPaterno' company
idempresa displayName 'Nombre(s) ApMaterno ApPaterno' givenName 'Nombre(s)' zimbraCOSId
b67c3c57-f750-4726-9723-9b9dd1a3d86e zimbraMailQuota 52428800

nnnnabcd es el password y el COSId es el id del COS que se obtiene con el comando:


$> zmprov gac -v

Crear varios forwardings a la vez:


$> zmprov ma [email protected] zimbraMailForwardingAddress [email protected]
zimbraMailForwardingAddress [email protected]

Cuenta con su quota en una sola linea


$> zmprov gaa -v dominio.com | grep -e zimbraMailQuota -e zimbraMailDeliveryAddress | sed
's/zimbraMailQuota: //' | sed 's/zimbraMailDeliveryAddress: //' | sed '$!N;s/\n/ /'

Cuentas con nombre y correo en una sola linea


$> zmprov -l gaa -v dominio.com | grep -i -e cn -e MailDeliveryAddress | egrep "^cn|^zimbra" | grep
-v "zimbraPrefMailSignatureHTM" | sed 'N;s/\n/ /' | sed -e 's/cn: //g' -e
's/zimbraMailDeliveryAddress//'

Borrar una cuenta


$> zmprov da [email protected]

6.1.3.- Listas

Buscar todas las listas, y por dominio


$> zmprov gadl
$> zmprov gadl dominio.com

Crear una lista


$> zmprov cdl [email protected]

Ver una lista específica


$> zmprov gdl [email protected]

Encontrar todas las listas de un dominio y sus miembros


$> for i in $( zmprov gadl dominio.com | grep -v abuse | grep -v postmaster | sort ) ; do echo
`zmprov gdl $i | grep -e 'mail: ' -e 'zimbraMailForwardingAddress: ' | sed 's/mail/Lista/' | sed
's/zimbraMailForwardingAddress: //'` ; done ;

agregar un miembro a la lista


$> zmprov adlm [email protected] [email protected]

Remover un miembro de la lista


$> zmprov rdlm [email protected] [email protected]
Borrar una lista
$ zmprov ddl [email protected]

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 6

6.1.4.- Buzones

Ver tamaño ocupado del buzón


$> zmmailbox -z -m [email protected] gms

Revisar mensajes por carpetas en el buzón


$> zmmailbox -z -m [email protected] gaf

Borrar una carpeta completa de un buzón


$> zmmailbox -z -m [email protected] emptyFolder Junk

6.1.5.- Búsquedas

Buscar envio de usuario


$> grep 'from=<[email protected]' /var/log/zimbra.log

Buscar por ID de mensaje


$> grep 6EC0F1E1015F /var/log/zimbra.log

Buscar envío de usuario a otra cuenta


$> grep '[email protected]> -> .*[email protected]' /var/log/zimbra.log

Buscar por destinatario


$> grep '> ->.*[email protected]' /var/log/zimbra.log

6.1.6.- Búsquedas de Spam


Buscar dominio cuenta en whitelist y ver postfix headers
$> grep 'dominio.com' ~zimbra/conf/salocal.cf.in
$> grep '[email protected]' ~zimbra/conf/salocal.cf.in
$> cat ~zimbra/conf/postfix_header_checks.in

Revisar build de base de datos de antispam y postfix


$> ls -ltr ~zimbra/conf/salocal.cf*
$> ls -ltr ~zimbra/conf/postfix_header_checks*

Revisar bloqueos
$> grep -i -e blocked -e policy /var/log/zimbra.log
$> tail -1000f /var/log/zimbra.log | grep -i -e blocked -e policy

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 7

6.1.7.- Gestion de Colas de Correo


Ver la cola actual de Correos
$> mailq

Reenviar la cola actual


$> postsuper -r ALL
$> postqueue -f

Borrar todos los correos de la cola actual


$> postsuper -d ALL

Borrar correos específicos de la cola de correo


$> su -
$> vim /usr/bin/borracola
#!/usr/bin/perl

$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";

@data = qx</opt/zimbra/postfix/sbin/postqueue -p>;


for (@data) {
if (/^(\w+)(\*|\!)?\s/) {
$queue_id = $1;
}
if($queue_id) {
if (/$REGEXP/i) {
$Q{$queue_id} = 1;
$queue_id = "";
}
}
}

#open(POSTSUPER,"|cat") || die "couldn't open postsuper" ;


open(POSTSUPER,"|/opt/zimbra/postfix/sbin/postsuper -d -") || die "couldn't open postsuper" ;

foreach (keys %Q) {


print POSTSUPER "$_\n";
};
close(POSTSUPER);

$> chmod 777 /usr/bin/borracola


$> su - zimbra

Borrar todos los correos de pepito que están en la cola


$> borracola pepito

Borrar todos los correos del dominio spammers.info


$> borracola spammers.info

Borrar todos los correos que tienen estado Connection time out
$> borracola “Connection time out”

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 8

6.2. Migración

Para migrar desde un servidor de correo existente se tener en cuenta las siguientes
recomendaciones.

– Instalar Zimbra en un nuevo servidor (físico o virtual), de esta forma no se afecta el servicio
y si la migración es muy pesada, puede seguir en producción el servidor antiguo hasta que
se termine de migrar y pase a producción el nuevo servidor.
– Crear primero los COS y luego crear los usuarios con sus respectivos COS.
– Usar para la migración de usuarios scripts que permitan la creación masiva de usuarios.
– Si el servidor antiguo tenía contraseñas shadow, se pueden preservar estas contraseñas,
si no habrá que crear nuevas claves.
– En la creación de nuevas claves NO USAR contraseñas débiles porque se exponen a ser
crakeadas por bots.
– Migrar las capetas de correo del servidor y de las estaciones que tienen los correos
descargados.
– Migrar los contactos exportando a archivos texto e importándolos con curl.

6.3.- Migración de Cuentas de Usuario

para crear usuarios en forma efectiva necesitamos un script que lea los valores de cuenta de
usuario (usuario@dominio), contraseña única (no debe ser débil), nombre común (Nombre y
Apellido) y COS

$> su -
$> mkdir /scripts
$> cd /scripts
$> vim cuentas.txt
[email protected],alumno,Pepito Linuxero,default
[email protected],alumno,Linuxero Destroyer,gerentes

$> vim crear_cuentas


#!/usr/bin/php
<?php
// Obteniendo los COS del sistema y sus Ids
exec("/opt/zimbra/bin/zmprov gac",$arrcos);
$cos = array();
foreach($arrcos as $cos_name){
$cos_name = chop ($cos_name);
$cosid=`/opt/zimbra/bin/zmprov gc $cos_name | grep ^zimbraId:`;
$cosid = trim(str_replace("zimbraId: ","",$cosid));
$cos[$cos_name]=$cosid;
}
//print_r($cos);

// Leyendo los archivos de Usuarios


$userfile=file("cuentas.txt");

// Recorriendo array de usuarios y creando las cuentas


foreach($userfile as $userline){
$userline=trim(chop($userline));
if(!empty($userline){
$user = explode(",",$userline);

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 9

echo("/opt/zimbra/bin/zmprov ca $user[0] $user[1] cn '$user[2]' zimbraCOSId ".


$cos[$user[3]]."\n");
system("/opt/zimbra/bin/zmprov ca $user[0] $user[1] cn '$user[2]' zimbraCOSId ".
$cos[$user[3]]);
}
//print_r($user);
}
?>

$> chmod 755 crear_cuentas


$> ./crear_cuentas

6.4.- Cambio de Contraseñas con un archivo shadow


(Hacer esto cuando ya se migraron los correos y contactos)

$> vim cambiar_password.pl

#!/usr/bin/perl

# Usage: as root # ./cambiar_password.pl /etc/shadow > shadow.zm

# as zimbra # zmprov < shadow.zm

$domain="domain.com";

while(<>) {

chomp;

my ($uname,$pass) = split(/:/);

print qq{zmprov ma $uname\@$domain userPassword '{crypt}$pass'\n};

print qq{\n};

$> chmod 755 cambiar_password.pl


$> ./cambiar_password.pl /etc/shadow > shadow.zm
$> /opt/zimbra/bin/zmprov < shadow.zm

6.5.- Migración de Mailbox

Para migrar las cuentas de correo, todas las claves de usuario deben ser conocidas, si esto no es
así cambiar las claves de todos los usuarios con una contraseña común y luego restaurar las
contraseñas; si éstas se encuentran almacenadas en shadow, caso contrario asignar nuevas
contraseñas a los usuarios.
Usaremos imapsync para la migración de servidor a servidor
Para la migración de clientes se crea la cuenta en el zimbra, luego se va máquina por máquina y
desde el programa cliente del usuario se copian los correos vía protocolo Imap al servidor Zimbra.

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 10

$> vim usuarios.txt


pepito;alumno
linuxero;alumno

$> vim migra_correos


#!/bin/bash
logfile="usuarios.txt"
host1=192.168.10.X
#host1 es el servidor de correos antiguo

host2=192.168.10.Y
#host2 es el zimbra punche

domain=dominio.com
#domain is where email account is
#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 p1; do


user=$u1"@"$domain
echo "Syncing User $user"
date=`date +%X_-_%x`
echo "Start Syncing User $u1"
echo "Starting $u1 $date" >> $logfile
imapsync --buffersize 8192000 --noauthmd5 --nosyncacls --subscribe --syncinternaldates
--host1 192.168.1.1 --user1 "$user" --password1 "$p1" --host2 192.168.1.10 --user2 "$user"
--password2 "$p1"
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

$> chmod 755 migra_correos


$> ./migra_correos

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe
Manual de Zimbra Open Source edition v 6.0 11

6.6.- Migración de Contactos

Para migrar los contactos de correos estos deben subirse al servidor por medio de curl.
Veremos un ejemplo de migración de contactos de un servidor Zimbra a otro Zimbra

$> vim contactos.txt


tuxito,tuxito
windozero,windozero

$> vim migra_contatos


#!/usr/bin/php
<?php
$file = file("contactos.txt");
$server1 = “192.168.10.5”;
$server2 = “192.168.10.168”;

foreach ( $file as $lineuser ) {


$lineuser = trim(chop($lineuser));
$userdata = explode(",",$lineuser);
if(!empty($userdata)){
echo ("wget --user $userdata[0] --password $userdata[1] http://$server1/zimbra/user/
$userdata[0]/Emailed%20Contacts.csv --no-check-certificate \n" );
exec ("wget --user $userdata[0] --password $userdata[1] http://$server1/zimbra/user/
$userdata[0]/Emailed%20Contacts.csv --no-check-certificate " );
echo ("curl -u $userdata[0]:$userdata[1] --upload-file /opt/zimbra/scripts/Emailed\
Contacts.csv http://$server2/home/$userdata[0]/Emailed%20Contacts?fmt=csv \n" );
exec ("curl -u $userdata[0]:$userdata[1] --upload-file /opt/zimbra/scripts/Emailed\
Contacts.csv http://$server2/home/$userdata[0]/Emailed%20Contacts?fmt=csv " );
exec ("rm -fr Emailed\ Contacts.csv");
}
}
?>

Av Canadá 3925 Teléfono: 6155900 Anexo: 101


capacitació[email protected] http://www.perulinux.com.pe

You might also like