#slave, informatica, Networking, planet

Actualizar Debian Squeeze a Wheezy con instalación de ISPconfig 3 + dovecot + roundcube

Bueno llego el tiempo de la actualización planeada de Debian 6 (Squeeze) a Debian 7 (Wheezy) en el servidor de la empresa, me leí los “known issues” de debian.org y como no encontré nada que afectara a mi server inicié con el upgrade, solo para encontrar que dovecot-core vomitó 10 errores de post-inst (arrastrando otros paquetes de dovecot).

doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf: mail_plugin_dir: access(/usr/lib/dovecot/modules/lda) failed: No such file or directory

Pues el error era de que ese archivo ‘lda’ ya no existe, asi que al cambiar la ruta de su entrada en /etc/dovecot.conf:

protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugin_dir = /usr/lib/dovecot/modules/lda
  mail_plugins = sieve quota
  postmaster_address = postmaster@my-domain.tld
}

a esto:

protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugin_dir = /usr/lib/dovecot/modules
  mail_plugins = sieve quota
  postmaster_address = postmaster@my-domain.tld
}

El archivo era correcto nuevamente, ahora a terminar de instalar:

apt-get -f install

Luego el problema era roundcube, el error de roundcube era este en /var/log/apache2/error.log:

SoftException in Application.cpp:221: File "/usr/share/roundcube/index.php" is not in document root of Vhost "/var/www/"

Rarisimo, pero buscando en startpage.com (si, ya no uso google) entre los resultados encontré esto:
http://www.crazysquirrel.com/computing/debian/servers/ubuntu-mail-server.jspx
Y encotré al culpable, se llamaba /etc/suphp/suphp.conf, tenemos que cambiar dos cosas aqui, primero el “check_vhost_docroot” que revisa si el script que estamos corriendo esta dentro del document root de este archivo (no el de apache):

check_vhost_docroot=false

Y luego encontré otra belleza gracias a este mismo archivo:

 SoftException in Application.cpp:350: UID of script "/var/lib/roundcube/index.php" is smaller than min_uid

Bueno resulta que roundcube instalado desde paquetes debian siempre guarda sus archivos como usuario root (UID 0) ya que antes roundcube llamaba a php-cli para trabajar, ahora todo lo que es php-cli se esta migrando a php5-cgi, y que para correr aplicaciones que requieran permisos altos (como para mover, copiar y borrar dentro de un buzón de correo en posesión de otro usuario) debe usar un programa llamado suphp, hasta aquí todo bien, solo que este roundcube es algo viejito y no venía preparado para el cambio por lo que es imposible hacerlo correr, a menos que cambiemos sus permisos y volvamos a modificar el archivo:

Primero cambiamos el dueño y el grupo de los directorios de roundcube:

chown -R www-data:www-data /var/lib/roundcube
chown -R www-data:www-data /usr/share/roundcube

Y luego en el archivo /etc/suphp/suphp.conf cambiamos el min_uid y el min_gid a 33 (UID Y GID de www-data):

; Minimum UID
min_uid=33

; Minimum GID
min_gid=33

Luego reiniciamos apache y probamos nuestros servicios, podemos ver que todo funciona perfectamente.

Si llegan a experimentar un error de base de datos entonces deben actualizar mysql con el script integrado:

mysql_upgrade --force  --password='mysqlrootpassword'

ISPConfig en mi configuración actual ya está integrado con estos servicios y funciona sin problemas, aun no he probado el manejo de OpenVZ, pero eso es para otro articulo.

Anuncios
Estándar
informatica, Networking, planet

Network Shaping con debian squeeze (oldstable) mastershaper 0.44 con soporte vlan Cisco

Bueno regreso a hacer proyectos frikis, esta ves un equipo de red usando GNU/Debian ya que no tengo $3000 para comprar un packeteer o algo parecido que haga network shaping, qos y data rate limit.

Proyecto

Mi escenario es el siguiente:

Si, este es mi esquema de red, internet es una nube oscura y tenebrosa

Si, este es mi esquema de red, internet es una nube oscura y tenebrosa

Bueno el router solo tiene una interfáz de entrada y una de salida, la interfáz de salida esta en modo trunk para comunicarse con el switch, el shaper que está ubicado entre ambos equipos es un bridge, osea completamente transparente para ambos, pero debe ser capáz de ver la vlan que vamos a manipular, lo que necesitamos:

1- router cisco o de cualquier otra marca que soporte encapsulación dotq1
2- Switch administrable con soporte de encapsulación dotq1 (para las vlan)
3- Una pc con dos tarjetas de red (generalmente una viene incluida en la motherboard) FastEthernet
4- Un patchcord cruzado RJ45 y uno recto, el cruzado para conectar con el router y el otro hacia el switch.

El router y el switch los pueden configurar como quieran, aqui esta el ejemplo de como están los puertos relevantes en equipos cisco con ios 12.x:

Router:

interface GigabitEthernet0/0
ip address -IP WAN- 255.255.255.248
ip nat outside
ip virtual-reassembly
duplex auto
speed auto
media-type rj45
!
interface GigabitEthernet0/1
no ip address
duplex auto
speed auto
media-type rj45
!
interface GigabitEthernet0/1.2
description vlan internet
encapsulation dot1Q 2
ip address -IP LAN- 255.255.255.0
ip nat inside
ip virtual-reassembly

Switch:

interface FastEthernet3/1
 switchport
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface FastEthernet3/2
 switchport
 switchport access vlan 2
 switchport mode access
!
interface FastEthernet3/3
 switchport
 switchport access vlan 2
 switchport mode access

Construcción del equipo shaper

