miércoles, 18 de febrero de 2009

Instalación de Squirrel dentro de un entorno LDAP

- Punto de partida: Centos 5.2. actualizado con httpd instalado. En este mismo servidor debe correr simplegroupware, el cual requiere php 5.2.6. Para tenerlo instalado hay que acudir al repositorio externo de Utter Ramblings. Subiré la receta de simplegroupware y del proceso de arranque proximamente.

- Dependencias:
wget http://www.jasonlitka.com/media/EL5/x86_64/php-mbstring-5.2.6-jason.1.x86_64.rpm
# gpgcheck=0 en /etc/yum.conf
yum install php-mbstring-5.2.6-jason.1.x86_64.rpm
#Installed: php-mbstring.x86_64 0:5.2.6-jason.1
yum install squirrelmail.noarch
#Installed: squirrelmail.noarch 0:1.4.8-5.el5.centos.3
service httpd restart
# Prueba ok abriendo: http://simplegroupware.carreras.sa/webmail
#Diccionario:
yum install aspell-es.x86_64
Installed: aspell-es.x86_64 50:0.50-13.2.2
# Parche para adaptar búsqueda de direcciones en ldap (criterios especiales e inclusión de dato de delegación):

# diff -u functions/abook_ldap_server.php.orig functions/abook_ldap_server.php
--- functions/abook_ldap_server.php.orig 2009-02-17 12:14:07.000000000 +0100
+++ functions/abook_ldap_server.php 2009-02-17 13:26:45.000000000 +0100
@@ -272,7 +272,7 @@
/* Undo sanitizing of * symbol */
$expr = str_replace('\2a','*',$expr);
}
- $expression = "cn=$expr";
+ $expression = "(&(|(cn=$expr)(st=$expr))(!(mail=*aux*))(!(mail=*@carreras.sa))(|(accountStatus=active)(mail=*listas*))(!(employeeType=0)))";

/* Make sure connection is there */
if(!$this->open()) {
@@ -280,7 +280,7 @@
}

$sret = @ldap_search($this->linkid, $this->basedn, $expression,
- array('dn', 'o', 'ou', 'sn', 'givenname', 'cn', 'mail'),
+ array('dn', 'o', 'st', 'sn', 'givenname', 'cn', 'mail'),
0, $this->maxrows, $this->timeout);

