Reverse proxy for Zimbra, mod_proxy and apache2

El escenario:

- Un servidor web con Debian 5 (Lenny), apache2, con una sólo una IP pública. Atiende múltiples virtual hosts.
- Un servidor de correo con Zimbra Collaboration Suite 6 (ZCS), con una IP privada.
- Ambos servidores forman parte de la misma red.

Antecedentes:

El hostname mail.example.com está asociado a la IP pública del servidor web.
El hostname internal-mai.example.com está asociado a la IP privada del servidor de correo.

El requerimiento:

El webmail de ZCS debe ser accesible desde Internet en http://mail.example.com

La solución:

En el servidor web


# a2enmod proxy proxy_http
# vim /etc/apache2/mods-available/proxy.conf

en el archivo proxy.com reemplaza ‘Deny from all’ por ‘Allow from all’ (sin las comillas)


# vim /etc/apache2/sites-available/mail.example.com

Y agrega este contenido:


<VirtualHost *:80>
ServerName mail.example.com
ProxyPass / http://internal-mail.example.com/
ProxyPassReverse / http://internal-mail.example.com/
ErrorLog /var/log/apache2/mail.example.com-error.log
LogLevel warn
CustomLog /var/log/apache2/mail.example.com-access.log combined
</VirtualHost>

Por último reinicia apache2


/etc/init.d/apache2 restart

Ahora a través de un proxy inverso (reverse proxy) todas las peticiones dirigidas a http://mail.example.com serán redirigidas internamente a http://internal-mail.example.com , el servidor de correo.

[/code]

CenterIM spanish UTF-8 support – Debian Lenny

CenterIM, un fork de CenterICQ, es un cliente de mensajería instantánea multiprotocolo: soporta ICQ, Yahoo!, MSN, AIM, IRC, XMPP, LiveJournal y Gadu-Gadu; además funciona en modo texto.

En los repositorios de Debian Lenny (estable) está disponible la versión 4.22.5-1, sin embargo, con esa versión no es factible conectarse a MSN Messenger, la conexión falla. En el sitio oficial CenterIM anuncian que en la versión 4.22.9 se soluciona el problema. A continuación los pasos para realizar la compilación desde las fuentes, además, habilitaremos el soporte spanish UTF-8 cómo charset, así podremos utilizar los caracteres acentuados, y otros cómo la “ñ” en CenterIM. Todos los comandos a continuación deben ser ejecutados cómo root.

Preparamos nuestro ambiente de compilación:


# apt-get install -y libcurl4-openssl-dev libcurses-perl libgnutls-dev liblzo2-2 liblzo2-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev build-essential

Descargamos la última versión de CenterIM:


# wget http://www.centerim.org/download/releases/centerim-4.22.9.tar.gz

Instalaremos la localización (locale) requerida. Edita el archivo /etc/locale.gen y descomenta la línea es_ES.UTF-8


# vim /etc/locale.gen

Generamos la nueva localización con locale-gen


# locale-gen
Generating locales (this might take a while)...
 es_ES.UTF-8... done
 en_US.UTF-8... done
Generation complete.

Utilizaremos esta localización temporalmente, el cambio perdurará hasta que cierres la consola.


# export LANG=es_ES.UTF-8

Ve al directorio donde descargaste CenterIM, llegó el momento de compilar. Si faltaran dependencias, al momento de hacer el configure te darás cuenta, intenta resolverlas a través de apt-get


# tar xzvf centerim-4.22.9.tar.gz
# cd centerim-4.22.9
# ./configure
# make
# make install

Ya puedes ejecutar CenterIM, por omisión estará disponible en /usr/local/bin/centerim. Luego de registrar tu cuenta MSN, tendrás que hacer unos ajustes en el charset, ó tus contactos sólo verán caracteres extraños cuando tu escribas con acentos o “ñ”. Presiona F4 para ir a “CenterIM config options” y en la opción “Codepages conversion” asigna los siguientes valores:


Switch to language preset : None
Remote charset : iso-8859-1
Local charset : utf-8