A- Fuentes y compilación de kernel, IPtables, agregar soporte para protocolos capa 7 y filtrado intermedio en iptables

Instalamos debian squeeze como siempre, luego cuando ya tengamos acceso a la línea de comando descargamos las herramientas de compilación:

aptitude install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential patch time checkinstall

Luego el fuente del kernel:

cd /usr/src 
apt-get source linux-image-2.6.32-5-amd64
ln -s /usr/src/linux-2.6-2.6.32 /usr/src/linux

Parcheamos el kernel para que soporte capa 7 en netfilter:

cd /usr/src/linux 
wget --no-check-certificate  https://dev.openwrt.org/export/18900/trunk/target/linux/generic-2.6/patches-2.6.32/100-netfilter_layer7_2.21.patch 
patch -p1 < 100-netfilter_layer7_2.21.patch

Si vamos a filtrar usando iptables necesitamos también el parche para imq (intermediate queuein):

cd /usr/src/linux
wget http://www.linuximq.net/patches/linux-2.6.32-imq-test2.diff
patch  -p1 < linux-2.6.32-imq-test2.diff

Configuración del kernel antes de iniciar la compilación:

cd /usr/src/linux 
cp /boot/config-2.6.32-5-amd64 .config
perl -pi -e 's/CONFIG_VT6656=m/CONFIG_VT6656=n/g' .config # Este driver da problemas
make menuconfig

Activamos imq:

Device Drivers  ---> 
 -*- Network device support  ---> 
      IMQ (intermediate queueing device) support 
     IMQ behavior (PRE/POSTROUTING) (IMQ AB)  ---> 
       (X) IMQ AB 
     (16)    Number of IMQ devices

Y layer 7:

-*- Networking support  ---> 
     Networking options  ---> 
     [*] Network packet filtering framework (Netfilter)  ---> 
       Core Netfilter Configuration  ---> 
        Netfilter connection tracking support 
        "layer7" match support

Antes de compilar el kernel descargamos el source de iptables, ya que la versión incluida en debian squeeze no soporta los parches de imq, descargamos la versión 1.4.10 (squeeze trae 1.4.8)

cd /usr/src
wget -c ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.10.tar.bz2
tar -xvf iptables-1.4.10.tar.bz2
ln -s  iptables-1.4.10 iptables

Parcheamos iptables para soportar imq

cd /usr/src/iptables
wget http://www.linuximq.net/patches/iptables-1.4.10-imq.patch
patch -p1 < iptables-1.4.10-imq.patch

Ahora descargamos el parche para layer 7 en iptables

wget http://downloads.sourceforge.net/project/l7-filter/l7-filter%20kernel%20version/2.22/netfilter-layer7-v2.22.tar.gz
tar -zxvf netfilter-layer7-v2.22.tar.gz

Ahora a copiar las extensiones

cp /tmp/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* /usr/src/iptables/extensions/

Y copiar el archivo parcheado del kernel para iptables

cp /usr/src/linux/include/linux/netfilter/xt_layer7.h /usr/src/iptables/extensions/

Ahora con las fuentes ya preparadas podemos compilar, el kernel se compila primero:

cd /usr/src/linux
fakeroot time make-kpkg --initrd --append_to_version=-layer7-imq-amd64 linux-image

Una ves terminado instalamos con dpkg los paquetes creados por make-kpkg

cd /usr/src
dpkg -i *.deb  #asumiendo que solo los paquetes del kernel se encuentren ahi

Ahora compilamos iptables:

cd /usr/src/iptables
./configure --with-ksource=/usr/src/linux --prefix=/usr --with-xtlibdir=/lib/xtables --libdir=/lib --enable-libipq --enable-devel
make
checkinstall

Descargamos los protocolos para layer 7

cd /tmp
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2009-05-28.tar.gz
tar -zxvf l7-protocols-2009-05-28.tar.gz 
mv l7-protocols-2009-05-28 /etc/l7-protocols

Ahora instalamos las extensiones xtables de squeeze

apt-get install xtables-addons-common

Luego de todo esto reiniciamos la computadora y probamos que los módulos estén instalados y funcionando:

modprobe imq
iptables  -m layer7 --help
iptables -m ipp2p --help

B-Stack Lamp e instalación de mastershaper

Ahora que todo ha funcionado es tiempo de instalar mastershaper, primero instalamos el stack LAMP.

aptitude install php5 php5-mysql libapache2-mod-php5 apache2 mysql-server mysql-client phpmyadmin

Seguimos los pasos de la instalación e introducimos la contraseña del root de mysql, ahora descargamos mastershaper propiamente dicho:

cd /tmp
wget -c http://www.mastershaper.org/files/mastershaper_0.44.tar.bz2
mkdir shaper
cd shaper
tar -xvf ../mastershaper_0.44.tar.bz2

Creamos una base de datos para mastershaper y un usuario en mysql, con phpmyadmin o con comando:

CREATE DATABASE shaper_db;
USE shaper_db;
GRANT ALL ON shaper_db.* to shaperuser@localhost IDENTIFIED BY 'inserte contraseña aqui';

Instalar mastershaper en el document root de apache (normalmente /var/www)

cd /tmp
cp -r shaper /var/www/

Ahora podemos acceder desde el navegador al shaper con http://ip-del-shaper/shaper o http://localhost/shaper si entramos desde la misma pc.

Instalamos los módulos ip de php-pear para que mastershaper pueda manejar los comandos de red.

pear install DB Net_IPv4

Descargamos jpgraph para obtener estadísticas de red (en el menu monitoring de mastershaper)

cd /var/www/shaper/
wget -c http://jpgraph.net/download/download.php?p=5
mv download.php?p=5 jpgraph.tar.gz
tar -xvf jpgraph.tar.gz
mv jpgraph-version/ jpgraph/

