Otros sitios...

Búsqueda

Antispam

POP before SMTP con Sendmail y Qpopper

October 26th, 2008 by Jorge Machin

Esta es la solución basada en poprelay que utilizaba en mis años mozos en Interalia. Supone que se utiliza qpopper como servidor pop y sendmail como servidor SMTP.

Aunque la utilizaba hace mucho tiempo, pude comprobar que aún sigue siendo una opción vigente.

Poprelay

El código fuente de Poprelay se pueden encontrar en Sourceforge.

Una vez instalado, para hacerlo funcionar con sendmail, se debe integrar el siguiente código al archivo de configuración /etc/sendmail.mc:

# We probably want the access_db feature enabled.

FEATURE(access_db)dnl

# List of IP addresses we allow relaying from.

Klocalip hash -a<MATCH> /etc/mail/localip
Kpopip hash  -a<MATCH> /etc/mail/popip

LOCAL_RULESETS

SLocal_check_rcpt

# Put the address into cannonical form (even if it doesn't resolve to an MX).

R$*   $: $>Parse0 $>3 $1
R$* <$*> $*  $: $1 <$2 .> $3      Pretend it's canonical.
R$* <$* . .> $*  $1 <$2 .> $3   Remove extra dots.

# Allow relaying if the connected host is a local IP address.

R$*   $: <$&{client_addr}>  Get client IP address.
R<>   $#OK    Local is ok.
R<$* . $-> $*      $(localip $1.$2 $: <$1> . $2 $)    Check last three octets.
R$* <MATCH>  $#OK
R<$-> $*        $: $(localip $1 $: <> $1 $2 $)    Check first octet.
R$* <MATCH>  $#OK

# Allow relaying if the connected host has recently POP3 authenticated.

R$*   $: <$&{client_addr}>  Get client IP address.
R<$*>       $(popip $1 $)   Check full address.
R$* <MATCH>  $#OK

# IP address didn't match.

Recreamos el archivo /etc/sendmail.cf con:

m4 /etc/sendmail.mc> /etc/sendmail.cf

Crear el archivo /etc/mail/localip el cual contiene una lista de todas las direcciones IP y redes que se les va a permitir hacer relay sin autentificacion.

touch /etc/mail/localip

Crear el archivo /etc/mail/popip:

makemap hash /etc/mail/popip </dev/null

Copiar el archivo poprelay a /usr/bin y darle permisos de ejecución para sólo para root:

cp poprelay /usr/bin

Modificar la función scanaddr del archivo /usr/bin/poprelay según la versión del servidor de correo POP:

qpoper 2.5X

sub scanaddr ($) {
   local $s, $i, @adressen;
   $s = $_[0];
   $i = index ($s,'popper');
   undef @adressen;
   if ($i>=0){
   ($s =~  /.*?popper.*?POP login.*?(d{1,3}.d{1,3}.d{1,3}.d{1,3})/) && (push (@adressen,$1));     
   }
   return @adressen;
}

qpoper 3.X o posterior:

sub scanaddr ($) {
   local $s, $i, @adressen;
   $s = $_[0];
   $i = index ($s,'popper');
   undef @adressen;
   if ($i>=0){
   ($s =~  /.*?popper.*?(d{1,3}.d{1,3}.d{1,3}.d{1,3})/) && (push (@adressen,$1));     
   }
   return @adressen;
}

Levantar el demonio y colocarlo en /etc/rc.d/rc.local:

poprelay -d

o bien hacer un archivo de inicialización:

#!/bin/bash
#
# Init file for poprelay server daemon
#
# chkconfig: 2345 55 25
# description: pop/imap client relay deamon
#
# processname: poprelayd
# pidfile: /var/run/poprelayd.pid

# source function library
. /etc/rc.d/init.d/functions

# pull in sysconfig settings

RETVAL=0
POPRD="/sbin/poprelayd";
prog="poprelayd"

