3 - Configuraciones

[editar]
Tutorial creado por tux.cl. Extraido de: http://www.tux.cl/articulos.php?id=3
30 de Noviembre de 1999

3.1 Mysql


Mysql es un potente pero humilde DBMS. No aguanta el 100% de la sintaxis de otros RDBMS, pero para nuestro caso, es suficiente.

Antes de comenzar, verificar que la database mysql esta creada. No esta demas ejecutar

# mysql_install_db

para crearla.

OJO! La distribucion de RPM de mysql viene con una error: los archivos de mysql no le pertenecen a mysql. Para ello no esta demas devolverles la pertenencia respectiva.

# chown mysql.mysql /var/lib/mysql -R

Hay que arrancar y configurar para partir a mysql.

# /etc/rc.d/init.d/mysqld start # chkconfig mysql on

Ahora, ejecutar

# mysql mysql>

Si devolvio la linea de comando mysql, significa que todo estuvo OK.

Ahora se debe crear el usuario Postfix (u otro, es para hacer mas facil el ejemplo).

Hay dos maneras. Una es a traves de mysqladmin, la otra es agregarlo 'a mano' a user.mysql. Prefiero la segunda.

mysql> use mysql; mysql> insert into user (host, user, password) values ('localhost', 'postfix', password('postfix'));

Se ingresa en la tabla el usuario Postfix con la password "postfix" o con cualquier password que se quiera. Para eso solamente cambiar password('postfix') por password('la_password_que_yo_quiera').

Ahora se debe crear la database 'mail'. Como dije, hay dos maneras. La manera facil, permitiendole al usuario Postfix acceder a ella es :

mysql> insert into db (host, db, user, select_priv) values ('localhost', 'mail', 'postfix', 'Y'); mysql> create database mail;

Salir de mysql.

mysql> quit;

Reiniciar mysql con

# mysqladmin reload

Verificar que el usuario Postfix pueda ejecutar mysql y acceder a la db 'mail':

# mysql -u postfix -p mail Enter Password:

Ingresar la contrasena de Postfix. Deberia devolver la linea de comando mysql:

mysql>

Si no lo hace, verificar la contrasena del usuario postfix.

Si se olvido la contrasena del usuario postfix, es facil cambiarla. Entrar a mysql como root.

# mysql mysql> use mysql; mysql> update user set password=password('nueva_password') where user='postfix'; mysql> quit; # mysqladmin reload

Si todo funciona bien hasta aqui, hay que crear las siguientes tablas (como root):

transport: Transporte, el mismo transporte de Postfix.

aliases : los 'alias' locales de la maquina. Necesario para entrega en dominios

virtuales y donde van a caer los mensajes (en un spool truculento en /home/postfix).

remote_aliases : 'alias' remotos, que pertenezcan a la maquina o a otra externa.

A crear las tablas!

# mysql mysql> use mail; mysql> create table transport(domain varchar(255) Primary Key, transport char(8), acceso varchar(2) default 'OK'); mysql> create table aliases (id int(6), alias varchar(255) Primary key, maildir varchar(255) not null, acceso varchar(2) default 'OK'); mysql> create table remote_aliases (alias varchar(255) Primary key, rcpt varchar(255) not null);

Estas tablas son necesarias para Postfix. Ahora agreguemos la tabla necesaria para autentificar a nuestros usuarios.

Este ejemplo es para el dominio "dominio1.com", aunque puede usarse cualquier nombre, pero no equivocarse en el nombre de esta tabla para futuras referencias en teapop.passwd.

mysql> create table dominio1 (user varchar(255) primary key, pass varchar(255) not null, maildir varchar(255) not null, active int(8) default 1); mysql> quit;

Luego

# mysqladmin reload

OJO!

Ahora hay que cambiar la contrasena de acceso de root para mysql. Esto es para evitar intrusiones desde la consola (o desde la misma maquina). Ademas, se debe borrar el usuario (eso es el usuario comilla comilla, el usuario vacio).

Este paso es totalmente opcional. Por lo general lo uso, para evitar sorpresas en la base de datos.

# mysql mysql> update user set password=password('nueva_pass_root') where user='root'; mysql> delete from user where user=
; mysql> quit; # mysqladmin reload

Mysql esta corriendo perfecto!

3.2 Postfix+Mysql


Aqui comienza la configuracion y los pasos mas faciles.

En /etc/postfix se encuentran (un monton!) los archivos de configuracion de postfix. Solo se necesita el principal, main.cf

Necesitamos configurar un par de cosas a este archivo:

myhostname = mydomain = inet_interfaces = all

Ahora, agregar las tablas de 'diccionario' (como las llama Postfix) con soporte de mysql. Todo esto en /etc/postfix/main.cf