Descargamos también phplayersmenu de la misma forma:

cd /var/www/shaper/
wget -c  http://downloads.sourceforge.net/project/phplayersmenu/phplayersmenu-devel/3.2.0-rc/phplayersmenu-3.2.0-rc.tar.gz
tar -xvf phplayersmenu-3.2.0-rc.tar.gz
mv phplayersmenu-3.2.0-rc/ phplayersmenu/

C- Configuración

Ingresamos a http://localhost/shaper (o a remotamente en http://dirección-del-shaper/shaper) y llenamos los campos de configuración, agrego el screenshot de la configuración para que se den una idea:

Esta es la ventana de configuración central, denle click a la imagen por que el blog aun no soporta telescopio

Esta es la ventana de configuración central, denle click a la imagen por que el blog aun no soporta telescopio

Si queremos soporte para IMQ entonces debemos generar las interfaces necesarias para que iptables pueda modificar el tráfico.

ip link set imq0 up
ip link set imq1 up

iptables -t mangle -I PREROUTING -i ${EXT_DEV} -j IMQ --todev 0
iptables -t mangle -I POSTROUTING -o ${EXT_DEV} -j IMQ --todev 1

EXT_DEV es la interfás donde se quiere manipular el tráfico (salida solamente, si se quiere manipular solo ancho de banda o protocolos no es necesario IMQ)

Como mastershaper necesita poder utilizar iptables y tc (comandos solo para root) hay que darle poderes de sudo, pero solo para procesos de shaping y evitar que php pueda acceder a root, en debian y ubuntu existe el comando “visudo” para editar /etc/sudoers (en cualquier otro GNU/Linux se permite editar directamente) y agregamos lo siguiente:

www-data ALL= NOPASSWD: /var/www/shaper/shaper_loader.sh

Asumiendo que el shaper corra con el usuario www-data (lo normal en debian) y que la carpeta del shaper este en /var/www.

