Parte 2: ZCS (Zimbra Comunication Server)

Imagen de RazaMetaL

[u]Procedimiento[/u]:
[b]INSTALAR ZIMBRA[/b]
Para quienes no conzcan Zimbra, es un conjunto de aplicaciones que proveen un groupware muy completo. Zimbra envia y recibe emails, administra usuarios, administra dominios virtuales para email, tiene mensajería instantánea y una interfaz webmail en AJAX para los usuarios finales. Tiene además herramientas colaborativas como wiki, maletín, cliente de mensajería integrado en la interfaz de webmail, libreta de direcciones, buscador, filtros de mensajes, etc. Una de las funcionalidades que utilizaremos mas adelante es su servidor LDAP el cuál brindará autenticación a samba y squid.

Las especificaciones completas de la version Opensource las pueden encontrar en [url]http://www.zimbra.com/products/[/url].

En el equipo destinado para la instalación de Zimbra quitaremos e instalaremos algunas dependencias:


aptitude purge exim4 exim4-base exim4-config exim4-daemon-light apache2
aptitude install libc6-i686 libidn11 curl file fetchmail libpcre3 libexpat1 libgetopt-mixed-perl libxml2 libstdc++6 libstdc++5 openssl libltdl3 sudo libgmp3c2 ssh openssh-server libmail-spf-query-perl sysstat libossp-uuid-perl sqlite3

Modificamos el archivo /etc/hosts para que contenga la siguiente información:


127.0.0.1 localhost.localdomain localhost
200.200.200.100 mail.midominio.com mail

Ejecutamos en la consola:

echo mail.midominio.com > /etc/hostname

Si estan instalando zimbra en un servidor que no tiene configuradas las direcciones declaradas en el DNS es seguro que adelante vamos a tener problemas, para evitar esto utilizaremos dnsmas para que el instalado de zimbra utilize un dns local manejado a nuestro antojo:


aptitude install dnsmasq

Editamos /etc/dnsmasq.conf para que contenga (reemplazar X.X.X.X con la direccion ip del equipo):

address=/mail.midominio.com/X.X.X.X
mx-host=midominio.com,mail.midominio.com,10
mx-host=mail.midominio.com,mail.midominio.com,15
mx-target=mail.midominio.com

Editamos /etc/resolv.conf para que contenga lo siguiente:

nameserver 127.0.0.1


/etc/init.d/dnsmasq restart

[b]IMPORTANTE[/b]: Debemos percatarnos de que no exista algún otro servicio SMTP/POP3/Http activado ó podríamos tener problemas con la instalación.

Descargamos zimbra y lo instalamos:

cd /usr/src
wget http://files.zimbra.com/downloads/5.0.7_GA/zcs-5.0.7_GA_2444.DEBIAN4.0.20080626025055.tgz
tar zvxf zcs-5.0.7_GA_2444.DEBIAN4.0.20080626025055.tgz
cd zcs-5.0.7_GA_2444.DEBIAN4.0.20080626025055
sh install.sh

El instalador nos indicará si nos hace falta algún paquete, afortunadamente tenemos a nuestro amigo aptitude para hacer este trabajo :)

Una vez constatadas las dependencias el instalador nos hará una serie de preguntas relacionadas con el nombre de dominio que vamos autilizar (midominio.com) y las contraseñas de administrador, debemos recordar que contraseña se esta asignando al usuario admin, ya que luego la requeriremos para la tareas de administración.

Una vez que zimbra este instalado, instalado vermos que existe un nuevo usuario en /etc/passwd llamado zimbra y un archivo /etc/init.d/zimbra que nos servirá para iniciar/detener el servicio.

Podemos saber si los servicios que zimbra provee estan activos ejecutando:

su - zimbra
zmcontrol status

Podremos ingresar en la consola de administración desde [url]https://mail.midominio.com:7071[/url] utilizando como nombre de usuario admin y la contraseña ingresada al momento de instalar. La guía del administrador de zimbra contiene abundante información acerca de como utilizarla:

[url]http://files.zimbra.com/website/docs/Zimbra%20OS%20Admin%20Guide.pdf[/url]
[url]http://www.zimbra.com/community/documentation.html[/url]

Para nuestro caso deberemos crear desde la interfaz de administración de zimbra un nuevo dominio llamado midominio.com, luego podremos crear usuarios para ese dominio.

Los usuarios creados desde la interfaz de administración pueden ingresar a su cliente webmail en [url]http://mail.midominio.com[/url]

[b]Migrar usuarios desde el archivo /etc/passwd a Zimbra[/b]

Copiar a /usr/src el archivo /etc/passwd que contiene los usuarios a migrar y eliminar los usuarios del sistema (root, adm, tape, audio, etc).