start()
{
        echo -n $"Starting $prog:"
        initlog -c "$POPRD -d" && success || failure
        RETVAL=$?
        [ "$RETVAL" = 0 ] && touch /var/lock/subsys/poprelayd
        echo
}

stop()
{
        echo -n $"Stopping $prog:"
        killproc $POPRD -TERM
        RETVAL=$?
        [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/poprelayd
        echo
}

reload()
{
        echo -n $"Reloading $prog:"
        killproc $POPRD -HUP
        RETVAL=$?
        echo
}

check()
{
        PROCS=`ps -ef | grep "poprelayd -d" | grep -v grep | wc -l`
        if [ $PROCS -ne 1 ]; then
        echo "Restarting dead poprelayd: $PROCS running";
                stop;
                start;
        fi
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        reload)
                reload
                ;;
        check)
                check
                ;;
        *)
                echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
                RETVAL=1
esac
exit $RETVAL

Posteado en Fedora, Linux | No hay comentarios »

Medición del Ancho de Banda en Linux

August 10th, 2008 by Jorge Machin

Un programa muy útil para saber cuanto ancho de banda esta gastando nuestra computadora es vnstat, el cual se puede instalar en Fedora usando yum:

yum install vnstat

Si lo desea compilar de los fuentes, los puede obtener de: http://humdi.net/vnstat/.

Una vez instalado creamos la base de datos para la interfaz que queramos medir, por lo general eth0:

vnstat -u -i eth0

Si se instaló compilandolo a mano, se crea además un cron que se ejecuta cada cinco minutos para llenar la base de datos:

0-55/5 * * * * /usr/bin/vnstat -u

O bien, se quita el comentario (#) en /etc/cron.d/vnstat para habilitarlo si se instaló con yum.

Después de un tiempo, podemos consultar nuestro gasto del dia con:

vnstat -d

O el mensual

vnstat -m

Posteado en Fedora, Linux | No hay comentarios »

Reviviendo MS-DOS 6.22 con QEMU

June 30th, 2008 by Jorge Machin

Al hacer el post de mis videojuegos favoritos, me di cuenta que algunos de ellos ya no los puedo jugar ni usando wine o dosemu. Afortunadamente queda la alternativa de usar un emulador de "PC" e instalar en ellos DOS, Windows 3.11 o Windows95 para disfrutarlos otra vez. Efectivamente, al emular la PC se obtiene una computadora lenta, pero las computadoras de esa época eran igual de lentas y actualmente no se nota la diferencia cuando se juega en una máquina virtual.

Utilicé el conocido emulador QEMU porque funciona en Windows, Linux y Mac y las imágenes creadas son completamente intercambiables.

Instalando QEMU

En Fedora:

La instalación es con yum:

yum install kqemu

Si quiere utilizar aceleración por hardware, QEMU tiene un módulo que ejecuta directamente el código de máquina si se esta en una maquina compatible con los microprocesadores de Intel. Este se levanta como cualquier otro módulo:

modprobe kqemu

En Windows:

Solamente se necesita bajar y descomprir el archivo zip con los binarios de la siguiente página: http://www.h7.dion.ne.jp/~qemu-win/. No hay archivo de instalación.

En este post se va asumir que todo se hace desde la línea de comando. Si usted prefiere, puede intentar usar el programa Qemu manager.

Si desea utilizar la aceleración por hardware, es necesario que baje e instale el archivo Kqemu-version-install.exe.

Instalado MS-DOS 6.22

El primer paso es crear una imagen del disco duro donde vamos a instalar todo, para ello ejecutamos el comando:

qemu-img create dos622.img 1000M

El nombre de la imagen donde instalaremsos es dos622.img y su tamaño es de 1 GB. Es usted libre de cambiar el tamaño a sus necesidades.

El siguiente paso es instalar el MS-DOS. Afortunadamente cuento con unas imagenes de los diskettes de una computadora que tuvé. Si usted tiene los diskettes los puede utilizar dando la ruta o creando primero una imagen usando dd o windd. El comando para hacer la imagen de los diskettes sería de la forma:

dd bs=2x80x18b if=/dev/fd0 of=/tmp/disk1.image

Ahora que si no cuenta con un sistema operativo MS-DOS original, podría intentar con FreeDOS o con DR-DOS, que igual y son mejores porque su desarrollo continúa hasta la fecha. Yo utilicé MS-DOS porque los tengo a la mano y usar los originales fue parte de este reto personal.

Con las imagenes o los diskettes a la mano, ejecutamos el comando:

qemu -boot a -fda disk1.img -hda dos622.img

En Windows es necesario agregar el parámetro L al directorio donde esta la instalación. Si estamos sobre el directorio de instalación el comando se transforma en:

qemu -L . -boot a -fda disk1.img -hda dos622.img

Desde aquí se puede seguir la instalación normal del MS-DOS.


¿Evocando pesadillas del pasado?

Los cambios de diskette que pide el instalador se pueden hacer accediendo a la consola, la cual se abre con las teclas 2 y usando el comando:

change floppy0 disk2.img

Si QEMU no conoce el dispositivo floppy0, puede ser porque su sistema lo nombre de otra forma. Para obtener los nombres de los dispositivos, puede ejecutar el siguiente comando y así cambiarlo por el correcto:

info block

Para regresar a la pantalla de instalación se presiona las teclas 1.

Una vez instalado el sistema operativo, se arranca sin la opción -boot y con todo la emulación del hardware que desee:

qemu -L .  -hda dos622.img -cdrom E:

Ahora si lo desea puede configurar a su gusto los archivos CONFIG.SYS y AUTOEXEC.BAT. Los mios tienen esta forma:

CONFIG.SYS:

DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=HIGH
LASTDRIVE=Z
COUNTRY=003,,C:\DOS\COUNTRY.SYS
SHELL=COMMAND.COM /P /e:1024
DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,,1)
FILES=50

