Introducción a Linux/Debian
Para más información, véase el artículo «Debian» en Wikipedia. |
Construir un paquete Debian desde código fuente
editarLos paquetes y el sistema de paquetes son parte fundamental dentro de Debian. El esfuerzo de muchos desarrolladores se centra en “debianizar” fuentes, es decir adaptar ficheros fuentes para que funcionen de acuerdo con el sistema de paquetes de Debian. Cualquier persona puede realizar un paquete aunque para que éste forme parte de la distribución debe ser desarrollador oficial.
Necesitamos disponer de los ficheros fuentes con el código original del programa que queremos "debianizar". Para este ejemplo utilizaremos las fuentes del programa "Hello" que muestra un mensaje de bienvenida por la pantalla Primero buscamos el paquete, por ejemplo tinyproxy.
apt-get cache search tinyproxy
Segundo descargamos el código fuente.
apt-get source tinyproxy
Tercero resolvemos dependencias
apt-get build-dep tinyproxy
Cuarto, modificamos lo que nos interese tanto en el código fuente como en las opciones de compilación y seguidamente creamos el paquete.
dpkg-buildpackage -rfakeroot -us -uc
Si todo va bien, que debe ir bien. Al hacer
ls -lha *deb
Veremos el paquete creado para nuestra máquina. Para instalarlo
dpkg -i tinyproxy
Otro ejemplo
editarObtener los archivos fuentes
Necesitamos disponer de los ficheros fuentes con el código original del programa que queremos "debianizar". Para este ejemplo utilizaremos las fuentes del programa "Hello" que muestra un mensaje de bienvenida por la pantalla. Descomprimimos las fuentes (normalmente se encuentran en un archivo.tgz), en este caso el archivo se llama “hello_2.1.1.tar.gz”
Modificando los fuentes
Algunos cambios comunes en los ficheros fuente son:
Cambiar la ruta de instalación
Normalmente los programas se instalan en el directorio /usr/local
. En Debian este directorio está reservado para las aplicaciones del administrador del sistema. Los programas en Debian deben instalarse en la ruta /usr/bin
. Normalmente los programas utilizan el fichero makefile
como guión (script) para compilar.
Por lo tanto deberemos mirar en este archivo y cambiar la línea:
BIN = /usr/local/bin
por:
BIN = /usr/bin
Cambiar las librerías
Normalmente en el fichero “makefile” se hace referencia a librerías que puede que no se encuentren en Debian o ni siquiera en Linux. Por lo tanto habrá que cambiar esas librerías por otras que existan en Debian y que hagan lo mismo.
Proceso de debianización. Directorio /debian
Nos situamos en el directorio de hacemos:
dh_make -e tudirección@de.correo -f ../hello_2.1.1.orig.tar.gz
“dh_make” es un paquete que probablemente no tengamos instalado en nuestro sistema por lo que habrá que descargarlo: “apt-get install dh_make”. Se trata de un script para debianizar fuentes. Tras ejecutar este comando nos creará, dentro del directorio donde se encuentran las fuentes, la carpeta "debian" que contendrá una estructura de archivos necesaria para crear el paquete de Debian. Bajo el directorio /debian hay algunos ficheros que no pueden faltar y que habrá que editar para completar lo que hizo por defecto "dh_make", estos ficheros son:
Fichero "control": Este fichero contiene varios valores que "dpkg" y "dselect" usarán para gestionar el paquete. Por ejemplo, nombre del paquete, desarrollador, prioridad, dependencias, arquitecturas soportadas, descripción.
Fichero "copyright": Este fichero contiene la información sobre la licencia y copyright de las fuentes originales del paquete.
Fichero "changelog": Este fichero contiene información que usan dpkg y otros programas para obtener el número de versión, revisión, distribución y urgencia de tu paquete.
Fichero "rules": Ahora se necesita mirar las reglas exactas que "dpkg-buildpackage" utilizará para crear el paquete. Este fichero es en realidad otro Makefile, pero diferente al que viene en las fuentes originales. A diferencia de otros ficheros en debian/, éste necesita ser configurado como ejecutable. "dh_make" te crea un por defecto que debería servir para paquetes simples.
Dentro del directorio /debian
, además de estos ficheros hay muchos más. Algunos de ellos tiene la extensión.ex, esto indica que son ejemplos.
Crear el paquete
Entramos en el directorio principal del programa y ejecutamos:
dpkg-buildpackage -rfakeroot
Te pedirá que introduzcas dos veces tu clave PGP. Tras ejecutarse, en el directorio inmediatamente superior aparecerán una serie de archivos:
hello_x.x.orig.tar.gz
: Es el código fuente original.hello_x.x.diff.gz
: Este fichero comprimido contiene todos y cada uno de los cambios que se hizo al código fuente original.hello_x.x.dsc
: Es una breve descripción del paquete, está firmada con PGP por la persona que lo ha empaquetado y tiene una valor de control (función hash MD5) de los dos ficheros anteriores para poder detectar si han sido modificados por alguien ajeno al desarrollador.hello_x.x_i386.deb
: Este es el paquete binario completo. Puedes usar "dpkg" para instalar o eliminar tanto éste paquete como cualquier otro.hello_x.x_i386.changes
: Este fichero describe todos los cambios hechos en la revisión actual del paquete, y es usado por los programas de gestión del archivo FTP para instalar los paquetes binarios y fuentes en él. Se genera parcialmente a partir del fichero “changelog” y elfichero.dsc
. Este fichero está firmado con PGP o GPG, de forma que cualquiera puedes estar aún más seguro de que es realmente tuyo.
Instalación del servidor de correo Courier
editarInstalación de un servidor de correo Courier.
Montamos
- SMTP correo saliente
- Envio y recepción de e-mail
- POP3
- Se usa para descargar.
- IMAP
- Descarga tb + por defecto solo descarga encabezados.
- Integraremos el SMTP con maildrop y através de este con un antivirus y un antispam
- A instalar:
- courier-authdaemon
- courier-base
- courier-imap
- courier-maildrop
- courier-mta
- courier-mta-ssl
- courier-pop
- courier-pop-ssl
- A instalar:
apt-get install courier-authdaemon courier-base courier-imap courier-maildrop courier-mta courier-mta-ssl courier-pop courier-pop-ssl
Eliminar script de arranque en Debian
update-rc.d -f exim4 remove
eliminar certificado de prueba del ssl del pop3:
rm /etc/courier/pop3d.pem
editamos el /etc/courier/pop3d.cnf
vi /etc/courier/pop3d.cnf -> /contenido
Salimos y creamos el certificado
mkpop3dcert
Editamos ahora el similar a pop3 pero para servicio smtp
vi /etc/corier/esmtpd.cnf
Despues de editar este fichero, hacemos:
cd /usr/bin rm /usr/lib/courier/esmtpd.pem mkesmtpdcert rm /etc/courier/esmtpd.pem ln -s /usr/lib/courier/esmtpd.pem /etc/courier/esmtpd.pem
Ahora creamos los alias de dominios.
- Se usan para centralizar cuentas.
- Nunca se debe leer el correo como root, postmaster, mailer-daemon, debido a lo cual se redirige a otra cuenta.
Editamos el fichero /etc/courier/aliases/system.
vi /etc/courier/aliases/system
Y ponemos
#Ponemos aquí al usuario del sistema al que queremos que llegue el correo. postmaster: jesus
Creamos el directorio:
mkdir /etc/courier/aliasdir/
Ejecutamos:
makealiases
Ahora vamoa configurar el SMTP-AUTH que consiste en:
ampliar datos sobre relays
- Relay abierto, no pide claves para el envio de coreo.
- Relay cerrado pide clave para enviar correo, básicamente debido al spam
Le vamos aindicar a courrier que debe pedir nombre y contraseña.
vi /etc/courier/esmtpd
Y buscamos AUTHMODULES
Debe poner lo que pone, verificar que no esté vacio ""
Ahora buscamos ESMTPAUTH y ponemos
ESMTPAUTH="LOGIN"
Ahora le indicamos que queremos ser un relay completamente cerrado
vi /etc/courier/smtpaccess/default
No permitimos enviar correo sin contraseña a las redes 10* y 192.168*, para lo cual comentamos las líneas siguientes
10 allow,RELAYCLIENT 192.168 allow,RELAYCLIENT
Siempre que se toca /etc/courier/smtpaccess/default se debe hacer:
makesmtpaccess
Creamos el fichero /etc/courier/me y metemos:
vi /etc/courier/me
pol4.net localhost localhost.localdomain
Y en el fichero /etc/courier/locals metemos lo mismo que antes:
vi /etc/courier/locals pol4.net localhost localhost.localdomain
Con esto ya casi está.
Para arrancar el servicio, se deben parar varios demonios. Debido a esto vamos a hacer un script para que lo haga él solo:
#!/bin/bash /etc/init.d/courier-authdaemon restart && /etc/init.d/courier-mta restart && /etc/init.d/courier-pop restart && /etc/init.d/courier-imap restart && /etc/init.d/courier-mta-ssl restart && /etc/init.d/courier-pop-ssl restart
Le damos permisos de ejecución
chmod u+x /sbin/reiniciacourier
Quedan unos ajustes, pero ya puede enviar y recibir correo.
Hay 2 formas de dejar el correo:
- Mailbox
- Implica que haya un fichero por usuario y dentro todos los correos.
- Maildir
- Es multifichero y
- new, un fichro por correo nuevo sin leer
- cur, un fichero por correo nuevo pero leido
- tmp,
- Es multifichero y
Esta estructura de tipo maildir usa en cada /home/usuario del sistema. Debido a lo cual si queremos que se cree este directorio automáticamente cuando creamos un nuevo usuario, crearemos este direcorio en el /etc/skel. De la siguiente manera:
su - jesus maildirmake Maildir
Esto para cada usuario.
Para usuarios nuevos, en /etv/skel se crea el direcotrio Mail
maildirmake /etc/skel/Maildir
22/11/05
editarEstandares:
crear fichero /etc/courier/bofh
nano /etc/courier/bofh
Y metemos este texto
opt BOFHADMIME=accept
Algunos sistemas mandan cabeceras erroneas, como hotmail. Hay tres formas de solucionar esto
- Rechazarlo
- Aceptarlo
- Por defecto-> Envia un mensaje de aviso con el correo, debido a lo cual puede haber errores. enlace
Para evitar esto, se hace lo comentado antes.
Para conseguir más rapidez de conexión:
En /etc/courier/esmtpd
nano /etc/courier/esmtpd
Buscamos TCPDOPTS y lo cambiamos por:
TCPDOPTS="-stderrlogger=/usr/sbin/courierlogger -nodnslookup -noidentlookup"
-nodnslookup impide que cuando en el correo viene la ip, no la consulta de nuevo.
-noidentlooku, evita que se conecte al servicio ident de la máquina que se conecta.
Integración de un antivirus con el correo.
editarInstalación
editarCourier --> amavis --> antivirus
1.- Buscar el paquete Debian que instale el fp-linux-ws.
- Lo descargamos.
wget ftp://ftp.f-prot.com/pub/linux/fp-linux-ws_4.6.2-1_i386.deb
- Lo instalamos
dpkg -i /home/jesus/fp-linux-ws_4.6.2-1_i386.deb
2.- Vamos a http://www.amavis.org/ y descargamos el paquete en código fuente.
wget http://web.archive.org/web/20060212053847/http://www.amavis.org/dist/perl/amavis-0.3.12.tar.gz
3.- Seleccionamos en el software de contribución un parche
wget http://www.amavis.org/contrib/amavis-courier.patch.2
4.-Descomprimimos el amavis.
tar xvfz amavis-0.3.12.tar.gz
5.- Aplicamos el parche que hemos bajado
patch -p1 < /tmp/amavis-courier.patch.2
6.- Ahora hay que instalar una serie de librerias.
apt-get install libmime-perl libconvert-tnef-perl libconvert-uulib-perl libarchive-tar-perl libcompress-zlib-perl libunix-syslog-perl nomarch libconfig-inifiles-perl libfile-mmagic-perl perl-suid unarj lha unrar rar libwww-perl zoo libarchive-zip-perl
- Básicamente son librería de compresión y descompresión de archivos.
7.- Instalar el paquete arc
apt-get install arc
8.- Seguimos
cd `aclocal --print-ac-dir`
Nos da un error debido a que aclocal no está instalado. Lo buscamos en debian.org
Está en el paquete automake como binario. Instalamos automake.
apt-get install automake
Volvemos a ejecutar cd `aclocal --print-ac-dir`
cd `aclocal --print-ac-dir`
Nos da como resultado el cambio de directorio al punto donde se encuentra aclocal.
Debemos buscar un archivo m4source/acx_pthread.m4 en el google y lo copiamos al directorio que nos da el comando anterior.
http://sentinel.dk/cookbook/?Courier-ClamAV-Amavis_combo&print http://www.google.com/search?q=m4source%2Facx_pthread.m4&sourceid=mozilla&start=0&start=0&ie=utf-8&oe=utf-8
Y descargamos el archivo acx_pthread.m4
wget http://autoconf-archive.cryp.to/acx_pthread.m4
En el directorio arriba indicado.
Nos vamos al directorio donde descamprimimos amavis, en nuestro caso
cd /tmp/amavis-0.3.12
Y ejecutamos
aclocal && automake && autoconf
Editamos el fichero de configuración
vi configure
Y buscamos MTA=sendmail
Quitamos sendmail y ponemos courier
MTA=courier
Añadimos un usuario
useradd amavis -d /var/spool/amavis -s /bin/false
Ahora configuramos para compilar, dentro del directorio dónde descomprimimos amavis.
./configure --with-amavisuser=amavis --enable-courier --with-mailto=postmaster --with-mailfrom=postmaster --enable-credits
Salida
- Configuration summary for amavis 0.3.12 "2003-03-07":
Install amavis as: ${exec_prefix}/sbin/amavis Configured for use with: courier Configuration type: simple Original sendmail.cf: Use virus scanner(s): FRISK Antivirus for Linux Scanner runs as: amavis Logging to syslog: yes Run-time directory: /var/amavis Quarantine directory: /var/virusmails Max. recursion depth: 20 Max. archive nesting depth: 3 Max. number of extracted files: 500 Add X-Virus-Scanned header: yes Display AMaViS credits: yes Warn sender: yes Warn recipient(s): yes Reports sent to: postmaster Reports sent by: postmaster
Y hacemos
make && make install
En estos momentos el Amavis ya está instalado, solo falta integrarlo con courier.
Integración de Amavis con Courier 24112005
editarLe damos todos los permisos a la carptea amavis
chmod 777 /var/amavis /var/virusmails
Y que ambas capetas pertenezcan al usuario amavis
chown amavis /var/amavis /var/virusmails
Y por fin solo queda editar el fichero /etc/courier/courierd.
vi /etc/courier/courierd
Buscamos DEFAULTDELIVERY, esta dirección la cambiamos para que pase por el antivirus antes de ir a la carpeta de correo, usamos maildrop para que antes de entregar el correo, lo pase por antivirus, antispam.... Cambiamos lo que hay por defecto por:
DEFAULTDELIVERY="| /usr/bin/maildrop"
Editamos fichero de configuración del maildrop.
vi /etc/courier/maildroprc
Y metemos esto
#Sacamos varias variables que el antivirus necesita import SENDER import RECIPIENT SH_SENDER=escape($SENDER) SH_RECIPIENT=escape($RECIPIENT) xfilter "/usr/sbin/amavis $SH_SENDER $SH_RECIPIENT"
Reiniciamos courier
reiniciacourier
Y hacemos pruebas en envio de correo. Existen varios archivos de test buscar por eicar1.zip a eiacarn.zip
Para obtener actualizaciones del antivirus.
/usr/local/f-prot/tools/check-updates.pl
Y para configurar las actualizaciones para que se ejecuten cada cierto tiempo usamos el crontab. Podemos hacer que se ejecute cada dia, cada semana o cada mes. Vamos a hacer que se ejecute cada dia. Editamos el el /etc/cron.daily
vi /etc/cron.daily/BaseVirus
Le insertamos la orden
#!/bin/bash /usr/local/f-prot/tools/check-updates.pl
Grabamos y salimos.
Y le damos a este archivo permisos de ejecución.
chmod 755 /etc/cron.daily/BaseVirus
Instalación del AntiSpam
editarEl correo no se elimina, sino que se indica como tal. Y el usuario es quién decide qué hacer con él.
apt-get install spamassassin
Editamos el fichero /etc/default/spamassassin
vi /etc/default/spamassassin
Y ponemos ENABLED=0 a 1
ENABLED=1
Y editamos el fichero de configuración del Maildrop
vi /etc/courier/maildroprc
Añadimos un nuevo xfilter antes del amavis.
#Analiza correos siempre que los correos sean menores de 256K if ( $SIZE < 262144 ) { xfilter "/usr/bin/spamassassin -P" }
Reiniciamos el courier
reiniciacourier
Y probamos con dos ejempos:
Este sin spam
zcat /usr/share/doc/spamassassin/examples/sample-nonspam.txt.gz | mail -s "Correo sin Spam" jesus@pol4.net
Este con spam
cat /usr/share/doc/spamassassin/examples/sample-spam.txt | mail -s "Correo con Spam" jesus@pol4.net
Editamos el fichero /etc/spamassassin/local.cf
nano /etc/spamassassin/local.cf
Y ponemos
rewrite_subject 1 report_header 1 defang_mime 0
Para sacar la ayuda del SpamAssessin
man Mail::SpamAssassin::Conf
Lista de correo válido o inválido.
Editamos /usr/share/spamassassin/60_whitelist.cf
nano /usr/share/spamassassin/60_whitelist.cf
Podemos configurar de forma genérica o individualizada el lenguaje delos mensajes.
vi /home/jesus/.spamassassin/user_prefs
Ó buscando parte del mensaje en el sistema
fgrep -i template /home/jesus/.spamassassin/*