Creamos un archivo llamado passwd2zmprov que contenga el siguiente código perl:

#!/usr/bin/perl
#
# $Id: passwd2zmprov,v 1.2 2008/03/05 05:01:29 phil Exp $

=head1 NAME

passwd2zmprov - create zmprov commands from a passwd file

=head1 SYNOPSIS

usage: passwd2zmprov [options] [[passwd_file] ...] > commands.zmp
-help show a brief help message
-man show the full documentation

-domain [REQUIRED]
-cosid [default "Default COS"]
-password [default ""]

Getting a COS id:
zimbra$ zmprov gc | grep ^zimbraId:

Example converting CSV to zmprov commands:
$ ./passwd2zmprov -domain example.moc /etc/passwd > commands.zmp

Example provisioning ZCS accounts as 'zimbra' user:
zimbra$ zmprov < commands.zmp

=head1 DESCRIPTION:

Tool to create commands suitable for zmprov from a UNIX passwd file.
We don't use getpwent etc., because we are likely working on a copy
and not running as root.

See Also:
http://wiki.zimbra.com/index.php?title=Bulk_Create

=cut

use strict;
use warnings;
use File::Basename qw(basename);
use Getopt::Long qw(GetOptions);
use Pod::Usage qw(pod2usage);

my $prog = basename($0);
my ( @err, %option );

GetOptions( \%option, 'help|?', 'man', 'domain=s', 'cosid=s', 'password=s' )
or pod2usage( -verbose => 0 );

pod2usage( -verbose => 1 ) if ( $option{help} );
pod2usage( -verbose => 2 ) if ( $option{man} );

push( @err, "-domain is required" )
unless ( $option{domain} );

pod2usage( -verbose => 0, -message => map( "$prog: $_\n", @err ) )
if (@err);

warn("$prog: using Default COS\n") unless ( $option{cos_id} );
warn("$prog: reading passwd like entries from STDIN\n") unless (@ARGV);

my $date = localtime();
my $cosid = $option{cosid};
my $domain = $option{domain};
my $password = defined $option{password} ? $option{password} : "";
my $MIN_UID = 500; # skip system accounts like httpd
my $MAX_UID = 60000; # skip other system accounts like nfsnobody

# sanitize password
$password =~ s/\"/\\\"/g;

while (<>) {
chomp;
next if (/^\s*$/); # skip empty lines

my ( $uname, $x, $uid, $gid, $gecos, $dir, $shell ) = split( /:/, $_, 7 );

if ( $uid < $MIN_UID or $uid > $MAX_UID ) {
warn("$prog: skip $uname: $uid not between $MIN_UID and $MAX_UID\n");
next;
}

# assuming gecos format is First [[MI] [Last]], sanitize a little
$gecos =~ s/\"/\\\"/g;

my ( $fullname, $description ) = split( /\s*,\s*/, $gecos, 2 );
my ( $fname, $mname, $lname ) = split( " ", $fullname, 3 );
unless ( defined($lname) ) {
$lname = $mname;
undef($mname);
}
my $displayname = $fname
. ( defined($mname) ? " $mname" : "" )
. ( defined($lname) ? " $lname" : "" );

print(
qq{ca "$uname\@$domain" "$password"},
( defined($cosid) ? qq{ zimbraCOSid "$cosid"} : () ),
( defined($fname) ? qq{ givenName "$fname"} : () ),
( defined($lname) ? qq{ sn "$lname"} : () ),
( defined($uname) ? qq{ cn "$uname"} : () ),
( defined($displayname) ? qq{ displayName "$displayname"} : () ),
( defined($description) ? qq{ description "$description"} : () ),
qq{ zimbraNotes "Migrated $date"},
qq{ zimbraPasswordMustChange TRUE},
qq{\n},
);
}

=head1 HISTORY

2007/01/23, Version 1.0/1.1 Dlbewley
2008/03/04, Version 1.2 Plobbes

=cut

Le damos privilegios:

chmod a+x passwd2zmprov

Exportamos los usuarios de el archivo passwd de la siguiente manera:

perl /usr/src/passwd2zmprov -domain midominio.com -password unpasswordparadotos < /usr/src/passwd > usuarios.zmp

Y los importamos como usuarios de zimbra de la siguiente manera:

cat /usr/src/usuarios.zmp | su - zimbra -c zmprov

Comentarios

Es correcta tu afirmación a

Imagen de deathUser

Es correcta tu afirmación a no ser que hayas estado usando IMAP, en cuyo caso tendrías todos los e-mails, incluso los encviados, pero en /var/mail estarán solo los e-mails recibidos...

bye
;)

Páginas