AUTOEXEC.BAT:

@ECHO OFF
PROMPT $p$g
PATH C:\DOS
MODE CON CODEPAGE PREPARE=((850) C:\DOS\EGA.CPI)
MODE CON CODEPAGE SELECT=850
KEYB LA,,C:\DOS\KEYBOARD.SYS
C:\DOS\SMARTDRV.EXE /X
C:\DOS\SHARE.EXE /L:500
C:\DOS\DOSKEY.COM

Si necesita transferir archivos a la partición, en Linux, puede montar la imagen con el siguiente comando:

mount -o loop,offset=32256 dos622 punto_de__montaje

En windows, se pueden crear imagenes iso para leerlas desde QEMU, usar una disketera virtual como VFD o bien ver un directorio de nuestra máquina con el parámetro:

-hdb fat:/mi_directorio

Soporte para CD

Por lo general, los controladores de las unidades de disco compacto se incluían con ellas. Afortunadamente en el sitio 4DOS.infi se puede bajar unos controladores de Acer compatiples con atapi que funcionan correctamente con qemu.

Después de bajar el archivo APICD214.ZIP y transifir VIDE-CDD.SYS a nuestra imagen, se agrega la siguiente línea al archivo CONFIG.SYS:

DEVICE=C:\VIDE-CDD.SYS /D:MSCD001

y esta al AUTOEXEC.BAT:

C:\DOS\MSCDEX.EXE /S /D:MSCD001

Después de reiniciar, ya tenemos acceso a la unidiad de discos.

Soporte para ratón

Podemos usar el controlador CuteMouse que es un executable que podemos agregar al AUTOEXEC.BAT.

Aceleración por hardware

Si ya tiene instalado o cargado los módulos de kqemu, solo necesita agregar la opción -kernel-kqemu

Posteado en Emuladores, Fedora, Linux, Videojuegos | No hay comentarios »

Programación Flash/ActionScript 3 en Linux

March 11th, 2008 by Jorge Machin