Existen varias formas para que el cambio de localización (en el Sistema Operativo) sea permanente para el usuario. Una de ellas es generar un sencillo script con este contenido:


#!/bin/bash

export LANG=es_ES.UTF-8
/usr/local/bin/centerim

Le das permisos de ejecución, y a través de este script ejecutas CenterIM. También podrías exportar la varaible LANG en tu ~/.profile o ~/.bashrc

Samba tuning SnakeOS firmware

Instalé SnakeOS en mi NAS WLX-652, y estaba experimentando un problema con Samba: en un recurso compartido del NAS que monto en mi PC, existen varios archivos AVI. Una vez iniciada la reproducción de estos, y en un período de tiempo aleatorio, los videos se congelaban. Pero justo en ese instante podía seguir accediendo a otros servicios, cómo FTP y SSH. El nivel de carga era normal en el NAS, estaba seguro que no era un problema de recursos y que algo pasa con Samba. Luego de incluir ciertos parámetros sin éxito en el archivo de configuración /etc/smb.conf, tales cómo:

read raw = no
read prediction = true
read size = 65536
level2 oplocks = true

Todo seguía igual. Mi hipótesis era que Samba (versión 2.0.10-security-rollup), no se daba por enterado de que yo seguía viendo el video, que mi conexión aún estaba activa. Luego de revisar el man (5) de smb.conf, encontré el parámetro keepalive

keepalive (G)

The value of the parameter (an integer) represents the number of
seconds between keepalive packets. If this parameter is zero, no
keepalive packets will be sent. Keepalive packets, if sent, allow
the server to tell whether a client is still present and
responding

Si estás con el mismo problema, encontrarás la solución a continuación:

Copia el archivo /etc/smb.conf desde el NAS a algún directorio en tu computador y edítalo. En la sección global agrega:

keepalive = 0

Luego súbelo vía SCP o FTP al directorio /etc del NAS, sobrescribe el original.  Ve a la interfaz web de SnakeOS a “Services> Samba> Restart” para reiniciar el servicio, por último a “System> Config> Save Config” para que los cambios en el archivo de configuración persistan después de un reinicio.

Esta es la sección global de mi /etc/smb.conf


[global]
server string = pulpero
smb passwd file = /etc/smbpasswd
security = SHARE
workgroup = WORKGROUP
encrypt passwords = true
short preserve case = yes
preserve case = yes
guest account = ftp
guest ok = yes
force user = root
force group = root
socket options = SO_KEEPALIVE TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
character set = ISO8859-1
client code page = 850
keepalive = 0

Samba client lanman auth

Quería conectarme a un recurso compartido de Samba utilizando Nautilus (en Gnome ve a “Places > Connect to Server”) y no podía conseguirlo. Los datos cómo el servidor, recurso, nombre de usuario y contraseña estaban correctos, sim embargo, Nautilus volvía y volvía a pedir la contraseña, no había ningún mensaje de error. Después de un poco de debug utilizando smbclient, conseguí más información:

[root@awesom-o /]# smbclient -U sebastian //pulpero/torrents
Enter sebastian's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.0.10-security-rollup]
Server requested LANMAN password (share-level security) but 'client lanman auth' is disabled
tree connect failed: NT_STATUS_ACCESS_DENIED

Ocurre porque el cliente tiene deshabilitada la autenticación utilizando el protocolo lanman, ya que es menos seguro que NTLM. Estando consciente de esto y de los riesgos que involucra, para solucionar el problema sólo tienes que editar el archivo /etc/samba/smb.conf y agregar esta línea en la sección [global]

client lanman auth = yes

Ahora puedes volver a probar con smbclient

[root@awesom-o /]# smbclient -U sebastian //pulpero/torrents
smb: \>

Con Nautilus también todo irá bien.

Cómo instalar Dropbox en Fedora 11