transport_maps=mysql:/etc/postfix/transport.cf virtual_mailbox_base=/home/postfix virtual_uid_maps=mysql:/etc/postfix/ids.cf virtual_gid_maps=mysql:/etc/postfix/ids.cf virtual_mailbox_maps=mysql:/etc/postfix/aliases.cf virtual_maps=mysql:/etc/postfix/remote_aliases.cf

Ahora hay que crear los siguientes archivos en /etc/postfix:


transport.cf user=postfix password=<la_password_de_mysql_del_usuario_postfix> dbname=mail table=transport select_field=transport where_field=domain hosts=localhost
aliases.cf user=postfix password=<la_password_de_mysql_del_usuario_postfix> dbname=mail table=aliases select_field=maildir where_field=alias hosts=localhost
ids.cf user=postfix password=<la_password_de_mysql_del_usuario_postfix> dbname=mail table=aliases select_field=id where_field=alias hosts=localhost
remote_aliases.cf user=postfix password=<la_password_de_mysql_del_usuario_postfix> dbname=mail table=remote_aliases select_field=rcpt where_field=alias hosts=localhost
Algunas personas me comentaron que no funcionaba si se colocaba hosts=localhost

Gracias a Alvaro Navarro por detectar un "workaround":

Para que lo agregues en tus "workarounds", me funciono poniendo el nombre completo de la maquina, no funciono ni con localhost ni con 127.0.0.1

debido a que poseia un DNS en otra maquina. Gracias, Alvaro!

Todavia NO iniciar postfix (si esta esta corriendo, echarlo abajo).

Con este sistema, se puede hacer la entrega de varios dominios virtuales sin sudar mucho. Todo es gracias a la tabla transport. Se explica esto mas tarde.

Para este ejemplo, crearemos un dominio llamado 'dominio1.com'. Esta demas decir que debe estar configurado previamente en un DNS.

Este dominio, para Postfix es un transporte. Es decir, donde debe entregar los correos. Cualquier transporte que no este en su tabla de transportes, Postfix los considera como externos y los entrega al servidor correspondiente.

# mysql -u root -p Enter Password: mysql> use mail; mysql> insert into transport(domain,transport) values ('dominio1.com', 'virtual:'); mysql> quit;

Con el usuario Postfix, hagamos el "spool":

# su postfix $ cd /home/postfix $ mkdir dominio1 $ exit

En este momento, iniciar Postfix con

# /etc/rc.d/init.d/postfix start

3.3 Agregando usuarios


Para hacer que funcione bien el truco, hay que indicar en el campo id de la tabla aliases el mismo USERID del usuario postfix.

De lo contrario, el maillog se va a llenar de "enforcing file restriction"!

# cat /etc/passwd | grep postfix postfix:x:500:500::/home/postfix:/bin/bash

En este caso, el userid es 500 (UID_POSTFIX). Tratar que el UID/GID sea el mismo. Ahora, agregamos un usuario "usuario" del dominio "midominio".

# mysql -u root -p mail Enter Password: mysql>insert into aliases values (UID_POSTFIX, 'usuario@dominio1.com','dominio1/user'); mysql>quit; # mysqladmin reload

Reemplazar en UID_POSTFIX el valor del UID del usuario Postfix. Ahora viene verificar el log de mail y el de mensajes, en caso de encontrar mensajes raros.

En otra consola (alt-F(algo)), iniciar un simple rastreo del maillog:

# tail -f /var/log/maillog

Y en otra iniciar una sesion smtp:

# telnet localhost 25

Luego, ejecutar la prueba simple de

# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]' 220 midominio ESMTP Postfix

Lo cual indica que todo salio bien!

Ahora probemos una entrega local, usando comandos SMTP minimos. Voy a colocar los mensajes del servidor y los mios:

svr>220 midominio ESMTP Postfix yo >mail from: usuario@dominio1.com svr>250 ok yo >rcpt to: usuario@dominio1.com svr>250 ok yo >data svr>354 End data with . yo >Subject: Estoy probando yo >Hola mundo! este es mi primer mensaje yo >. svr>250 Ok: queued as 06DD618415 yo >quit

Ahora revisar el log:

postfix/qmgr[2372]: 6D56718029: from=<usuario@dominio1.com>, size=341, nrcpt=1 (queue active) postfix/virtual[2442]: 6D56718029: to=<usuario@dominio1.com>, relay=virtual, delay=12, status=sent (mailbox)

Todo esta OK! Ahora verificar que haya llegado a nuestro 'spool':

# ls /home/postfix/dominio1/ 4 -rw
1 postfix postfix 341 Nov 5 02:03 usuario
Todo Ok! Creado con los permisos de postfix.postfix!
[editar]

Sé el primero en opinar


Tutoriales relacionados con 'Postfix + Mysql + Teapop HOWTO V0.7'

Autor y licencia de 'Postfix + Mysql + Teapop HOWTO V0.7'


Tutorial de tux.cl. Extraido de: http://www.tux.cl/articulos.php?id=3 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.