El SysAdmin del 3er Mundo

todo lo que expliqué mientras nadie prestaba atención

dovecot entra en el baile

| Comments

Otra escupía que me cae en la frente. Desde que conozco linux, estoy oyendo hablar de postfix con ldap, postfix con mysql y siempre mi criterio era el peor.

Por lo general, veía a mis paisanos copiar guías y pasar mil trabajos creando la base de datos sin tener una finalidad útil. Ahora me doy cuenta que en un esquema monstruosamente grande; MySQL resulta útil.

Por ejemplo, aquí tengo planificado un gran despliegue de tecnología estrafalaria y voy a necesitar un esquema como el de google:

“una cuenta para todos los servicios”

Por el momento le va tocando el turno al correo, que aunque aún no tenemos operando el dominio; esta pronto a cumplirse.

Primero y principioso, instalar todo:

“instalar todo”
1
root@blackjack:~# aptitude install postfix-mysql dovecot-mysql

Seguidamente crearemos los usaurios del sistema. El esquema vmail corre como un usaurio aparte por una cuestión de seguridad.

“crear los usaurios”
1
2
3
4
root@blackjack:~# groupadd -g 5000 vmail
root@blackjack:~# useradd -g vmail -u 5000 vmail -d /var/vmail
root@blackjack:~# mkdir /var/vmail
root@blackjack:~# chown vmail:vmail /var/vmail

La base de datos, tienes más o menos esta estructura:

“estructura de las base de datos”
1
2
3
4
lazaro@leviatan:~/ejemplo$ rails console
Loading development environment (Rails 4.1.1)
irb(main):001:0> User.column_names
=> ["id", "username", "realname", "password", "created_at", "updated_at", "telefono", "correo", "quota"]

Lo que más nos interesa de aquí es username y password, sobre todo teniendo en cuenta que que se almacena cifrado, osea, un chorro de mierda hexagesimal.

Ahora vamos al fichero “/etc/dovecot/conf.d/10-auth.conf”. al fondo, le descomentamos el autenticador sql y le comentamos el de pam. Nos quedaría así

“fondo de 10-auth.conf”
1
2
3
4
5
6
7
#!include auth-system.conf.ext
!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

Ahora le diremos al autenticador como conectarse a la base de datos. El irá solito a buscar la table “users”. Especificamos las conexión. También le diremos las linea sql que debe tirar para buscar el username y el password.

También modificaremos el mecanismo de cifrado, le diremos que use SHA256 que es el generado por Ruby en mi esquema.

/etc/dovecot/dovecot-sql.conf.ext
1
2
3
4
5
connect = host=10.1.1.14 dbname=labasededatos user=usuario password=notelodiré
default_pass_scheme = SHA256
password_query = \
  SELECT username, password \
  FROM users WHERE username = '%n'

Por último y antes de pasar a postfix. En el fichero conf.d/auth-sql.conf.ext declaramos como se gestionará la base datos.

“/etc/dovecot/conf.d/auth-sql.conf.ext”
1
2
3
4
5
6
7
8
9
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/vmail/%n
}

Osea que el correo se almacene en /var/vmail/fulano y con usuario vmail. De hecho TODO el correo se almacenará con el usuario vmail; poniendo fin al perpetuo temor de escalada de permisos que descansa en el típico esquema /var/mail/fulano

En este caso, se chequeará el password contra SQL pero el almacenamiento se hará en /var/vmail, con eso no vamos contra el princpio del cual siempre me agarro y es que las Bases de datos, NO son sistemas de archivos.

Veremos en la próxima entrada, como se hace a postfix jugar con todo esto…

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

Comments