# Introducción a Linux/Debian
## Construir un paquete Debian desde código fuente

Los 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.
Segundo descargamos el código fuente.
Tercero resolvemos dependencias
Cuarto, modificamos lo que nos interese tanto en el código fuente como en las opciones de compilación y seguidamente creamos el paquete.
Si todo va bien, que debe ir bien. Al hacer
Veremos el paquete creado para nuestra máquina. Para instalarlo

### Otro ejemplo

Obtener 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:
por:
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” 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:
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 el fichero.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

Instalació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
Eliminar script de arranque en Debian
eliminar certificado de prueba del ssl del pop3:
editamos el /etc/courier/pop3d.cnf
Salimos y creamos el certificado
Editamos ahora el similar a pop3 pero para servicio smtp
Despues de editar este fichero, hacemos:
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.
Y ponemos
Creamos el directorio:
Ejecutamos:
Ahora vamoa configurar el SMTP-AUTH que consiste en:
* 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.
Y buscamos AUTHMODULES
Debe poner lo que pone, verificar que no esté vacio ""
Ahora buscamos ESMTPAUTH y ponemos
Ahora le indicamos que queremos ser un relay completamente cerrado
No permitimos enviar correo sin contraseña a las redes 10* y 192.168*, para lo cual comentamos las líneas siguientes
Siempre que se toca /etc/courier/smtpaccess/default se debe hacer:
Creamos el fichero /etc/courier/me y metemos:
Y en el fichero /etc/courier/locals metemos lo mismo que antes:
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:
Le damos permisos de ejecución
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,
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:
Esto para cada usuario.
Para usuarios nuevos, en /etv/skel se crea el direcotrio Mail

### 22/11/05

Estandares:
crear fichero /etc/courier/bofh
Y metemos este texto
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
Buscamos TCPDOPTS y lo cambiamos por:
-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.
#### Instalación

Courier --> amavis --> antivirus
1.- Buscar el paquete Debian que instale el fp-linux-ws.
* Lo descargamos.
* Lo instalamos
2.- Vamos a http://www.amavis.org/ y descargamos el paquete en código fuente.
3.- Seleccionamos en el software de contribución un parche
4.-Descomprimimos el amavis.
5.- Aplicamos el parche que hemos bajado
6.- Ahora hay que instalar una serie de librerias.
*** Básicamente son librería de compresión y descompresión de archivos.
7.- Instalar el paquete arc
8.- Seguimos
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.
Volvemos a ejecutar 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.
Y descargamos el archivo acx_pthread.m4
En el directorio arriba indicado.
Nos vamos al directorio donde descamprimimos amavis, en nuestro caso
Y ejecutamos
Editamos el fichero de configuración
Y buscamos MTA=sendmail
Quitamos sendmail y ponemos courier
Añadimos un usuario
Ahora configuramos para compilar, dentro del directorio dónde descomprimimos amavis.
Salida
** Configuration summary for amavis 0.3.12 "2003-03-07":
Y hacemos
En estos momentos el Amavis ya está instalado, solo falta integrarlo con courier.

#### Integración de Amavis con Courier 24112005

Le damos todos los permisos a la carptea amavis
Y que ambas capetas pertenezcan al usuario amavis
Y por fin solo queda editar el fichero /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:
Editamos fichero de configuración del maildrop.
Y metemos esto
Reiniciamos courier
Y hacemos pruebas en envio de correo. Existen varios archivos de test buscar por eicar1.zip a eiacarn.zip
Para obtener actualizaciones del antivirus.
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
Le insertamos la orden
Grabamos y salimos.
Y le damos a este archivo permisos de ejecución.

#### Instalación del AntiSpam

El correo no se elimina, sino que se indica como tal. Y el usuario es quién decide qué hacer con él.
Editamos el fichero /etc/default/spamassassin
Y ponemos ENABLED=0 a 1
Y editamos el fichero de configuración del Maildrop
Añadimos un nuevo xfilter antes del amavis.
Reiniciamos el courier
Y probamos con dos ejempos:
Este sin spam
Este con spam
Editamos el fichero /etc/spamassassin/local.cf
Y ponemos
Para sacar la ayuda del SpamAssessin
Lista de correo válido o inválido.
Editamos /usr/share/spamassassin/60_whitelist.cf
Podemos configurar de forma genérica o individualizada el lenguaje delos mensajes.
Ó buscando parte del mensaje en el sistema