[Postfix espanol] postfix + Mysql

Wcom christian_conejero en ciudad.com.ar
Mar Mayo 7 15:58:05 CEST 2002


Querida lista despues de quemarme un poco solamente un poco el cerebro con
el sanitizer, pase al Mysql, me pasaron un paper que esta muy bien explicado
pero me da error en un paso, se lo muestro a ver si me dan una mano.

Este parámetro, es lo que se le va a poner delante de un valor que tendremos
en la BD para conseguir llegar hasta el lugar donde se guarda el buzón del
usuario. Vamos a dejarlo con "/"
virtual_mailbox_base=/
Señalamos a postfix que los UserIDs y GroupIDs de los usuarios de correo los
obtendrá por medio del archivo indicado, que accederá a MySQL
virtual_uid_maps=mysql:/etc/postfix/ids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf


A continuación indicamos que mediante el archivo mysql_virt.cf vamos a
acceder a MySQL para ver dónde están los buzones de los usuarios:
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf

local_transport = virtual
program_directory = /usr/lib/postfix


Pasamos a continuación a mostrar el contenido de los ficheros antes
referenciados en el main.cf llamados mysql_virt.cf, ids.cf y gids.cf. Todos
ellos hacen referencia a una Base de Datos implementada en MySQL, que más
adelante detallaremos.

mysql_virt.cf
#Usuario y password para acceder al servidor MySQL
user=postfix
password=postfix
#Nombre de la Base de Datos y la tabla
dbname=mail
table=passwd
#El campo que elegimos es maildir (lugar donde está el buzón), donde el id
del usuario coincida con el destinatario del mensaje
select_field=maildir
where_field=id
#El host que tiene el MySQL
hosts= (DONDE PUEDO VER EL HOST DEL MYSQL O CAMBIARLO)

ids.cf
#Usuario y password para acceder al servidor MySQL
user=postfix
password=postfix
#Nombre de la Base de Datos y la tabla
dbname=mail
table=passwd
#El campo que elegimos es uid
select_field=uid
where_field=id
#El host que tiene el MySQL
hosts=

gid.cf
#Usuario y password para acceder al servidor MySQL
user=postfix
password=postfix
#Nombre de la Base de Datos y la tabla
dbname=mail
table=passwd
#El campo que elegimos es gid
select_field=gid
where_field=id
#El host que tiene el MySQL
hosts=

También debemos modificar el archivo master.cf, añadiendo la línea:
virtual unix - n n - - virtual

Antes de que se nos olvide, debemos de cambiar también el archivo
/etc/login.defs , descomentando la línea "QMAIL_DIR Mailidir" para indicar,
que todos los usuarios que hagan login en nuestro sistema, usarán también el
formato Maildir. Debemos de comentar las 2 que aparezcan a su lado,
lógicamente.

Configurando MySQL
Hemos visto como Postfix va a hacer uso de MySQL. Vamos pues a instalarlo y
configurarlo:

apt-get install mysql-server

No hay que tocar nada reseñable en la configuración del MySQL. Únicamente,
si el servidor va a estar en otra máquina, tendremos que abrir un puerto
para que pueda "escuchar". Por defecto, esto no es así debido a temas de
seguridad. Para hacerlo, basta con comentar la línea skip-networking del
fichero /etc/mysql/my.cfg y rearrancar el servidor.

Bien, una vez que lo tenemos instalado, vamos a crear la Base de Datos y la
tabla necesaria para guardar toda la información de. Voy a mostrar cómo
hacerlo paso por paso:

#Nos conectamos como root en un principio
mysql -h localhost -u root -p
#Dentro ya de mysql:
mysql>use mysql;
#Seleccionamos los usuarios de mysql:
mysql>select * from user;

ESTA LINEA  LA ARMO ASI

#Insertamos el usuarios postfix con contraseña "postfix":
mysql>insert into user set Host='localhost', User='postfix',
Password=password('postfix');

mysql>insert into user set Host='ns1', User='postfix', Password='postfix';


#Creamos la BAse de Datos llamada mail
mysql>create database mail;
#Vemos si está creada:
mysql>show databases;
#Seleccionamos con la que vamos a trabajar:
mysql>use mail;
#Creamos la tabla en la que guardaremos la información de los usuarios
virtuales:
mysql>create table passwd(
id char(128)DEFAULT '' NOT NULL,
clear char(128)DEFAULT '' NOT NULL,
name char(128)DEFAULT '' NOT NULL,
uid int(10) unsigned NOT NULL,
gid int(10) unsigned NOT NULL,
home char(255)DEFAULT '' NOT NULL,
maildir char(255)DEFAULT '' NOT NULL,
KEY id (id(128))
);
#Vemos cómo ha quedado la tabla recién creada:
mysql> describe passwd;

ACA ESTA MI PROBLEMA CUANDO CARGO LA LINEA DE ABAJO

#Damos todos los permisos al usuario postfix en esta tabla:
mysql>grant all on mail.passwd postfix en localhost identified by "postfix";
#Dependiendo de la configuración, quizás haya que crear algún usuario del
estilo postfix en HOSTNAME... para que postfix pueda acceder desde otras
máquinas por ejemplo.

ESTE  ES EL ERROR

mysql> grant all on mail.passwd postfix en localhost identified by "postfix";
ERROR 1064: You have an error in your SQL syntax near 'postfix en localhost
identified by "postfix"' at line 1
mysql>


ESTO ME LO DEJA HACER PERFECTO

#Creamos tres entradas de ejemplo:
mysql>insert into passwd (id,clear,name,uid,gid,home,maildir)
values("ska en tartalo.spliter.net","ska","skalari","1003","8","/","/var/spool/
mail/ska/Maildir/");
mysql>insert into passwd (id,clear,name,uid,gid,home,maildir)
values("punk en tartalo.spliter.net","punk","punkarra","1002","8","/","/var/spo
ol/mail/punk/Maildir/");
mysql>insert into passwd (id,clear,name,uid,gid,home,maildir)
values("reggae en tartalo.spliter.net","reggae","rastaman","1004","8","/","/var
/spool/mail/reggae/Maildir/");
#Vamos a hacer una select a ver qué es lo que tenemos
mysql> select * from passwd;

mysql>quit

POR FAVOR HELP


-
Para quitarte de la lista enviar la linea "unsubscribe postfix-espanol" en
el cuerpo de un mensaje a majordomo en WL0.org



Más información sobre la lista de distribución Postfix-es