/* Should get error from server using the ldap_error() function,
@@ -309,8 +309,8 @@
$nickname = $this->charset_decode($row['dn']);
$fullname = $this->charset_decode($row['cn'][0]);

- if(!empty($row['ou'][0])) {
- $label = $this->charset_decode($row['ou'][0]);
+ if(!empty($row['st'][0])) {
+ $label = $this->charset_decode($row['st'][0]);
}
else if(!empty($row['o'][0])) {
$label = $this->charset_decode($row['o'][0]);
@@ -376,4 +376,4 @@
// return $this->search('*');
}
}
-?>
\ No newline at end of file
+?>

- Corrección de variables no definidas (puede que sea algo introducido por algún parche de plugin de más abajo):

# diff -u /usr/share/squirrelmail/functions/mime.php.orig /usr/share/squirrelmail/functions/mime.php
--- /usr/share/squirrelmail/functions/mime.php.orig 2009-02-18 10:10:31.000000000 +0100
+++ /usr/share/squirrelmail/functions/mime.php 2009-02-18 10:12:00.000000000 +0100
@@ -306,7 +306,7 @@
global $startMessage, $languages, $squirrelmail_language,
$show_html_default, $sort, $has_unsafe_images, $passed_ent_id,
$username, $key, $imapServerAddress, $imapPort,
- $download_and_unsafe_link;
+ $download_and_unsafe_link, $charset_converted, $charset;

if( !sqgetGlobalVar('view_unsafe_images', $view_unsafe_images, SQ_GET) ) {
$view_unsafe_images = false;
@@ -2473,4 +2473,4 @@

} // end fn SendDownloadHeaders

-?>
\ No newline at end of file
+?>



- Reconfiguración de php.ini:

# diff -u /etc/php.ini.orig /etc/php.ini
--- /etc/php.ini.orig 2009-02-18 15:27:37.000000000 +0100
+++ /etc/php.ini 2009-02-18 15:31:06.000000000 +0100
@@ -353,7 +353,7 @@
; instead (see below). Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
-display_errors = On
+display_errors = Off

; Even when display_errors is on, errors that occur during PHP's startup
; sequence are not displayed. It's strongly recommended to keep
@@ -412,7 +412,7 @@
;error_log = filename

; Log errors to syslog (Event Log on NT, not valid in Windows 95).
-;error_log = syslog
+error_log = syslog


;;;;;;;;;;;;;;;;;
@@ -570,7 +570,7 @@
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
-upload_max_filesize = 2M
+upload_max_filesize = 10M


;;;;;;;;;;;;;;;;;;





- Instalación de plugins:

- cd /usr/share/squirrelmail/plugins

- Archivado de correo en .zip: http://www.squirrelmail.org/plugin_view.php?id=121

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Farchive_mail.1.2-1.4.2.tar.gz
tar -zxvf archive_mail.1.2-1.4.2.tar.gz

- Importar/Exportar contactos: http://www.squirrelmail.org/plugin_view.php?id=29

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fabook_import_export-1.0-1.
tar -zxvf abook_import_export-1.0-1.4.4.tar.gz

- Añadir contactos desde mensajes: http://www.squirrelmail.org/plugin_view.php?id=269

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fadd_address-1.0-1.4.0.tar.gz
tar -zxvf add_address-1.0-1.4.0.tar.gz

- Suscripción automática a carpetas IMAP: http://www.squirrelmail.org/plugin_view.php?id=245

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fautosubscribe-1.1-1.4.2.tar.gz
tar -zxvf autosubscribe-1.1-1.4.2.tar.gz

- Pie de mensajes: http://www.squirrelmail.org/plugin_view.php?id=39

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Femail_footer-0.5-1.4.2.tar.gz
tar -zxvf email_footer-0.5-1.4.2.tar.gz
cd email_footer ; cp config.sample.php config.php
# diff -u config.sample.php config.php
--- config.sample.php 2008-04-19 23:30:19.000000000 +0200
+++ config.php 2009-02-18 10:36:56.000000000 +0100
@@ -18,10 +18,21 @@
$plain_text_email_footer

= "\n\n"
-. "-----------------------------------------\n"
-. "This email was sent using SquirrelMail.\n"
-. " \"Webmail for nuts!\"\n"
-. "http://squirrelmail.org/\n";
+. "\"Este correo electronico y la informacion contenida en el mismo es de \n"
+. " caracter confidencial y esta sometida al secreto profesional, dirigiendose\n"
+. " exclusivamente al destinatario mencionado en el encabezamiento, cuyos datos\n"
+. " forman parte de un fichero responsabilidad del GRUPO CARRERAS y cuya\n"
+. " finalidad es contactar con el titular de los datos a traves del correo\n"
+. " electronico. Le informamos que cuenta con los derechos de acceso,\n"
+. " rectificacion y cancelacion que podra ejercitar mediante el envio de un\n"
+. " correo electronico a la siguiente direccion: calidad@grupocarreras.com.\n"
+. " Si el receptor de la comunicacion fuera el destinatario, le\n"
+. " informamos que cualquier divulgacion, copia, distribucion o utilizacion no\n"
+. " autorizada de la informacion contenida en la misma esta prohibida por la\n"
+. " legislacion vigente.\"\n"
+. "\n"
+. " http://www.grupocarreras.com\n"
+. "____________________________________________________________________________\n";





- Popup de correo nuevo: http://www.squirrelmail.org/plugin_view.php?id=124

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fnotify_1_3.tar.gz
tar -zxvf notify_1_3.tar.gz
- Parche para español:
# diff -u setup.php.orig setup.php
--- setup.php.orig 2009-02-17 11:34:59.000000000 +0100
+++ setup.php 2009-02-17 11:35:02.000000000 +0100
@@ -42,7 +42,7 @@
function notify_link() {
echo '

';
- echo 'Show Notify Popup
' . "\n";
+ echo 'Mostrar Aviso Correo' . "\n";
}

// load preferences
@@ -60,11 +60,11 @@
function notify_options() {
global $notify_period, $notify_sound;
echo '';
- echo 'Notify Popup Options
' . "\n";
- echo 'New mail check period (minutes):';
+ echo 'Opciones de Notificacion' . "\n";
+ echo 'Periodo de comprobacion de nuevo correo (minutos):';
echo '' . "\n";
- echo 'Play sound:';
+ echo 'Aviso Sonoro:';
echo '' . "\n";



- Copia de seguridad de mensajes mientras se escriben: http://www.squirrelmail.org/plugin_view.php?id=8

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fquicksave-2.4.2-1.2.9.tar.gz
tar -zxvf quicksave-2.4.2-1.2.9.tar.gz

- Avisos de cuota: http://www.squirrelmail.org/plugin_view.php?id=237

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fcheck_quota-2.2-1.4.0.tar.gz
tar -zxvf check_quota-2.2-1.4.0.tar.gz
- Parche:
# diff -u config.sample.php config.php
--- config.sample.php 2007-08-06 13:48:47.000000000 +0200
+++ config.php 2009-02-17 11:18:59.000000000 +0100
@@ -25,7 +25,7 @@
* 0: UNIX / 1: IMAP / 2: cPanel
*/

