miércoles, 25 de marzo de 2009

Variables de configuración del Postfix

La configuración de Postfix se hace por medio de variables predefinidas que pueden tener valores o listas de valores tomados de diversas fuentes. También se pueden declarar variables de usuario y usarlas en la configuración para mejor comodidad y claridad. La sintaxis de la declaración de variables en Postfix es sencilla:

<variable> = <valor>

donde <variable> es un identificador o cadena de caracteres que incluye solo los alfanuméricos y el signo de guión bajo (_), <valor> puede ser un valor cualquiera o una lista de ellos, que pueden estar separados por espacios o por comas, se hace evidente que un valor no puede tener espacios porque se usa como delimitador. Ejemplos:

dominios = dominio1.com dominio2.com dominio3.com
reglas_filtrado = regla1,no_entrada,permitir_todo
servidor = server.domain.com


Como ya se ha dicho el sistema ya trae un conjunto de variables predefinidas que cuando se les da valor estos ya tienen un significado y se hace una acción al respecto, pero este tema no lo voy a tratar aquí, en el sitio www.postfix.org están bien definidos esos significados.

Otra forma de asignar listas de valores a las variables en Postfix son las tablas lookup, estas pueden estar en un archivo o en bases de datos. Las tablas comúnmente tienen dos o tres columnas, siempre la primera es el índice (o algo que sirva para indicar) en la tabla y la segunda el valor, la tercera columna se usa mayormente para situar algún comentario, hay veces que no se usa. En estas tablas las dos primeras columnas no contienen espacios porque entre ellas se separan por estos o también usando tabuladores, la tercera si puede contener espacios y termina con el cambio de línea. Para definir que vamos a usar una tabla lookup como valor de una variable se usan varios modificadores, a continuación una lista de los que más se usan:

hash    - los índices son identificadores.
regexp - los índices son expresiones regulares.
pcre    - los índices son expresiones regulares compatibles con PERL.
mysql  - se trabaja con una tabla en una base de datos MySQL.
ldap    - se buscan los valores en un directorio LDAP.

Para usar una tabla lookup se pone el modificador y donde están los datos de la tabla, la sintaxis es como sigue:

<valor> = <modificador>:<identificador | camino a un archivo>

ejemplo:

usuarios = hash:/home/usuarios/lista

y el archivo /home/usuarios/lista debe contener algo como:
pepe    OK
lolo    
  OK
virus    NO


En el caso específico de hash se debe mapear la tabla con el comando postmap:

postmap /home/usuarios/lista

Cuando se hace esto se genera un archivo que se va a llamar lista.db que es el que se usa en realidad.
Con pcre y regexp es parecido a hash pero en estos casos no es necesario utilizar el comando postmap porque la tabla se toma del mismo archivo de texto.
Ejemplo:

correos_locales = regexp:/home/usuarios/locales

Y el archivo /home/usuarios/locales debe contener algo como:
/^[a-z][A-Z][0-9]@dominio.com.*/      OK Usuarios del dominio.

Cuando se usa el modificador mysql o el modificador ldap, lo que se hace en el archivo es especificar las variables de la conexión que se va a usar para extraer los datos.
En el caso de mysql se usan principalmente estas variables:

user          - Usuario para conectarse a la base de datos.
password   - Contraseña del usuario.
dbname     - Nombre de la base de datos.
table         - Tabla a la que va a acceder para acceder a los datos.
host          - Nombre o IP del servidor de bases de datos.
where_field -  Para la condición del WHERE.
select_field - Campo que se va a usar en la consulta.

ejemplo de uso con MySQL:

usuarios = mysql:/home/usuarios/usuarios.mysql.cf

e el archivo /home/usuarios/usuarios.mysql.cf debe contener:
user=usuario
password=qwerty
dbname=directorio
table=usuario
host=mysql.dominio.com

En el caso de un directorio LDAP las variables más usadas son:

server_host      - Nombre o IP del servidor LDAP.
search_base     - DN base donde se van a buscar los datos.
query_filter       - Filtro o condición de búsqueda.
result_attribute - Atributo LDAP donde está el dato que se quiere obtener.
bind                - "yes" o "no", dice si hay que autenticarse en el servidor LDAP.
bind_dn           - DN del usuario con el cual hay que autenticarse (en caso que bind sea yes).
bind_pw          - Contraseña del usuario que se va a autenticar.

Cuando se usa LDAP hay dos variantes, una es usar un archivo y la otra es poner la configuración dentro del mismo main.cf. Vamos a ver el ejemplo en las dos variantes seguido este párrafo.

Eejemplo en un fichero:

usuarios = ldap:/home/usuarios/usuarios.ldap.cf

y el archivo /home/usuarios/usuarios.ldap.cf va a contener:
server_host = ldap.dominio.com
search_base = ou=usuarios,ou=dominio,ou=cu
query_filter = (mail=%s)
result_attribute = nombre
valiases_bind = no

para hacerlo dentro del mismo main.cf sería así:

usuarios = ldap:usuarios
usuarios_server_host = ldap.dominio.com
usuarios_search_base = ou=usuarios,ou=dominio,ou=cu
usuarios_query_filter = (mail=%s)
usuarios_result_attribute = nombre
usuarios_valiases_bind = no



En nuevas versiones de Postfix se han adicionado nuevos modificadores como por ejemplo el pgsql que es para bases de datos PostgreSQL y se usa con las mismas variables que el de mysql. Para profundizar más en las variables que se usan y los modificadores remitimos al lector al sitio oficial del software, www.postfix.org .


No hay comentarios:

Publicar un comentario