Luego deben revisar si no pueden descargar desde el navegador el archivo “config.dat” (http://server/shaper/config.dat), en el .tar del shaper debería venir un .htaccess para evitar su lectura y descarga, si apache no reconoce el .htaccess en esa carpeta hay que cambiar la directiva “AllowOverride” en /etc/apache2/sites-available/default.

D – Vlans

Este paso es OPCIONAL para gente que no tenga vlans configuradas en su red, en mi caso necesito hacer shaping en las vlans 2 y 3, como verán mas adelante mastershaper no fue diseñado para ver vlans, solo interfaces físicas y lógicas por lo cual tuve que montar 2 carpetas shaper (localhost/shaper y localhost/shaper2) para poder hacer cambios en ambas, ustedes pueden solventar este problema como mejor les parece (virtualización por ejemplo).
La vlan3 esta deshabilitada en la muestra de cisco y no la agregue en el ejemplo siguiente

Instalación de vlan en GNU/Linux

Como mi shaper se usará en modo bridge (transparente) necesitaremos bridge utils, y el paquete “vlan” para poder usar vlans.

aptitude install vlan bridge-utils

Luego modificamos de esta manera nuestro /etc/network/interfaces

ADVERTENCIA – Si estás configurando el shaper desde un equipo remoto puede que pierdas acceso al shaper, revisa que tengas acceso físico al equipo para realizar este paso –

vi /etc/network/interfaces
# Fisica PCI
auto eth0
iface eth0 inet manual

# Fisica integrada
auto eth1
iface eth1 inet manual

# VLAN2
auto eth0.2
iface eth0.2 inet manual

auto eth1.2
iface eth1.2 inet manual

#Bridge VLAN2
auto br0
iface br0 inet static
        bridge_ports eth0.2 eth1.2
        bridge_stp      off
        bridge_maxwait  0
        bridge_fd       0

        address 192.168.30.3
        broadcast 192.168.30.255
        netmask   255.255.255.0
        gateway 192.168.30.1

Pasare a explicarles este desastre, primero pasamos las interfaces físicas (las tarjetas de red eth0 y eth1) a modo manual sin IP, luego configuramos subinterfaces para cada una en la vlan correspondiente (eth”interfás”.”vlan”) y luego las unimos en una interfáz puente con ip para acceso remoto (los equipos conectados físicamente por el no lo verán como un salto de red).

Una ves se tenga todo listo pasamos a iniciar esta configuración, asegurense de tener una forma de revertirlo en caso de que no funcione por cualquier razón.

ifdown eth0 && ifdown eth1 && ifup br0

Si pudieron pasar por esto y pudieron acceder remotamente a la ip configurada en la interfáz puente entonces la configuración es correcta.

E-Habilitando shaper

Regresamos a la ventana del navegador (ya con la ip de la interfáz puente) y nos vamos al menu de la izquierda, en “settings->Options” se nos preguntara:

  • Ancho de banda de bajada y subida (este es el ancho de banda total disponible) en kbit/s
  • Interfaces de entrada (en mi caso eth0.2) y de salida (eth1.2)
  • Activar IMQ (solo si hemos configurado IMQ y si vamos a hacer shaping de trafico entrante), no necesario si solo se limitara ancho de banda.
  • ACK packets: prioridad para paquetes ACK (respuesta) y otros paquetes pequeños normalmente utilizados por los protocolos de transporte como señalizadores o respuesta de peticiones
  • Disciplina de cola: este es un poco complicado pero lo pondré asi: la mayoría de las personas usarán HTB (Hierarchical Token Bucket) que trabaja dandole prioridad (definida en la configuración de “Service Levels” del shaper) y distintos valores de ancho de banda dinamico dependiendo del estado de saturación del enlace. Si tenemos un servidor que requiere tráfico en tiempo real, como por ejemplo streaming de video/audio, VoIP/Videoconferencia es mejor utilizar HFSC (Hierarchical Fair Service Curve) que define prioridades de servicio en tiempo real, y CBQ (Class Based queueing) que es parecido a HTB pero con limites duros sin variación en los anchos de banda, es como el abuelo del qos en GNU/Linux.
  • Filtro de tráfico, esto es dependiendo de que quieren hacer, si solo se quiere limitar ancho de banda o hacer qos basado en IP, tc-filter bastara (gasta menos recursos), si necesitan hacer qos mas avanzado basado en protocolos o en mac entonces necesitarán Iptables.
  • Modo: El shaper puede ser un router (actuar como gateway) o bridge (transparente sin ser un salto de red), en mi caso lo hice bridge ya que el routing lo estamos haciendo en el equipo cisco y no queremos que sea accesible fuera de la vlan.
  • Autenticación: para manejar usuarios y contraseñas y añadir seguridad al shaper, esto es necesario para que si algún usuario logra acceder al shaper no pueda cambiar el ancho de banda o jugar con la configuración Advertencia Debes crear cuentas de usuario ANTES de activar la autenticación.

Luego de todas estas desiciones guardamos los cambios y comenzamos a manejar nuestro ancho de banda.

La documentación sobre mastershaper esta en este sitio:

Sitio mastershaper
Howtos y ejemplos para usar mastershaper

Y como cuando escribí esto el sitio estaba caido subo mi copia de la documentación:
MasterShaper_documentation

Espero que les haya servido, este proyecto me llevó mucho tiempo pero ya está en producción, puede que iptables no funcione como debería, pero los parches funcionan aún, wheezy trae el kernel 3.2 el cual ya no es soportado por mastershaper 0.44, se está desarrollando la versión 0.66 pero no he logrado conseguirla (no dan links de git o tar para descargar) esta nueva implementación funciona en kernel 3.x y sin necesidad de parchear iptables (segun los comentarios del foro) así que cuando logre conseguir una nueva versión o un sustituto para mastershaper (claro también libre) escribiré otro howto.

Fuentes

mensaje 2741 foro de mastershaper en inglés
Documentación de mastershaper y los ejemplos del sitio (links al final de la sección E)

Estándar
/me, computadora, informatica, planet

Como instalar la tarjeta wifi 802.11n DLink dwa-525 en GNU/Debian

Esta es una de esas piezas de hardware que son fáciles de encontrar pero difíciles de hacer funcionar, ya sea por que el chipset es muy nuevo o por que los drivers (de cualquier sistema que no sea windows) están perdidos en el espacio o no existen, afortunadamente logre encontrar como hacerlo funcionar:

El chipset debe dar esta respuesta en lspci

03:01.0 Network controller: RaLink Device 5360

Comencé buscando por el nombre del modelo de tarjeta, pero el que nos interesa es el chipset, ya que DLink parece estar vendiendo esta misma tarjeta con diferentes chipset (y por ende requieren drivers diferentes), primero parecía que este tutorial funcionaría con mi tarjeta:

https://steveswinsburg.wordpress.com/2011/03/12/how-to-install-a-d-link-dwa-525-wireless-network-card-in-ubuntu-10-04/

Y luego de seguir paso a paso todo lo que ahí decía no funciono ¬¬#, luego intente con otro de la comunidad ubuntu:

http://ubuntuforums.org/showthread.php?t=1559576

El mismo procedimiento, pero con otro driver… igual no funciono, luego me di cuenta que en todas esas publicaciones (y los que las copiaban) solo mencionaban los chipset  ralink 3060 (ese si funciona con los links anteriores) que aparece en lspci como:

Network Controller: Ralink Device 3060 0

Es completamente diferente al 5360 que yo tengo, entonces comence a buscar hasta en otros idiomas con el chipset como mi unica pista y llegue a este lugar también de la comunidad ubuntu (ESTA EN RUSO):

http://forum.ubuntu.ru/index.php?PHPSESSID=s17iic366u1v38f2cl4h60bua1&topic=190612.15

y gracias al traductor de google encontre mi respuesta:

-Primero necesitamos ESTE firmware de ralink

-Descargar la fuente de driver para compilar desde AQUI 

EDIT: Ya no se sigue este paso

-Extraer el archivo comprimido

-Editar con gedit, kate, vim o el editor de texto que tengan a la mano el siguiente archivo:

carpetaextraida/os/linux/config.mk

donde “carpetaextraida” es el directorio que se creó al extraer el driver, luego debemos buscar estas líneas:

HAS_WPA_SUPPLICANT=n 
y 
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT = n

Una ves encontradas cambiamos la “n” que esta después del “=” por “y” con esto le decimos al driver que habilite el soporte para WPA

Edit: paso nuevo:

Ahora abrimos el archivo

carpetaextraida/os/linux/pci_main_dev.c

Y buscamos el siguiente texto, donde agregamos la línea que dejo en rojo:

#ifdef RT5390
	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC5390_PCIe_DEVICE_ID)},
	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC539F_PCIe_DEVICE_ID)},
	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC5392_PCIe_DEVICE_ID)},
	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC5362_PCI_DEVICE_ID)},
        {PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC5360_PCI_DEVICE_ID)},
#endif /* RT5390 */

-Ahora debemos compilarlo, necesitamos los headers de nuestro kernel y las herramientas para compilar, las instalamos asi:

aptitude install build-essential linux-headers-$(uname -r)

Ahora si a construir, entramos en la “carpetaextraida” y como root ejecutamos:

make && make install