-$settings['quota_type'] = 0;
+$settings['quota_type'] = 1;


/*


- Usuarios en linea: http://www.squirrelmail.org/plugin_view.php?id=128

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fonline_users-1.2.1-re.tar.gz
tar -zxvf online_users-1.2.1-re.tar.gz

- Previsualizar imágenes adjuntas: http://www.squirrelmail.org/plugin_view.php?id=244

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fshow_thumb-1.05-1.5.1.tar.gz
tar -zxvf show_thumb-1.05-1.5.1.tar.gz
cp /usr/share/squirrelmail/plugins/show_thumb/config.php.sample /usr/share/squirrelmail/plugins/show_thumb/config.php

- Plugin de compatibilidad (dependencia): http://www.squirrelmail.org/plugin_view.php?id=152

wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fcompatibility-2.0.14-1.0.tar.gz
tar -zxvf compatibility-2.0.14-1.0.tar.gz
patch -p0 < id="73" fileurl="http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Favelsieve-1.9.7.tar.gz" avelsieve_imapproxymode =" false;" avelsieve_imapproxymode =" true;" avelsieve_imapproxyserv =" array("> 'imap.example.org'
+ 'imapproxy.carreras.sa' => 'imap-tes-1.carreras.sa'
);

/** @var boolean Ldapuserdata mode: Gets user's email addresses (including
* mailAlternate & mailAuthorized) from LDAP Prefs Backend plugin's cache */

global $avelsieve_ldapuserdatamode;
-$avelsieve_ldapuserdatamode = false;
+$avelsieve_ldapuserdatamode = true;

/** @var array Map of cyrus administrator users, for proxy authentication */

@@ -160,7 +160,7 @@
* an intranet environment or in a same-language environment. */

global $translate_return_msgs;
-$translate_return_msgs = false;
+$translate_return_msgs = true;

/* Theme to use for the images. A directory with the same name must exist under
* plugins/avelsieve/$imagetheme, that contains the files: up.png, down.png,

- Hay que modificar el parche para consultar el servidor Sieve por usuario del ldap vía el atributo mailHost.
Notas: hay código para consulta ldap en el archivo spamrule.inc.php. Habría que colocar la consulta dentro de la definición
del servidor en la función DO_Sieve_ManageSieve dentro del archivo DO_Sieve_ManageSieve.class.php

- A la hora de configurar el filtro, hay que tener cuidado con la dirección de correo destino para la que se va a activar. Habría
que cambiar esto para que por defecto cogiera el atributo mail de ldap.


- Toda la configuración de squirrel se ha realizado de forma interactiva mediante /usr/share/squirrelmail/config/conf.pl. El resultado final queda en el archivo /etc/squirrelmail/config.php cuyo contenido es:

'ldap.carreras.sa',
'base' => 'ou=Personal,dc=carreras,dc=sa',
'name' => 'PERSONAL CARRERAS',
'maxrows' => 1000
);

$ldap_server[1] = array(
'host' => 'ldap.carreras.sa',
'base' => 'ou=Listas,dc=carreras,dc=sa',
'name' => 'LISTAS CARRERAS',
'maxrows' => 1000
);

$abook_global_file = '';
$abook_global_file_writeable = false;

$addrbook_dsn = '';
$addrbook_table = 'address';

$prefs_dsn = '';
$prefs_table = 'userprefs';
$prefs_user_field = 'user';
$prefs_key_field = 'prefkey';
$prefs_val_field = 'prefval';
$addrbook_global_dsn = '';
$addrbook_global_table = 'global_abook';
$addrbook_global_writeable = false;
$addrbook_global_listing = false;

$no_list_for_subscribe = false;
$smtp_auth_mech = 'none';
$imap_auth_mech = 'login';
$use_imap_tls = false;
$use_smtp_tls = false;
$session_name = 'SQMSESSID';
$only_secure_cookies = true;

$config_location_base = '';

@include SM_PATH . 'config/config_local.php';

/**
* Make sure there are no characters after the PHP closing
* tag below (including newline characters and whitespace).
* Otherwise, that character will cause the headers to be
* sent and regular output to begin, which will majorly screw
* things up when we try to send more headers later.
*/
?>

No hay comentarios:

Publicar un comentario