Calculin
Contenido
Intro
Dado que el primer approach (usar web-cyradm) no funcionó porque...:
- el web-cyradm está medio muerto como proyecto,
- no pude hacer andar el cifrado MD5 con el pam_mysql (sí, compilé el libpam_mysql con MD5 y armé el paquete)
- postfix daba problemas todo el tiempo con las cosas más irrisorias como que no encuentra "localhost"
hice un cambio radical de estrategia y me puse a configurar el sistema con Postfix, Cyrus y backend LDAP.
Buscando en Google encontré esta página (que habla de una migración de no-sé-qué a postfix+cyrus), también vi esta otra página (que resita sobre una configuración de postfix+ldap+COURIER) y finalmente documentación de postfix. Entre todas estas cosas empecé a armar todo el asunto.
Instalación de cada parte
Paquetes instalados vía apt-get
- apt-get install slapd ldap-utils
- apt-get install postfix cyrus-pop3d-2.2 cyrus-imapd-2.2
Configuración
Certificado X.509 para cifrado TLS/SSL
Para armar el certificado que se usa en todos lados (IMAPs, ldap, web?) lo hice con el siguiente comando:
# mkdir myCA
# chmod 0700 myCA
# cd myCA
# mkdir {crl,newcerts,private}
# touch index.txt
# echo "01" > serial
# cp /etc/ssl/openssl.cnf .
# openssl req -nodes -config ./openssl.cnf -days 999 -x509 -newkey rsa:2048 -out cacert.pem -outform PEM
# openssl genrsa -rand /dev/urandom -out calculin.cafelug.org.ar.key
# openssl req -new -nodes -key calculin.cafelug.org.ar.key -out calculin.cafelug.org.ar.csr
# cp privkey.pem private/cakey.pem
# openssl ca -config ./openssl.cnf -in calculin.cafelug.org.ar.csr -out calculin.cafelug.org.ar.cert -days 9999
Nota: Lo importante es que al poner el valor de "Common Name:" puse "*.cafelug.org.ar" (así no rompe las p[e]lotas el browser diciendo que el certificado es malo)
LDAP
Di mil vueltas con esto, más que nada porque es el primer LDAP que configuro desde cero y no encontré algún documento que diga usa este schema que sale con fritas. Por lo que lei hay dos schemas más utilizados para trabajar con correo, uno es el de Courier y el otro es el de Qmail.
Me bajé el de courier. El tema no está en que postfix pueda encontrar si una dirección de correo es válida (y saber a qué casilla enviarla), el problema son los aliases (claro que pude haber usado el hash:/etc/aliases, pero así quién no?! :-)).
Para no hacer las cosas muy complicadas segui la recomendación del documento de bulma que propone armar dos ramas: "People" y "Postfix". En la primera van los usuarios y en la segunda cosas de Postfix (dughh!).
Acá pasteo un LDIF para que se puedan ver ejemplos de cada cosa:
version: 1
# LDIF Export for: dc=cafelug,dc=org,dc=ar
# Generated by phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) on March 22, 2008 4:27 am
# Server: My LDAP Server (localhost)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 7
dn: dc=cafelug,dc=org,dc=ar
objectClass: top
objectClass: dcObject
objectClass: organization
o: cafelug.org.ar
dc: cafelug
dn: cn=admin,dc=cafelug,dc=org,dc=ar
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: {crypt}XERparhpX9GD6
dn: ou=People,dc=cafelug,dc=org,dc=ar
objectClass: organizationalUnit
ou: People
dn: cn=Daniel Coletti,ou=People,dc=cafelug,dc=org,dc=ar
cn: Daniel Coletti
gidNumber: 5000
mail: dcoletti@cafelug.org.ar
sn: Coletti
uidNumber: 5000
objectClass: CourierMailAccount
objectClass: person
objectClass: top
objectClass: inetOrgPerson
homeDirectory: /var/vmail
quota: 0
userPassword: {CRYPT}Clave
dn: ou=Postfix,dc=cafelug,dc=org,dc=ar
ou: Postfix
objectClass: organizationalUnit
userPassword: {CRYPT}FxThcXLxmMTw.
dn: ou=Alias,ou=Postfix,dc=cafelug,dc=org,dc=ar
ou: Alias
objectClass: organizationalUnit
dn: cn=postmaster@cafelug.org.ar,ou=Alias,ou=Postfix,dc=cafelug,dc=org,dc=ar
objectClass: top
objectClass: organizationalRole
objectClass: CourierMailAlias
cn: postmaster@cafelug.org.ar
mail: postmaster@cafelug.org.ar
maildrop: dcoletti@cafelug.org.ar
maildrop: gacq@cafelug.org.ar
DomainKeys
Alternativas
- Implementaciones de domainkeys
- dkimproxy
- dk-milter
- dkfilter (del mismo autor de dkimproxy, deprecado?)
DKIMproxy
Debian packages: dkimproxy
- Howtos
dk-milter
debian packages: dk-filter?
- Howtos