Esperamos a que compile sin errores y se instale (es desinstalable con make uninstall desde ese mismo directorio), les recuerdo que como es una instalación manual en el caso que el kernel se actualice o cambien el kenel  deberán compilar de nuevo.

Ahora a comenzar la configuración para que no de problemas primero extraemos el firmware que descargamos al principio, dentro de el nos aparecerá el archivo rt2860.bin el cual debemos copiar (como root) a /lib/firmware/.

Luego debemos agregar un driver a blacklist,  ya que genera conflicto con el que acabamos de construir:

echo "blacklist rt2800pci" >> /etc/modprobe.d/blacklist

(si tienen kernel 3 de backports entonces blacklist ahora se llama blacklist.conf)
yo en modo paranoico agregue de la misma manera estos también:
blacklist rt2x00lib
blacklist rt2x00pci
blacklist rt2800lib

Ahora habilitemos el modulo del driver:

modprobe  rt5390sta

Y lo agregamos a /etc/modules para que se cargue al inicio

echo "rt5390sta" >> /etc/modules

Y ahora un truco que nos permitirá usar ese driver con nuestro dispositivo:

Abrimos como root el archivo /etc/rc.local y antes de la línea que dice “exit 0” agregamos lo siguiente:

echo "1814 5360" | tee /sys/bus/pci/drivers/rt2860/new_id

Que forzará al driver a funcionar con el chipset 5360 que es el que posee nuestra tarjeta, luego solo guardamos todo y reiniciamos la maquina, network manager, wicd o ifconfig ya deben mostrarnos el nuevo dispositivo “ra0” y podemos entonces conectarnos y disfrutar de nuestro wifi.

Espero que funcione para ustedes de la misma manera que ha funcionado para mi.

Fuente ultimo edit: Ubuntu forums post 2008849 gracias a un comentario de Medusetfil

Estándar
informatica, laptop, planet

Usar recursos de google en kdepim

Se da el caso, estamos usando por primera ves un cliente de correo electrónico en lugar del webmail de google y olvidamos la dirección de correo a la que queremos enviar el mensaje :S, o la otra que queremos enviarle correo a alguien que le envíamos algún mensaje por ultima ves hace un par de años, pues icedove (thundebird) resuelve ese problema sincronizando los contactos de su libreta de direcciónes con la nuestra de la cuenta de google, en kmail es posible pero hay que hacer algunas configuraciones al sistema:

Si tienes KDE 4 instalado lo mas seguro es que ya tengas nepomuk y akonadi, si ves que gasta mucha memoria nepomuk en “preferencias del sistema” se puede apagar (solo apaga strigi que es el componente mas pesado y activo) ahora hay que instalar el complemento para que akonadi lea los contactos desde google:

aptitude install akonadi-kde-resource-googledata

Nos vamos a “Preferencias del sistema” -> “Avanzados” -> “Recursos de KDE”, ahi sale una lista de cosas que podemos agregar y que por defecto son archivos,

En Debian Wheezy, Kubuntu, OpenSuse y otras que usen kde 4.6 o superios la opción se encuentra en “Preferencias del sistema” -> “Información Personal”.

En la lista de recursos vamos a “Contactos”, veremos que ya hay una lista de contactos pero es un archivo, primero agreguemos una nueva con el boton agregar al lado de la lista de contactos, seleccionamos una “Libreta de contactos de Akonadi” , en el titulo dira “akonadi-resource” a eso le podemos cambiar el nombre, luego en la lista de fuentes abajo veremos que esta marcado un archivo, lo seleccionamos y le damos click al boton “Manage Address Book Sources”, ahi aparecera el archivo local que ya teníamos, antes de eliminarlo agregamos otro, damos click en “Add” y en la lista buscamos “Recurso Google Contacts de Akonadi”, lo seleccionamos e ingresamos nuestros datos de la cuenta de google (se guardarán encriptados en la cartera de KDE), luego sincronizamos y si el icono del recurso se pone en verde nuestros contactos ya estan agregados, salimos del díalogo, eliminamos el archivo normal de akonadi y aplicamos los cambios. Cuando abran kmail y escriban un correo nuevo este ya tendrá las direcciones que alguna ves hemos usado en gmail y además podremos agregar nuevas desde kmail, repetir los pasos para el calendario, pruebenlo y vean si funciona correctamente para ustedes

Probado en Debian Wheezy con KDE 4.6.5

Estándar
#slave, /me, informatica, planet

Servidor FTP para webmasters

Vamos con un procedimiento práctico, un webmaster hace sus páginas, arma el proyecto, diseña la página, etc. Pero nada de lo que hacen lo van a usar en local, sino en un VPS, un servidor web en otro lugar, por lo que se debe tener una manera para subir los sitios al lugar donde deben estar, esa es la labor de los sysadmin, en ocasiones se les puede dar un usuario en el sistema, pero quizás el webmaster no sea muy letrado en usar herramientas de línea de comando (como ssh), así que debemos darle una herramienta más accesible.

FTP: o Protocolo de Transferencia de Archivos es una forma ancestral para enviar archivos entre una maquina y otra, pero muy efectiva, la mayoría de los webmasters son familiares con los clientes (filezilla o los exploradores de archivos) así que ya sabiendo esto debes asegurarte de algunas cosas:

1- Que el webmaster solo pueda ingresar a la carpeta que contiene el sitio web
2- Que esa carpeta tenga permisos de escritura
3- Que el usuario con el que ingresará el webmaster no tenga shell (osea no pueda ejecutar comandos a parte del ftp), claro a menos que tambien quieras habilitar ssh.