En el pasado, programar aplicaciones en Flash significaba un problema para los usuarios de Linux por el poco soporte que daba Macromedia/Adobe. Afortunadamente, las cosas han cambiado un poco debido a que ahora esta disponible un compilador de AS3 en nuestra plataforma favorita. En este post trato brevemente como hacer películas "swf" en Linux desde la línea de comandos:

Instalación

1. Bajar el Adobe Flex 3 SDK de Adobe (flex_sdk_3.zip) de la siguiente URL: http://www.adobe.com/products/flex/flexdownloads/index.html

2. Como usuario root, desempaquetar el archivo flex_sdk_3.zip y poner algunos permisos para que todos los usuarios lo puedan utilizar:

mkdir /usr/local/bin/flex3
cp flex_sdk_3.zip /usr/local/bin/flex3
cd /usr/local/bin/flex3
unzip flex_sdk_3.zip
chmod a+r * -Rf
chmod a+x bin
chmod a+x bin/*
chmod a+x lib
chmod a+x frameworks
chmod a+x frameworks/libs
chmod a+x frameworks/libs/player
chmod a+x frameworks/locale

O bien, si se quiere evitar problemas, como usuario local en su home:

mkdir flex3
cp flex3_sdk_3.zip flex3
cd flex3
unzip flex3_sdk_3.zip

Escribiendo un programa de prueba

Para ilustrar la compilación, hacemos un pequeño programa de dos archivos que lo único que hace es desplegar un texto y un circulo en la pantalla. El primer archivo llamado SphericCow.as se encargada de dibujar un círculo negro (sobrecargando la clase "Shape"):

package {

    import flash.display.Shape;

    //

    public class SphericCow extends Shape {

       public function SphericCow() {

          graphics.beginFill( 0x000000, 1 );
          graphics.drawCircle( 80 , 70 , 30 );

       }

    }
   
}

El segundo archivo, llamado MyFirstProgram.as, es la aplicación en sí, que utiliza nuestra clase anterior y pone también un pequeño texto:

package {

    import flash.display.Sprite;
    import flash.text.TextField;

   
    //  Main class

    public class MyFirstProgram extends Sprite {
       
        public function MyFirstProgram() {

            var title:TextField = new TextField();
            title.text = "My first Program!";
            addChild(title);

            var sphericCow:SphericCow = new SphericCow( );
            addChild( sphericCow );

        }

    }

}

Compilando nuestro programa

Se compila con:

/usr/local/bin/flex3/bin/mxmlc MyFirstProgram.as

o si lo instalamos en nuestro home:

$HOME/flex3/bin/mxmlc MyFirstProgram.as

El cual creará un archivo MyFirstProgram.swf, el cual podemos arrastrar a nuestro navegador firefox para verlo en acción. Por supuesto, podemos agregar la ruta al archivo .bashrc para evitar el tener que escribir las rutas completas al compilar.

Posteado en Adobe Flash, Fedora, Linux | No hay comentarios »

Multimedia en Linux

November 20th, 2007 by Jorge Machin

En este post iré poniendo las instrucciones para instalar las aplicaciones básicas para disfrutar sin problemas de películas y videos en una caja Fedora.

Repositorio livna

Livna es un excelente repositorio para encontrar rpms de las aplicaciones multimedia.

rpm -ivh http://rpm.livna.org/livna-release-8.rpm

Xine

Xine es un excelente player para ver videos y archivos de música en varios formatos.

yum install xine
yum install xine-*
yum install libdvdcss* (Si se desea tener suporte para DVD.)

Real Player

El Real Player nos permite ver videos en su formato y ver canales de televisión en línea.

yum install compat-libstdc++-33

http://www.real.com/linux/

Protectores de pantalla OpenGL

Casi siempre me falta instalar los protectores de pantalla OpenGL que son muy llamativos y dejan a las visitas impresionados.

yum install xscreensaver*

Posteado en Fedora, Linux | No hay comentarios »

« Anteriores