Instalando mailman en debian

Hoy me ha sorprendido gratamente lo fácil y sencillo que es instalar y configurar de forma muy básica mailman (un gestor de listas de correo). Lo he instalado en debian con soporte para leer las listas en apache y usando postfix como MTA.

Tan sencillo como:

apt-get install mailman 

Y contestar a unas sencillas preguntas. Luego editar /etc/mailman/mm_cfg.py para cambiar las rutas por defecto y el nombre del host en caso que sea necesario (para que por ejemplo vaya por SSL utilizando https://secure.tudomnio.tld/pipermail/.

Leer más

Lighttpd con SSL

Todos los servidores web suelen tener métodos bastante estándares para añadir SSL, lo típico cuando se usa OpenSSL es (como ya he explicado en otro articulo anterior):

Generar la clave privada:

openssl genrsa -out serhost.com.key 1024

Generar la solicitud de certificado:

openssl req -new -key serhost.com.key -out serhost.com.csr

Ahora queda o bien enviar esa solicitud a una entidad certificadora (que nos cobrarán: 10$ (registerfly), 20$ (godaddy) a otros precios menos razonables como verisign que intentará cobrar más de 350$ por certificado, todas las compañías hacen lo mismo, pero unas tienen «mas nombre» que otras).

La otra opción es optar también por una entidad certificadora gratuita (cacert.org) que ya no está reconocida ni siquiera por firefox, para lo cual, mejor, autofirmamos nuestro certificado (nos dará un aviso que el certificado no está firmado por una autoridad certificadora de confianza, pero podemos aceptarlo de forma permanente).

Actualización: Desde que se creó este artículo, existen alternativas gratuitas como por ejemplo: letsencrypt.

Para firmarlo y obtener un crt:

openssl x509 -req -days 365 -in serhost.com.csr -signkey serhost.com.key -out serhost.com.crt

Ahora necesitamos el certificado en formato .pem (el .pem no es más que el archivo .key y a continuación el archivo .crt), luego los concatenamos:

cat serhost.com.key serhost.com.crt > serhost.com.pem

En mi caso he guardado todos estos archivos:

  • serhost.com.key
  • serhost.com.csr
  • serhost.com.crt
  • serhost.com.pem

En un directorio: ssl-certs, de modo que tengo todo un poco más clasificado, hay que recordar darles los permisos adecuados (que el propietario sea el usuario con que se ejecuta lighttpd y solo puedan ser accedidos por él).

Una vez tenemos todo esto (vamos a suponer que en: /etc/lighttpd/ssl-certs) editamos el fichero de configuración de lighttpd (que suponemos está en: /etc/lighttpd/lighttpd.conf) y añadimos al final:

var.confdir = "/etc/lighttpd"
$SERVER["socket"] == "127.0.0.1:443" {
ssl.engine = "enable"
ssl.pemfile = var.confdir + "/ssl-certs/serhost.com.pem"
server.name = var.confdir + "serhost.com"
server.document-root = "/var/www/localhost/htdocs/"
}

Las opciones creo que son autoexplicativas, también se puede establecer la opción:

ssl.ca-file = var.confdir + "/entidadcertificadora.crt"

que indicaría donde se encuentra el certificado con que ha sido firmado nuestro propio certificado.

Por último, comentar que lighttpd soporta PHP, python, perl, ruby, y que tiene soporte para virtualhosts y diferentes módulos útiles: mod_proxy, mod_auth, mod_alias, mod_cache, mod_deflate, mod_cgi, mod_accesslog, mod_rewrite, etc, además, sus fuentes comprimidos ocupan unos 700 KB y parece ser que funciona más rápido que apache, una vez compilado a mano con todas las librerías y el man correspondiente ocupa menos de 2 megas (tras pasarle el comando strip).

Más información:

  • Configuración extraída y adaptada de: http://www.varlogarthas.net/blog/2007/03/installing_a_godaddy_ssl_certi.html (el enlace ya no funciona)
  • Lighttpd: http://www.lighttpd.net

mod_autoindex de apache

mod_autoindex es un módulo de apache que nos permite mostrar un listado de archivos y directorios de un directorio cuando no hay un fichero index predeterminado (o si bien queremos mostrar este listado y obviamos este index).

La documentación de este módulo, puede encontrarse en: http://httpd.apache.org/docs/1.3/mod/mod_autoindex.html

A continuación pongo un ejemplo de un archivo .htaccess que añade una cabecera y un pie al listado, además, añade descripción a los distintos archivos:

Opciones (convertir iconos en parte del link, que coja anchos de las descripciones de forma automática y muestre primero las carpetas y luego ordene por fecha de modo que los archivos más recientes se encuentren al final):

IndexOptions +IconsAreLinks
IndexOptions NameWidth=* DescriptionWidth=*
IndexOptions +FoldersFirst
IndexOrderDefault Ascending Date

Añadir descripciones a los ficheros:

AddDescription "Instrucciones de instalación del programa" LEEME.txt
AddDescription "Aplicación" aplicacion.tar.gz

Añade una cabecera (en lugar de: Index of diretory/)

HeaderName cabecera.html

Añade el pie de página

ReadmeName LEEME.txt

Lo bueno de este sistema es que podemos integrar el diseño de nuestro sitio (y más si usamos CSS) con el listado de archivos predeterminado de apache.

Manejando OpenSSL

Cosillas útiles que dejo aquí para referencias posteriores:

Crear una llave privada RSA de 1024 bits sin cifrar por contraseña (para que sea más fácil trabajar con ella, si se quiere cifrar añadir -des3 y -out llaveprivada.key sin el > llaveprivada.key)

openssl genrsa 1024 > llaveprivada.key

Generar un certificado X509 de 999 días de validez usando la llave privada generada anteriormente

openssl req -new -x509 -days 999 -key llaveprivada.key -out certificado.crt

ó

openssl x509 -req -days 999 -in server.csr -signkey server.key -out server.crt

Crear un .pem a partir de llave y certificado (yo los concateno a mano estos ficheros, aunque se puede hacer con openssl pasando varios parámetros).

cat llaveprivada.key > certificado.pem
cat certificado.crt >> certificado.pem

Pasar de PEM (.PEM) a PKCS12 (.P12)

openssl pkcs12 -export -in certificado.pem -out certificado.p12

Al revés (por si hace falta convertir un p12 a .pem)

openssl pkcs12 -in certificado.p12 -out certificado.pem

Links externos:

Sentencia LIMIT existe en oracle, MySQL y postgresql

La Sentencia LIMIT existe en oracle, MySQL y postgresql.

Todos sabemos que MySQL tiene una sentencia limit:

SELECT * FROM emp LIMIT 0, 30;

En postgresql es al revés:

SELECT * FROM emp LIMIT 30, 0;

Pues bien, oracle, como no iba a ser menos, también la tiene:

SELECT FROM emp WHERE rownum < 100;
SELECT FROM emp WHERE rownum > 100 AND rownum < 200;
SELECT * FROM emp WHERE rownum BETWEEN 100 AND 200

Pongo a continuación los comentarios que no se verñian de otro modo al migrar el blog.


OracleUSer 27 marzo, 2008, 04:29 no funciona asi, si utilizas order by:(


Jose Sanchez 27 marzo, 2008, 21:46 Mirando la página de oracle lo tienes aquí con order by:

select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;

http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html (enlace no funciona)


Broda Noel 10 mayo, 2012, 14:32 Gente,
Esto no funciona, porque ROWNUM tendría que «no cambiar de orden» en caso que se ordene.
Si se hace un ORDERBY, los valores ROWNUM de cada registro sigue siendo el mismo, ya que es algo así como el numero de registro en la tabla, el cual nunca cambia.
De esa forma es totalmente imposible ordenar.

O sea, prueben esto:
Hagan un Query buscando PERSONAS, ordenenlo por APELLIDO ASC. Anoten que registros les trae. Luego ordenenlo por APELLIDO DESC y verán que trae lo mismo, siendo que debería traer otra cosa muy diferente a lo que debería traer. Se pierde el orden.
No prueben con 100 y 200, prueben con valores muy pequeños


Jose 10 mayo, 2012, 14:53 Estimado Broda, en el artículo no hablo del order by, sólo en un comentario posterior sacado de la web de oracle, un ejemplo que no he probado por cierto.

Si quieres solucionar tu problema vas a tener que seguir probado y buscando 🙂


Cifrado en archivos y particiones

Artículo inservible, mejor visita los enlaces del final.

Iba a hacer un mini howto de como hacer una partición o archivo cifrado, pero resulta que ya hay muchos hechos, os pongo los 3 enlaces más interesantes que he encontrado.

http://www.gra2.com/article.php/20030906212453952 (enlace no funcional) => Explica como hacer un fichero o partición cifrado con uno de los algoritmos soportados por el kernel (AES, Blowfish, Twofish, RC5, RC6, Serpent, DES, XOR), además te da la línea que poner al /etc/fstab para que el usuario pueda montar la particion. [[ Copia local del articulo ]]

http://www.esdebian.org/staticpages/ind … 8111531180 (enlace no funcional) => Explica como hacer y montar un archivo cifrado y sin cifrar.

http://bulma.net/body.phtml?nIdNoticia=1970 (enlace no funcional) => Como no, en bulma siempre hay algo interesante sobre el tema.

Otros artículos relacionados