Empezamos, obviaremos el servidor web en este momento ya que no le compete a este post, primero instalaremos con aptitude nuestro servidor FTP, en este caso será vsftpd, muy recomendado por su seguridad y soporta SSL (en caso que seamos paranoicos o necesitemos realmente que pasen encriptadas las transferencias).

aptitude install vsftpd

Ahora comenzamos a construir la configuración, abrimos con nuestro editor favorito, al ser un servidor lo más seguro es que no tenga modo gráfico, asi que usaremos un editor de texto, como nano o vim (dependiendo de con cual prefieras trabajar).

vim /etc/vsftpd.conf

Y habilitamos lo siguiente:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

La línea listen=YES hace que el servidor acepte peticiones remotas, anonymus_enable lo desactivamos para que no puedan loguearse anonimos (usuarios sin contraseña) al ftp, local_enable sirve para que los usuarios del sistema sean los que se logueen en el ftp, write_enable le permite al usuario escribir en la carpeta y local_umask nos permite cambiar el acceso que se tendrá a los archivos, por ejemplo escribir y modificar pero no borrar, ahora al final del archivo debemos colocar lo siguiente:

local_root=/var/www/web

Bueno con esto le decimos al servidor que el usuario entrará directamente a /var/www donde normalmente se guardan las páginas web en los servidores y le damos un subdirectorio llamado “web” al que le daremos permisos de escritura luego, ahora para que no pueda ser posible ingresar a otros directorios del sistema hacemos esto:

chroot_local_user

Con esto el usuario tendrá como directorio por defecto a /var/www y solamente ese directorio.

Ahora creamos al usuario, si queremos que no tenga otro acceso que el de ftp entonces le deshabilitamos el shell (este paso se puede omitir si le daremos ademas ssh o si no lo creen necesario):

adduser -s /bin/false wemaster

Llenamos los datos y la contraseña del sistema será la contraseña del ftp.

Ahora le damos a “wemaster” la posesión de /var/www/web:

chown wemaster:wemaster /var/www/web

Y en el servidor Web redirigimos el “Document Root” a /var/www/web (o simplemente le dan los permisos a /var/www directamente), ahora a probar con un cliente ftp como filezilla, dolphin, nautilus o incluso firefox (solo ver, no escritura), usando como login “wemaster” y la password que le dimos a adduser al principio.

Fuente

Estándar
informatica, planet

No le compro nada a las discográficas a menos que: (post sobre dia sin DRM)

Bueno vengo no en el plan de recordar progenitoras en este post como muchos hacen al hablar del DRM (Digital Right Management), sino que vere el problema estilo comunidad (proponer ademas de criticar).

Pregunta importante: por que la gente piratea?

Pues puede ser por muchas razones, la predominante en este pais es la falta de recursos para gastar en medios “originales” aqui el salario minimo apenas sobrepasa los $100 y un solo cd valiendo entre $10 y $20 esta llevandose mas del 10% del sueldo de un trabajador promedio, las peliculas casi lo mismo y para colmo son compras ciegas no se sabe la calidad de la compra hasta que se pone en un reproductor (y el comprador tiene la tentacion de lanzar el cd por la ventana como si fuera de win2 vista) la salvacion aqui es que es legal descargar y quemar música siempre y cuando no se venda (derecho de copia privada).

Con los juegos la razon es ademas de economica la cultura salvadoreña de compartir toda obra digital que cae en nuestras manos y por la misma gana de la gente de hacer negocio con cualquier medio digital (aplica a todo).

Como puede verse los modelos de negocio antiguos aqui no funcionan, y lo peor que se puede hacer es bajar la calidad de los contenidos vendidos poniendoles DRM, llenando de anuncios desmoralizantes sobre la “piratería” que la compara con robos de autos y carteras o advertencias que son casi amenazas con logos del FBI.

Cuando por paranoia o por pensar que todos los usuarios que no les pagamos por sus contenidos somos unos criminales BAJAN DRASTICAMENTE LA CALIDAD DE SUS PRODUCTOS cuando les ponen DRM, ejemplo:

DVD pirata vs Original (eng)
Audiolibro con DRM vs audiolibro descagado de p2p

Por eso aqui van las

Propuestas libres de tuxwarrior

1) Para los juegos: Regalen promocionales o coleccionables con los juegos originales y den gratis la membresía al que los compro si es un juego online, diganme quien no comprara un juego de Super Mario que traiga un muñeco del personaje  o un tomb raider con un poster en alta resolucion de Lara Croft (‘¬’), asi los que consigan copias “no autorizadas” (piratear es robar barcos) solo tendran un juego.

2) Para las peliculas: Quiten esa cantidad enorme de trailers y anuncios espameros, en el cine estan bien, dan tiempo de esperar a tu novia que fue al baño antes de empezar, pero en la casa dan ganas de pegarle una patada al televisor, y los anuncios del FBI lo unico que hacen es pre-criminalizar al que si pago por la pelicula (y simplemente dejen titulos para descarga gratis que incluyan los anuncios y todo lo demas en calidad estandar si quieren).

3) Música: poner DRM en la música es la peor estupides que pueden hacer con un cliente que les pago, ahora la misma persona puede tener 3 o 4 dispositivos donde querra tener una copia de su canción o album (ipod o mp3 player, pc,car audio, celular) y no tolerara comprar una pista o un cd que venga con anti copia y que no le deje ripear el cd, o copiar la canción de un dispositivo a otro o quemarla, hay estudios que muestran que la musica sin DRM se vende mucho mejor que la con DRM, y como segunda propuesta los discos deberían bajar su precio a algo mas manejable por el cliente de pais no desarrollado (con $3 por un original creo que es manejable) ademas de quitar las restricciones de region para la venta de música en línea (por que demonios no podemos comprar música que salio en holanda o en japon por ejemplo, que nos quieren condenar a oir solo regueton acaso???).

