Error: No coinciden los Tipos

Quizá alguno de mis pequeños descubrimientos te resulte interesante. Y si no coinciden nuestros tipos…

Archivos de la categoría ‘networking’

Orange me tanga?

Publicado por mrtypo12 en Diciembre 31, 2008

Pues tiene toda la pinta! :(

Resulta que desde hace meses (no sabria decir cuantos) tengo desconexiones mas o menos aleatorias de adsl. Al principio la cosa era algo asi como 1 desconexion cada 2 o 3 dias, nada demasiado molesto si no fuera por el hecho de que mi router (un billion que me costo unas 300 €, con recursos para gestionar el mogollon de conexiones que tira el amule) no reconecta cuando se cae la linea y tengo que reiniciarlo (esto no pasaba en el anterior firmware pero mira tu que mala suerte que ahora si pasa, o quizas si pasaba pero no se me dio el caso porque la linea iba bien, quien sabe).

Esto fue asi hace meses, pero es que ahora la linea se cae cada 30 minutos – 2 horas, lo cual es algo totalmente inmanejable. Curiosamente, lo que se cae no es la linea fisica sino solo la sesion ppp; si quito el emule la sesion ppp ya no se cae, si pongo el bittorrent se cae pero mucho menos, entiendo que porque este tira muchas menos conexiones que aquel aunque la descarga como todos sabemos es mucho mayor.

Quede claro que los valores de atenuacion y relacion señal / ruido son ideales (segun Orange) y que la linea adsl fisica no se corta (no se corta el enlace ATM sino solo la sesion ppp)

He probado con 2 routers y pasa exactamente lo mismo. He buscado en internet y efectivamente hay mas gente que a dia de hoy sigue con el problema, y no solo en Orage sino en Jazztel (comparten red? ni idea).

Finalmente me decidi llamar al telefono de atencion al cliente y me salio un chico que para mi sorpresa parecia saber de que hablaba, cosa extraña en estos casos.

El chico me recalco en multiples ocasiones que yo tenia un volumen de descargas muy alto, el dia que mas eran 3 gigas (que el viera, seguro que hay dias que me descargo mas que eso) y que eso podia perturbar la sesion ppp y cerrarla. El mismo fue el que pregunto si tenia algun programa de p2p instalado, me pregunto ademas cuantos pcs habia en la casa y si todos tenian un emule instalado, es decir, que el tio ya sabia por donde podian ir los tiros pero conmigo supongo que pincho en hueso: si tengo emule quito el utorrent, tengo prohibido que instalen el emule en los demas pcs de casa etc.

Al final echo la culpa al alto bandwith de subida (lo tengo en 30 ks para una linea de 512 kbits), que lo baje a 15 y a ver que tal. Por otro lado como tengo splitter cabe la posibilidad de que este tocado.

La verdad es que mi impresion se divide en 2 vertientes: o bien Orange esta empezando a capar el p2p por las bravas (que se te caiga la sesion ppp puede derivar en un cambio de IP y por lo tanto todas las posiciones en las colas se pierden, y aunque tu ip no cambie es evidente que en estas condiciones, y aunque el router te reenganche bien la sesion, la descarga es aproximadamente 3 o 4 veces mas lenta), o bien Orange se ha pasado conectando a clientes en su red y sus routers no pueden gestionar ese volumen de conexiones con lo que se dedican a cerrarlas de golpe y porrazo cada cierto tiempo, cuando detectan que la cosa se va de madre.

Y que hacer? pues el tema esta jodido porque encima he firmado un contrato de permanencia asi que como esto no se arregle solo queda la posibilidad de ir a la OCU y poner una denuncia de incumplimiento de contrato para darme de baja sin la penalizacion correspondiente.

Solo decir q realmente si Orange tiene mal dimensionada su red y fuerzan las desconexiones ppp me parece inadmisible. Por otro lado, teniendo en cuenta de que pais vienen y a quien tienen por presidente (a quien o a que, porque semejante personaje dudo mucho de que tenga relleno en la mollera con la idea de los 3 avisos y a tomar por culo) pues francamente, he pasado de defender a Orange a no recomendarlo en absoluto en el breve plazo de 2 meses.

PD: por supuesto limitar la subid a 15 ks no ha arreglado nada y todavia estoy buscando el dichoso PTR para saltarme el splitter, que como no lo encuentre me parece que jodido va a ser saber si es del spliter o que. Eso si, me apuesto un huevo y parte del otro a que no tiene q ver nada con el spliter.

Publicado en General, networking, orange, tecnologia | 1 comentario

Pakito: Recapitulando

Publicado por mrtypo12 en Abril 25, 2008

Esta entrada valdrá para esclarecer un poco la casuística que rodea, no a la instalación de Pakito, sino a su desempeño, features y todas estas cosas que siempre quedan un poco a la sombra. Las preguntas serían: “es lo mismo que tener un cliente de emule instalado en el PC?, realmente supone un ahorro energético?”

Por una parte las features del interface web son mucho menores que las de su homónimo ’standand-alone’: hay cosas que ya tenemos asumidas en un cliente gráfico de emule como son poder ver las colas de usuarios (y configurarlas), configurar las prioridades de subida y bajada de forma sencilla, ofuscación de protocolo, ip filter para banear aquellos rangos de ips que sepamos pertenecen a empresas que se dedican a envenenar la red emule (fake servers, clientes que publican videos anti-piratería etc), definir “amigos”, mensajería, IRC etc… muchas de estas cosas no se pueden configurar directamente con el interface web o incluso no tienen soporte en absoluto en amuled. Aun así no hay nada que yo haya echado en falta y que sea vital: una de las cosas que más me preocupaba era la ofuscación de protocolo para evitar el trottling de los ISPs, pero amule trae soporte para ello (no asi mldonkey, cosa que lo inutiliza totoalmente en muchos casos). Últimamente varios ISPs están ’shapeando’ conexiones p2p por el drástico método de enviar RSTs a clientes que inicien o mantengan una gran cantidad de conexiones abiertas en puertos no conocidos. Azuerus mantiene una lista de estos IPSs gracias a un plugin que ha sacado para su cliente 3.0 (la lista aquí).

La interface web de amuled es fea de cojones y espartana como pocas. No hay nada de AJAX ni ningún recurso para mejorar un poco el feedback, además añadir e-links es un poco tedioso porque tienes que copiar y pegar el link en el interface web y darle a descargar. Para ver el estado de las descargas hay que refrescar manualmente la página: son los inconvenientes típicos de un cliente web que no aprovecha en modo alguno los adelantos de la web 2.0.

Aun con todo lo indicado anteriormente puedo decir y digo que es un lujazo tener a Pakito entre nosotros: las descargas son muy buenas, con mi linea de 6 Mbits he descargado una media de 7 gigas por día, cosa que no esta nada mal para tratarse del emule (sobre bittorrent ya hablaremos en otra ocasión dado que pertenece a otra liga claramente: no creo que tuviera disco duro suficiente para mantener 1 semana de bittorrent a pleno rendimiento).

Por otro lado el ruido que emite el aparato, aunque claramente audible de noche, es ínfimo: supongo que lo mas ruidoso será el disco duro, que a veces da la impresión de emitir un ruido como de chapoteo líquido =:?? por lo demás lo que mas molesta de Pakito de noche es la luz del led de encendido, que es una autentica linterna azul y que recomiendo enfocar hacia otro lado porque si os da en la cara no vais a poder sobar en condiciones (o ponerle un cartoncillo o algo).

Finalmente consumos: sobre esto podría hacer miles de pajas mentales pero yo creo que lo mas indicado es contrastar los consumos de KiloWatio/h diarios de Pakito con el PC normal de casa. Las condiciones de medición han sido las siguientes:

- Medidor: EMC (ni idea del modelo oiga, es un producto ‘made in liddle’ o como se escriba, hogar de jubilados inadaptados todavía con el hábito de levantarse de la cama demasiado temprano, entre ellos mi progenitor).
- Duración: 8 horas exactas.
- Dispositivos medidos: Pakito y PC (fuente de alimentación de 500W, Intel Core2Duo a 1.67 Ghz, 2 gigas de Ram, 2 HDs SATA, 1 Grabadora DVD-+RW, 2 ventiladores de 12 cm en su interior, caja Antec SOLO, tarjeta grafica Nvidia 7800 sin ventilador). Solo se ha medido el PC, el monitor estaba apagado.

Los resultados son los siguientes:

PC: 0.74 Kw/h al día

Pakito: 0.14 Kw/h al dia

El consumo viene a ser entre 4 y 5 veces menos. Depende del lugar donde hagáis la medición el ahorro sera mayor ya que el KW/h se cobra muy distinto según la provincia (aquí anda por el 0.30 impuestos incluidos) pero la proporcion es esa. No entro en cuanto tiempo se tardaría en amortizar el bitxo porque eso ya varía mucho (hay que tener en cuenta que aunque el 90% del dia el PC esta apagado si es cierto que hay momentos en que los 2 aparatos estan encendidos con lo que el consumo es mayor que antes de traer a Pakito). POr otra parte el desgaste del PC principal será menor, otro punto a su favor.

En resumidas cuentas: buena o muy buena compra. Actualmente tengo rTorrnet con dtach instalado, del cual hablaremos en otro momento, pero también da buenos rendimientos. Por otro lado poder usar un único emule y que cada usuario se baje sus cositas en su propia carpeta compartida es un chollete, que podría verse coronado por un vídeo tipo AppleTV que los pillara por streaming y los pasara por la tele directamente. Eso si que molaría pero tendrá que esperar un tiempo.

Publicado en gadgets, hardware, linux, networking, tecnologia | Deja un Comentario »

Pakito finds Amuled

Publicado por mrtypo12 en Abril 23, 2008

Vamos allá:

Sobre una Ubuntu Server 7.10 hay que realizar las siguientes instalaciones previas:

apt-get samba open-ssh xinetd build-essential kernel-package libpng12-dev
libgd2-noxpm-dev libcrypto++dev

No se si me he dejado algo, creo que no. Con todo eso vamos a instalar algunas cosas que ahora mismo no se necesitarán pero en breves pondré otra entrada para recompilar el kernel al gusto de EPIA y VIA para intentar rebajar la memoria consumida. Tampoco creo que sea necesario el xinetd (lo instalé para open-ssh pero este servidor no tira de xinetd parece). Samba lo queremos para compartir lo descargado y el resto de cosas las pide el amuled.

Hasta aquí lo que se puede descargar desde repositorios que yo haya probado. A parte hay que descargarse el paquete zlilb desde aquí y el paquete wxWidgets desde acá y los dejamos en la carpeta /root. En ambos casos hacemos un

tar xvf fichero.tar.gz
./configure
make
make install

Con todo este mondongo ya instalado podemos descargar el amuled sin temor a encontrarnos fallos de dependencias. Para ello cogemos el toro por los cuernos y nos bajamos de aqui la última versión CVS que haya y la descomprimimos con tar xvfj fichero.tar.bz2

Ahora nos toca poner los parámetros del ./configure. Estos son los que yo he usado y parecen funcionar:

./configure --enable-optimize --disable-debug --disable-upnp --with-toolkit=base
--enable-amulecmd --enable-webserver --disable-monolithic --enable-amule-daemon

opciones a punta tralla. Recomiendo habilitar el optimize aunque me ha dado warnings a tutiplén cuando compilaba. Quizá algunas cosas queráis quitar: yo no puedo ni ver el uPnP y la info de debug suele ser tan críptica que en general no vale para gran cosa.

Una vez configurado le damos al make y make install. Aquí la cosa se alarga un poco (media hora aprox).

Ahora ejecutamos amuled a palo seco para crear el fichero ~/.aMule/amule.conf donde irá toda la configuración del demonio. Acto seguido ejecutamos amuleweb -w para generar el fichero remote.conf que en estos momentos no tengo muy clara su utilidad (en teoría valdría para configurar el servidor web pero todo se configura desde amule.conf).

Damos de alta una cuenta de sistema para ejecutar amuled con permisos de usuario cutre. Para ello hacemos un adduser amuled, contestamos todas las preguntas y copiamos el contenido completo de /root/.aMule a la carpeta /home/amuled.

Hecho esto vamos a configurar amuled mínimamente para que funcione y levante el servidor web. Para ello editamos el fichero amule.conf y modificamos las siguientes entradas:

En la sección [EMULE]

MaxUpload=30
MaxDownload=500

indicamos el máximo de subida y bajada en Kbytes por segundo

Port=4662
UDPPort=4672

Indicamos los puertos TCP y UDP que habremos redirigido convenientemente en nuestro router.

MaxSourcesPerFile=600
MaxConnections=990

Indicamos las conexiones máximas por fichero y totales. Las conexiones máximas totales no deben de pasar de 1000 porque las librerías utilizadas para todo el tema de red tienen esa limitación; por otro lado tampoco se yo si este hardware aguantaria valores muy altos.

TempDir=/home/amuled/.aMule/Temp
IncomingDir=/home/amuled/.aMule/Incoming

Aquí va el path de los temporales y del Incoming:

OSDirectory=/home/amuled/.aMule/

Este no se para que se usa pero por si acaso modificar.

DownloadCapacity=6000
UploadCapacity=512

Para temas estadísticos se indica el ancho de banda contratado con el proveedor en Kbits (no Kbytes como antes) por segundo.
En la sección [WebServer]

ECPassword= cadena
Enabled=1

Esto habilita el acceso por web y le da una contraseña. Para generar una contraseña hay que convertirla a formato MD5, que se podrá hacer con la siguiente instrucción:

$ echo -n yourpasswordhere | md5sum | cut -d ' ' -f 1

Nos dará un churro de caracteres q pegamos en ECPassword.

El amuled no soporta configurar categorías a través del front-end web asi que hay q ponerlas a piñón en el fichero amuled.conf

Aquí un ejemplo para 3 categorías.


[General]
Count=3
[Cat\#1]
Title=categoria1
Incoming=/home/amuled/.aMule/Incoming/categoria1
Comment=
Color=3329330
Priority=1
[Cat\#2]
Title=categoria2
Incoming=/home/amuled/.aMule/Incoming/categoria2
Comment=
Color=3329330
Priority=1
[Cat\#3]
Title=categoria3
Incoming=/home/amuled/.aMule/Incoming/categoria3
Comment=
Color=3329330
Priority=1

Para tener un directorio de compartidos tenemos que editar el fichero shareddir.dat y añadir entradas de este pelo:

/home/amuled/.aMule/compartir/bso
/home/amuled/.aMule/compartir/music
/home/amuled/.aMule/compartir/pdf
/home/amuled/.aMule/compartir/pelis

No es recursivo como se ve, así q tenemos que ir uno a uno.

Aquí tenemos el script de arranque que pondremos con permisos de ejecución en /etc/init.d. Podemos llamarlo “amuled” por ejemplo

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/amuled
WEB=/usr/local/bin/amuleweb
NAME=amuled
DESC=amuled
RUNAMULE=yes
USER=amuled
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
su $USER -c "$DAEMON -f"
while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
su $USER -c "$WEB --quiet &"
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
killall --quiet --ignore-case $WEB
killall --quiet --ignore-case $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
killall --quiet --ignore-case $WEB
killall --quiet --ignore-case $DAEMON
sleep 1
su $USER -c "$DAEMON -f"
while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
su $USER -c "$WEB --quiet &"
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0

podemos linkarlo en el runlevel3 si queremos que arranque al iniciar el sistema operativo.

Y esto es todo por ahora. Las conclusiones del sistema vendrán en una tercera entrega.

Publicado en gadgets, hardware, linux, networking | Deja un Comentario »

Pakito is born

Publicado por mrtypo12 en Abril 14, 2008

Continuamos (o más bien empezamos) con el proyecto Epatec. Refrescando un post anterior la cosa trataba de montar un mini-PC que sirva para descargar y compartir lo descargado en toda la LAN. De este modo mi familia podrá homenajear al señor Teddy Bautista a placer y solo tendré un emule en toda la red, cosa importante si no se quiere ahogar a conexiones el router.

Voy a dividir el asunto en 2 entradas (por lo menos): una para la instalación hardware y sistema base y otra para todo el software. Así que vamos allá con la primera entrega

Previo desembolso de 300 € cuento con los siguientes elementos en mi haber:

El Epatec (bautizado ‘pakito‘) tiene tornillos Hayen, ergo es necesario herramienta específica para poder desmontarlo.

El aspecto una vez desmontado es el siguiente:

Esta versión tiene espacio para meter un disco duro de 2.5″. Estos discos duros no llevan cable de alimentación aparte, parece que la toman de la faja IDE (nótese mi absoluta falta de conocimientos en este tema).

Una vez montado queda así:

No tiene mayor problema siempre y cuando no lo conectéis al revés, como fue mi caso. Sin más: no se detecta en la BIOS del txisme así que se le da la vuelta y listo. También decir que el cable IDE no abarca todos los pines del HD: quedan 4 libres que no los he conectado, no se muy bien para que valen pero funciona así.

Una vez remontado el tinglado pakito se comporta como un PC normal. Un detalle a resaltar: cargando la configuración orientada a ‘performance’ en la BIOS con el disco duro conectado el aparato ni arranca: se queda congelado en la pantalla de inicio y por no funcionar no funciona ni el botón de apagado. así que hay que elegir la configuración ’safe’.

El principal problema a la hora de instalar nada en sus tripas viene de la total ausencia de CD, DVD, disquetera etc. Solo tenemos la red así que nos tenemos que valer de ella para hacer la instalación. En este punto empecé de a dar varias vueltas, sabiendo que tenia muchas papeletas de acabar en PXE; y efectivamente, hay algunas soluciones (instlinux y otro) pero nada tan claro como PXE.

PXE es un entorno diseñado por Intel que consiste en:

  • Un cliente que en el arranque busca un servidor DHCP que le asigne una IP y le indique el servidor y el fichero que contiene la imagen a cargar.
  • Un servidor de DHCP con un par de extensiones habilitadas, que aparte de asignar la IP a los clientes que la pidan dará el nombre del fichero que contiene la imagen de arranque y la dirección IP del servidor TFTP que se usará para descargarla.
  • Un servidor TFTP que contiene la imagen a descargar.

Generalmente el servidor DHCP y el TFTP se encuentran en la misma máquina. Para instalar y configurar ambos dos en una Ubuntu podemos hacer lo siguiente:

apt-get install tftpd-hpa xinetd

Con esto tenemos el servidor de TFTP y el super servidor xinetd que lo lanzará.

En /etc/xinetd.d/tftp ponéis lo siguiente

service tftp
{
disable                 = no
socket_type             = dgram
wait                    = yes
user                    = root
server                  = /usr/sbin/in.tftpd
server_args             = -v -s /var/lib/tftpboot
}

y listo. Arrancais el xinetd con /etc/init.d/xinetd start y finito.

La segunda parte consiste en configurar un servidor de DHCP. Para ello:

# apt-get install dhcp3-server  

en /etc/dhcp3/dhcpd.conf quitais toda la morralla que trae y ponéis

option routers 192.168.1.254;

option subnet-mask 255.255.255.0;

option domain-name-servers 194.74.65.68;

filename = "pxelinux.0";

subnet 192.168.1.0
netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.254;
}

Bastante facilito y autodescriptivo. Se puede intutir que ‘filename’ tendrá el nombre de la imagen a cargar. Arrancamos con

/etc/init.d/dhcp3-server start

Ahora vamos a preparar los ficheros que el cliente a instalar se descargará. Para ello necesitamos el siguiente fichero descomprimido:

http://archive.ubuntu.com/ubuntu/dists/gutsy/main/installer-i386/current/images/netboot/netboot.tar.gz

Evidentemente este fichero inicia el proceso de instalación para una Ubuntu 7.10. Para otras distribuciones habra que buscar en google su equivalente. El contenido de fichero lo copiamos en /var/lib/tftpboot/ junto con el contenido de la carpeta /media/cdrom/install/netboot/ del CD de vuestra distribución.

Y no hay que hacer mucho más, comprobar que los dos demonios están arriba, que no dan errores y arrancar el cliente conectado a la red. Podéis mirar aquí para algún detalle adicional.

Una vez instalado y configurado reiniciamos a pakito y veremos que busca por DHCP un servidor que le asigne una IP. En el momento que la tenga cargará la imagen y tendremos ante nuestros gozosos ojos la pantalla de bienvenida de Ubuntu Server. A partir de aquí todo es coser y cantar: la instalación no difiere de una instalación normal sólo que los paquetes se descargán de Internet en vez de leerse de un hipotético lector de CDs.

Y hasta aquí la primera parte, que es la que quizá se salga mas de lo acostumbrado. En la próxima entrega instalaremos algunas herramientas básicas y el amuled, la versión sin consola gráfica del amule, así como el amuleweb, el servidor web que hace de interface entre el usuario y el amuled.

Publicado en gadgets, hardware, networking, tecnologia | Deja un Comentario »

Imap, la madre del tano!

Publicado por mrtypo12 en Marzo 28, 2008

Pues sí, qué gurú que quedaba hace tiempo abrir una consola y poner
asi del tirón:
telnet localhost 110
login pp
pass pp
list
retr 1

y luego quedarse mirando la pantalla mientras pasaba ese morzongo de datos en base64 que ni blas entendía pero que te dejaba la mar de hacker delante de los pringaillos.

Bueno, pues eso se acabó, al menos en esta entrada.

Recientemente he tenido la oportunidad de visitar el protocolo IMAP4, que como muchos sabréis es una especie de sustituto – mejora de POP3. Sin ánimo de avasallar con features diré que la mayor diferencia con el vetusto pero muy usado sistema de mensajería es que este protocolo mueve prácticamente toda la lógica de acceso al servidor; de esta forma se soportan carpetas, búsquedas y almacenamiento en el propio servidor de correo sin tener que manejar todo este follón en el lado del cliente.

Aquellos que usan IMAP4 suelen ser por un lado los usuarios de webmail (IMAP se viene a utilizar como pegamento entre el servidor web y el servidor de correo) y por otro lado los directivos que gustan de conservar toneladas de correos en su Outlook. De esta forma al conectarse al buzón sólo nos descargamos los encabezados y únicamente cuando hacemos doble click, el cliente pide al servidor los datos del cuerpo del mensaje. El colmo del despliegue viene de la posibilidad de pedir partes del mensaje (un adjunto, una cabecera MIME, el body etc…), de lo que se puede deducir que el servidor hace un parseo del contenido del mensaje, separándolo en partes y sirviéndolo bajo demanda. Si la implementación del protocolo por parte del cliente IMAP es acertada podemos abrir un mensaje con un adjunto de 50 megas que la descarga no se ralentizará: sólo se descargará el adjunto cuando pulsemos en ‘guardar como’. Por otro lado el cliente hace las funciones de una suerte de cache de datos, de forma que mantiene los mensajes mas consultados en local, descartando los menos visitados cuando el tamaño del buzón en local aumenta.

Por desgracia solo he podido dedicar un par de días a este tema, pero en ellos he podido probar 4 implementaciones de IMAP4, según he leído las más populares, en formato servidor:

- Microsoft Exchange 2003.
- Courier Imap 4.1.3-2ubuntu2.
- UWASH imapd 7:2002edebian-1-13-2.
- Cyrus 2.2.13.

Hubiera querido probar Lotus Domino que, según tengo entendido pega un par de patadas al RFC pero no ha podido ser por falta de tiempo.

Para cliente he elegido las opciones típicas:

- Outlook 2003.
- Outlook Express 6.0.
- Thunderbird 2.0.0.12.
- Evolution 2.12.1.
- Opera 9.26.

Sobre los 4 servidores destacar la sencillez de configuración básica para la mayoría.Dejando aparte Exchange el resto se instala solo con un apt-get install en la Ubuntu Server 7.10 que usé para las pruebas. Los únicos problemas vinieron de la mano de UWASH, un servidor casi centenario que se instala como demonio bajo inetd, que como sabeis hace ya tiempo que fue sustitutido por xinetd. El fichero de config que hay que añadir en /etc/xinet.d un fichero (llámalo ‘imap’ por ejemplo) tiene que contener lo siguiente para que funcione:

service imap2
{
instances = 60
log_type = SYSLOG authpriv
log_on_sucess = HOST PID
log_on_failure = HOST
cps = 25 30
disable = no
port = 143
socket_type = stream
wait = no
nice = 10
user = root
server = /usr/sbin/imapd
}

Lo importante es el campo server, port y poco más. El resto de cosas son copia pega del man de xinet.d

Por otro lado Cyrus parece ser el más featuroso: instalando la herramienta de configuración cyradm podemos conectarnos al servidor y dar de alta buzones, modificar ACLs, poner quotas y distribuir los
buzones entre varios particiones. También admite configuraciones en cluster. Una de las dificultades iniciales que me encontré es lograr conectar la herramienta de administración con el demonio. Para ello hay que editar el fichero de configuracion /etc/imapd.conf e indicar el tipo de autenticación alwaystrue.

sasl_pwcheck_method: alwaystrue

por si acaso también es recomendable poner

admins: cyrus root

para dar acceso de administración al usuario cyrus y root. Nétese que todo esto va en contra de una instalación para un entorno en prod.

En cuanto a clientes son todos muy similares, destacando por lo alto Thunderbird con la capacidad de recuperar fragmentos de mensaje y por lo bajo Evolution por lo inestable que me ha resultado.

A nivel de protocolo IMAP4 es bastate farragoso. A continuación os detallo una mini-guía básica para poder comprobar de forma elemental lainstalación y conectividad.

Primeramente nos enganchamos la puerto de IMAP (el 143)

telnet localhost 143

Todos los comandos tienen que ir precedidos de un número de secuencia llamado tag. Si no se indica da error. El servidor nos contestará con ese mismo número de secuencia. Desconozco la razón de esto, quizá se puedan enchufar varias peticiones sin esperar respuesta (pipelinig) y de ahí que el servidor incluya en la contestación el número de secuencia de la petición. Los números de secuencia pueden ser numeros o letra o una mezcla; solo hay que tener cuidado de no repetirlos en dos comandos distintos.

Para saber las capacidades del servidor ponermos:

1 capability

y el servidor nos devolverá algo así como

* CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN BINARY SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE

Para hacer login ponemos

2 login usuario contraseña

Una vez autenticados podemos movernos por los buzones del usuario:

Para listar los buzones

3 list “” “*”

o

3 lsub “” “*”

List lista todas las carpetas indicando si tienen subcarpetas y sus flags mientras que Lsub realiza una criba y no indica flags. Devolverá algo como esto:

* LIST (\NoInferiors \UnMarked) “/” Borrador
* LIST (\NoSelect) “/” “Bandeja de entrada”
* LIST (\NoInferiors \Marked) “/” .bashrc
* LIST (\NoInferiors \UnMarked) “/” .sudo_as_admin_successful
* LIST (\NoInferiors \UnMarked) “/” UW
* LIST (\NoInferiors \UnMarked) “/” .mailboxlist
* LIST (\NoInferiors \UnMarked) “/” “Elementos enviados”
* LIST (\NoInferiors \UnMarked) “/” .bash_logout
* LIST (\NoInferiors \UnMarked) “/” Trash
* LIST (\NoInferiors \Marked) “/” .profile
* LIST (\NoInferiors \UnMarked) “/” “Correo electr&APM-nico no deseado”
* LIST (\NoInferiors) NIL INBOX

Si queremos crear un buzón lo hacemos con create

4 CREATE “prueba”

y para borrarlo usamos delete

5 DELETE “prueba”

Para seleccionar un buzón y poder operar con los mensajes hacemos select

6 select “prueba”

* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 1 EXISTS
* 1 RECENT
* OK [UNSEEN 1]
* OK [UIDVALIDITY 1206417332]
* OK [UIDNEXT 13]
6 OK [READ-WRITE] Completed

Como se ve nos da cumplida cuenta del estado del buzón, los mensajes nuevos, los ya existentes etc.

Una vez seleccionado el buzón podemos listarlo, ver el contenido de un mensaje, cambiar sus flags, copiarlo a otra carpeta etc. La mayor parte de las operaciones de lectura y escritura de mensajes se hacen con los comandos fetch y append, aunque hay otros como copy, search, partial (este último permite recuperar un número arbitrario de bytes del mensaje).

Fetch tiene una sintaxis muy compleja, aquí sólo indicaré las típicas operaciones.

Por ejemplo, para recuperar los flags de todos los mensajes del buzón:

7 fetch 1:* (UID FLAGS)

devolverá algo como

* 1 FETCH (UID 1 FLAGS (\Recent \Draft))

Con este comando estamos recuperando un listado de todos los mensajes (en este caso solo 1) en los cuales se nos indican los flags y el identificador (UID) para podernos referirnos a cada mensaje con un número que lo identifica de forma unívoca. El primer parametro de Fetch es un rango (1:* es del primero hasta el ultimo, podemos poner 2:3 para recuperar el mensaje 2 y 3 o simplemente 4 si queremos recuperar el mensaje 4)

Podemos recuperar la estructura de un mensaje concreto con

8 fetch 4 (BODYSTRUCTURE)

que nos devolverá un churro ininteligible de datos :

1 FETCH (BODYSTRUCTURE ((“TEXT” “HTML” (“CHARSET” “ISO-8859-1″) NIL NIL “7BIT” 155 8 NIL NIL NIL NIL)(“APPLICATION” “OCTET-STREAM” (“NAME” “prueba.TMP”) NIL NIL “BASE64″ 63146 NIL (“ATTACHMENT” (“FILENAME” “prueba.TMP”)) NIL NIL) “MIXED” (“BOUNDARY” “————080306020500030305000606″) NIL NIL NIL))
8 OK FETCH completed

en esta maraña podemos ver que tenemos un adjunto en el mensaje de nombre ‘prueba.tmp’

(“APPLICATION” “OCTET-STREAM” (“NAME” “prueba.TMP”) NIL NIL “BASE64″ 63146 NIL (“ATTACHMENT” (“FILENAME” “prueba.TMP”))

si queremos recuperar partes del mensaje podemos hacerlo asi:

9 fetch 1 (BODY[0])
recupera las cabeceras
9 fetch 1 (BODY[1])
recupera el cuerpo9 fetch 1 (BODY[2])recupera el primer adjunto.Finalmente para salir de la sesión ponemos10 logoutHay muchos mas comandos, flags, conceptos, estados y posibilidades:
aquí no se ni si habremos llegado siquiera a rascar la superficie.

Y para rematar una sarta de links:

- cyrus http://asg.web.cmu.edu/cyrus/imapd/
- courier http://www.courier-mta.org/imap/
- uwash http://www.washington.edu/imap/

- RFC (1730 y su revision 3501): http://cyrusimap.web.cmu.edu//imapd/specs.html

Publicado en networking | Deja un Comentario »