Dropbox, una aplicación que permite mantener sincronizados archivos entre distintos computadores, y que por cierto lo hace muy bien, no ofrece un paquete para Fedora 11. Acá encontrarás las instrucciones para resolver las dependencias y compilarlo desde el source. Ejecuta todos estos comandos cómo root:

wget https://www.dropbox.com/download?dl=packages/nautilus-dropbox-0.6.1.tar.bz2
yum install libnotify-devel nautilus-devel python-docutils gcc
tar jxvf nautilus-dropbox-0.6.1.tar.bz2
cd nautilus-dropbox-0.6.1
./configure
./make
./make install

Si quieres probar Dropbox, puedes hacerlo desde acá.

Technical review NAS USB WLX-652

Algo ocurre en mí cuando cuando el hardware funciona bajo Linux y permite firmware upgrade. Automáticamente comienzo a pensar que características nuevas -incluso sin conocer del todo las actuales- podría incorporar con una futura actualización. Existe un NAS (Network Attached Storage) que cumple con estas características, e incorpora unas muy atractivas: es un cliente Bittorrent, actúa cómo servidor de impresión, FTP, Samba y UPnP; y aun bajo precio: 40.35 USD. Es el NAS wlx-652, también conocido en los grupos de google cómo “DealExtreme NAS” gracias a su distribuidor más popular: DealExtreme. Tomé unas capturas de todos los menús y opciones disponibles del firmware por omisión. Así podrás ver si cumple con tus expectativas. Read the rest of this entry »

Cómo actualizar a Fedora 12 Constatine

Desde hoy 17 de noviembre, está disponible Fedora 12 Constatine.
Si actualmente tienes instalado Fedora 11 y quieres actualizar a Fedora 12, entonces sigue cómo root estos sencillos pasos:

# yum install preupgrade
# preupgrade

Unas capturas del proceso:

Puedes encontrar más información en la “Guía de actualización a Fedora 12” y también en este post de FayerWayer.

How to sendmail masquerading – CentOS / Red Hat 5

Si necesitas enviar correos de tu servidor linux, pero estos no llegan al destinatario final, y el maillog luce similar a este:

server1 sendmail[2513]: n9ALeZ8h002511: to=<user@example.com>, delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=120331, relay=mail.example.com. [200.10.20.3], dsn=4.2.0, stat=Deferred: 450 <root@server1.yourcompany.com>: Sender address rejected: Domain not found

Entonces te interesará seguir leyendo este post.

Este tipo de rechazo se produce por el incumplimiento de alguna de las normas descritas en la RFC 2821 para el protocolo SMTP. Generalmente ocurre cuando el host que envía el correo  tiene un FQDN (Fully Qualified Domain Name) que no puede ser resuelto por DNS en el servidor de destino (no existe un registro para el host en la zona del dominio, o bien, no existe el dominio)

El escenario a analizar será el siguiente:

  • dominio de tu organización: yourcompany.com
  • FQDN del servidor linux: server1.yourcompany.com
  • dominio del destinatario: example.com

 

Asumiremos que el dominio yourcompany.com es válido en Internet, sin embargo, no existe un registro tipo A “server1″ en la zona “yourcompany.com”, o sea, el FQDN server1.yourcompnay.com no puede ser resuelto por DNS. Por último server1.yourcompnay.com no actúa cómo un servidor de correo electrónico, sólo envía.

La solución consiste en enmascarar el host de origen: server1.yourcompnay.com cómo yourcompnay.com

Observación: Este Cómo está basado en sendmail 8.13 y Red Hat 5.3 . Aunque las instrucciones son bastante generales, y deberían aplicar para otras distribuciones de Linux con algunos cambios mínimos.

Ejecuta todos los comandos a continuación cómo root:

# yum install sendmail sendmail-cf mailx

Edita el archivo /etc/mail/sendmail.mc y ubica estas líneas:

EXPOSED_USER(`root')dnl
dnl MASQUERADE_AS(`mydomain.tld')dnl
dnl MASQUERADE_DOMAIN(mydomain.tld)dnl
dnl FEATURE(masquerade_entire_domain)dnl
dnl FEATURE(masquerade_envelope)dnl

Las lineas que comienzan con “dnl” son comentarios. Así que ahora comentaremos y descomentaremos para conseguir nuestro objetivo. Edítalas para que queden así:

dnl EXPOSED_USER(`root')dnl
MASQUERADE_AS(`yourcompany.com')dnl
MASQUERADE_DOMAIN(yourcompany.com)dnl
FEATURE(masquerade_entire_domain)dnl
FEATURE(masquerade_envelope)dnl

Acá asumimos que el dominio a enmascarar es “yourcompany.com”, procura reemplazarlo por el tuyo. Guarda y cierra. Es momento de regenerar el archivo de configuración de sendmail y reiniciar el servicio:

# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
# service sendmail restart

¡A probar! si todo salió bien, el destinatario debería recibir el correo:

mail -s "hello world" user@example.com < /dev/null

El log de sendmail ahora debería lucir así:

server1 sendmail[6336]: n9BJkM0Z006334: to=<user@example.com>, ctladdr=<root@server1.yourcompany.com> (0/0), delay=00:00:04, xdelay=00:00:04, mailer=esmtp, pri=120379, relay=mail.example.com. [200.10.20.3], dsn=2.0.0, stat=Sent (Ok: queued as EA4A35EC00B)

Si después de los cambios, tus correos aún no llegan al destinatario, es probable que tengas que usar un smart host para despacharlos. Quedará pendiente para el próximo post.

Corrección Ortográfica en Pidgin – Fedora 11

Pidgin, el cliente de mensajería instantánea que uso en linux, para hacer corrección ortográfica de acuerdo a un idioma, se basa en la localización (locale) del sistema. Esta característica está documentado en su FAQ

… Pidgin currently only supports spell checking in your locale language. This is because gtkspell 2 does not offer a good way for us to know which dictionaries are available or to switch between them …

Una vez identificada la localización, utiliza el diccionario que corresponda para hacer la corrección. Pero para mí esto es un problema: mi sistema utiliza por omisión la localización “en_US”, incluyendo a Gnome (o sea, está en inglés), sin embargo, a diario me comunico con mis contactos en español, y requiero de un corrector ortográfico en mi idioma.

Existe una solución, y es establecer manualmente y por usuario, el diccionario a utilizar. Pero esta alternativa no es muy práctica, sobretodo cuando tienes muchos contactos. Si estás en una situación similar, sigue estos pasos:

Para instalar la localización y el diccionario en español, cómo root ejecuta:

# yum groupinstall "Spanish Support"
# yum install aspell aspell-es

Luego viene el “hack”. La idea es hacer creer a pidgin que mi localización es “es_ES” en vez de “en_US”. Cómo root ejecuta:

# touch /usr/bin/pidgin-es && chmod +x /usr/bin/pidgin-es

Con tu editor preferido, edita el archivo /usr/bin/pidgin-es y agrega este contenido:

#!/bin/bash
export LANG=es_ES
/usr/bin/pidgin &

Por último, edita el acceso directo de Pidgin y apúntalo a este nuevo script: /usr/bin/pidgin-es (en vez de /usr/bin/pidgin). Ve a System > Preferences > Main Menu , en el Menu selecciona Applications > Internet y sobre Pidgin Internet Messenger has un clic con el botón derecho, selecciona Properties

Esta imagen representa cómo debe quedar

pidgin shortcut properties

Lenovo ThinkPad X61 no suena – Fedora 11

Luego de terminar la instalación de Fedora 11 con Gnome 2.26 , mi laptop no sonaba. La solución es sencilla: ve a System > Preferences > Advanced Volume Control y en la pestaña Switches observarás que sólo está habilitado Headphones, habilita Speaker y ya está.

alsamixer-gnome
La solución es simple, pero debo reconocer que me tomó un buen rato descubrir qué estaba pasando, todo estaba en orden: la tarjeta de sonido había sido reconocida por el Sistema Operativo, el volumen estaba al máximo, y el hardware está bueno, me constaba.