4) Ebooks: La información debe ser difundida, la gente tiene derecho a conocer mas, y hacer que solo se pueda estudiar sobre un tema pagando mucho dinero se crea una enorme discriminacion, los ebooks son solo una forma mas de presentar un escrito, ponerles DRM es un golpe bajo a la persona que lo compro y a la que lo escribio, una forma de distribuirlos sería: venderlo a un precio razon able si no queda de otra, dar gratis el ebook si se tiene el impreso, y soltar algunas obras para libre descarga despues de cierto tiempo. tanto les cuesta eso?

Para terminar declaro mi rotundo rechazo a la implementación de DRM en todos los tipos de medio digital.

Estándar
informatica, planet

Montando Reportbug

Una de las cosas por las que la comunidad del software libre es conocida es por la importancia del trabajo comunitario, es decir si los usuarios creen que los developers o los que manejan cierto software la estan cagando reportan la queja, ya sea una
vulnerabilidad, un programa que se truena (crash) o simplemente quieren dar una sugerencia de alguna caracteristica que podría ser útil a otros usuarios (o al que lo reporto).

En la comunidad debian usamos un programa que sirve para eso, para reportar problemas en nuestra distro y ayudar a hacerla mas estable, este programa se llama Reporbug.

Este busca la información del paquete que presento problema o al que le pedimos caracteristicas nuevas para tener un reporte detallado y sobre todo “útil y legible para el desarrollador”.

Lo que necesitamos:

-Un sistema debian o derivado
-Reportbug (instalado por default en la mayoría)
-un MTA o servidor de correo (msmtp solo configuracion de usuario)(opcional)

Configurando reportbug

a) inicio, nivel de experiencia en Debian
Primero buscamos una aplicacion que nos esta dando problemas, luego damos el comando reportbug en la consola (para gnome ya hay un reportbug gráfico, para los que usan squeeze esta reportbug-ng también gráfico):

$ reportbug

Y nos aparecerá este mensaje:

Welcome to reportbug! Since it looks like this is the first time you have used reportbug,
we are configuring its behavior. These settings will be saved to the file "/home/user/.reportbugrc",
which you will be free to edit further.
Please choose the default operating mode for reportbug.

1 novice Offer simple prompts, bypassing technical questions.

2 standard Offer more extensive prompts, including asking about things that a
 moderately sophisticated user would be expected to know about Debian.

3 advanced Like standard, but assumes you know a bit more about Debian, including "incoming".

4 expert Bypass most handholding measures and preliminary triage routines.
This mode should not be used by people unfamiliar with Debian's policies and operating procedures.

Select mode: [novice]

Aqui dice:
“Bienvenido a reportbug!, Como parece ser esta la primera vez que usas reportbug configuraremos primero su comportamiento. Estas opciones se guardaran en /home/user/.reportbugrc, el cual tienes toda la libertad de modificar despues, elige el comportamiento predeterminado de operación para reportbug:

1 novato Ofrece preguntas simples omitiendo lo mas técnico

2 estandar Ofrece preguntas un poco mas extensas, incluyendo cosas sofisticadas, se espera que el usuario sepa sobre Debian

3 avanzado igual que estandar, pero asume que sabes un poco mas sobre Debian

4 experto Omite la mayoría de las medidas y las rutinas preliminares de pregunta. Este modo no debe ser usado por gente no familiarizada con las politicas y procedimientos de Debian”

Aqui elegiremos novato (si soy novato también) dando enter, si tenemos gnome nos preguntará si queremos interfaz gráfica o interfaz de texto, no es la gran diferencia, pero si te sientes mas cómodo/a con un entorno gráfico elígelo.

b) ¿Tienes acceso a internet?
Despues aparecerá la siguiente pregunta:

Will reportbug often have direct Internet access? (You should answer yes to this question unless you know what you are doing and
plan to check whether duplicate reports have been filed via some other channel.) [Y|n|q|?]?

Aqui dice: “¿Tendrá reportbug acceso directo a internet? (Deberías decir que si a esta pregunta, a menos que sepas lo que haces y planeas revisar si hay reportes duplicados por otro medio) “, si tienes internet lo mejor será poner si (enter), en caso de que no tengas internet (y este how-to lo has impreso) responde que no (n).

c) Identidad
Luego preguntará con que nombre pondrás el reporte de bug (tu nombre completo), será para ser reconocido entre la comunidad Debian (y para que un developer cerca de ti queme tu casa por darle mas trabajo XD).

Luego preguntará tu correo electrónico (sera de conocimiento público asi que buscate uno con buen filtro anti-spam).

d) ¿Has configurado el servidor de correo? Preguntará si tienen instalado un MTA, entro en modo cultural aqui:

(tuxwarrior se pone lentes de fondo de botella y se peina el pelo con la lengua de una vaca y 10 litros de gel)


MTA o Mail Transfer Agent es lo que conocemos todos como un “Servidor de correo”, o el software encargado de enviar o “transferir” correos hacia otras computadoras a traves de la red (ver definicion en Wikipedia: MTA), por favor no confundir con esos programas que usamos para enviar flames a listas de correo o cadenas a nuestros familiares XD, el thunderbird, evolution y todos esos son clientes de correo o MUA (Mail User Agent) tampoco ponemos aqui a los servicios de WebMail como gmail y hotmail.

Saliendo del modo cultural si tenemos instalado y configurado un servidor de correos el bug se enviará directo desde el reportbug, la mayoría de usuarios normales no tiene uno configurado (aunque si instalado), asi que responderán que no, (al final de este post pongo como montar un MTA sencillo solo para un usuario).

e) Final, Proxy y última indicación
Preguntará si se tiene un proxy en la red, en caso de existir hay que poner la dirección o la IP de esta forma: “http://192.168.1.1:puerto/&#8221; cambiando la IP por el dominio o la IP de tu proxy y el puerto por el puerto default para el proxy, si no hay proxy entonces dejar en blanco.

Ahora ya terminamos con la configuración inicial de reportbug, ahora a llenar un reporte:

Reportando un bug

Primero hay que saber que es un bug por definicion: “Un defecto de software (computer bug en inglés), es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora (software). Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación. Los errores pueden suceder en cualquier etapa de la creación de software” fuente Wikipedia:bug.

Antes de llenar nuestro reporte recomiendo leer las buenas prácticas para enviar reportes de bug efectivos aqui

Encuentro un bug
Si alguna aplicación se porta extraño, se traba, usa demasiada memoria para algo muy simple o sin explicacion alguna “Truena“.

Entonces llenamos un reporte de bug de esta manera:

$ reportbug

Llenando el bug
Primero nos preguntará el nombre del paquete afectado, para saber como se llama el paquete del cual viene nuestra aplicacion problemática usamos aptitude:

$ aptitude search amarok
i amarok - easy to use media player based on the KDE Platform

en este caso vemos que el paquete al que pertenece amarok se llama “amarok”, algunos otros son mas engañosos como “epiphany-browser” ya que solo “epiphany” es el paquete de un juego que se llama igual al navegador.
El paquete debe estar instalado, no debemos mandar bugs sobre software que no tenemos.

Luego saldrá una lista de bugs que ya se enviaron sobre ese paquete (pueden ser muchísimos), por favor revisen todos los que mencionen algo sobre el mismo problema si el bug ya lo envió otra persona entonces solo revisemos si tenemos datos para aportar al bug, pero no lo enviemos de nuevo, es redundante y una pérdida de tiempo enviar bugs duplicados.

Si el bug no existe o no se ha reportado entonces nosotros debemos reportarlo y aportar la mayor cantidad de información útil sobre el bug en ingles (la mayoría de los developers son angloparlantes).

Luego nos pedirá una descripción sencilla del bug.

Luego determinamos la gravedad del bug, que puede ser:
1-Critical: hace que otros programas no relacionado en el sistema (o el propio sistema) dejen de funcionar o lo hagan erroneamente

2-Grave: hace al paquete inservible para la mayoría de usuarios o causa pérdida de datos, o inserta un hoyo de seguridad que permite el acceso a las cuentas de usuarios que usen el paquete.

3-Serious: Viola severamente alguna convención de las politicas de Debian sobre paquetes o la libertad de estos (solo developers y mantainers deben usar este).

4-Important: El bug tiene un impacto importante en la usabilidad del paquete, pero no lo hace completamente inservible para todos los usuarios

5-Does not build: No compila (developers o gente que compila las fuentes de debian para cualquier propósito)

6-normal: como el nombre lo dice es lo que normalmente encontraremos, una opcion, acción o entrada hara que el programa truene, sin que el programa sea totalmente inservible

7-minor: Fallos cosméticos, como por ejemplo una palabra mal escrita, ayuda no útil, un boton no funciona o se porta extraño.

8- wishlist: sugerencias o peticiones de carácteristicas nuevas (posibles y útiles).

Segun esta lista elegimos la severidad, luego nos abre un editor (generalmente nano o vi) para escribir la información del bug, debajo de donde se menciona la severidad que elegimos hay un espacio en blanco donde podemos poner la descripción del bug y las pruebas que hicimos para corroborar que es un problema en el programa y no otra cosa como por ejemplo una mala configuración.

Para finalizar guardamos el bug (control+x nano 😡 vi) luego nos preguntara si deseamos enviar el bug, aqui respondemos si (enter) si tenemos un MTA configurado, en este caso el bug será enviado de inmediato al Debian BTS para su publicación y revisión de parte del responsable del paquete, si no tenemos MTA (la mayoría) damos no (n) y nos dara la ruta donde el bug estara guardado (/tmp/reportbug-archivo), abrimos esta ruta con un editor y copiamos su contenido, luego lo pegamos en un correo nuevo desde nuestro MUA (thunderbird, evolution, claws, mutt <—-si tienes mutt configurado TIENES UN MTA) a la dirección submit@bugs.debian.org o desde nuestro webmail (preferentemente gmail o alguno que no envíe correo en HTML por default).

Montando MSMTP como MTA

Para esta tarea necesitamos una cuenta que soporte envío SMTP, usare gmail para ejemplo, primero instalamos msmtp:

#apt-get install msmtp

Luego como usuario creamos un archivo llamado ~/.msmtprc, y llenamos de la siguiente manera:

account default
host smtp.gmail.com
port 465
auth on
user usuario
password passguord
tls on
tls_starttls off
tls_certcheck off
from usuario@gmail.com

Cambia usuario por tu user de gmail y passguord por la contraseña, luego prueba con este comando si puedes enviar correo:

$echo "una prueba esto es" | msmtp -d direccion@correo.com

Cambia la direccion de correo por una dirección que puedas revisar correo, si recibes un correo sin asunto proveniente de tu cuenta de gmail entonces funciona (puedes usar mutt con este MTA sencillo).

Este MTA solo cumple la funcion de enviar correo de tu usuario hacia la cuenta de gmail asi que no puede manejar recipientes POP3 o IMAP como los servidores completos (postfix, exim, sendmail).

Espero que les haya funcionado y a enviar bugs

mejoremos juntos el software libre aunque no podamos programar

Estándar