PDF de programación - BULMA: Como montar un potente sistema de correo con postfix

Imágen de pdf BULMA: Como montar un potente sistema de correo con postfix

BULMA: Como montar un potente sistema de correo con postfixgráfica de visualizaciones

Publicado el 22 de Mayo del 2018
471 visualizaciones desde el 22 de Mayo del 2018
33,8 KB
7 paginas
Creado hace 20a (05/10/2003)
BULMA: Como montar un potente sistema de correo con postfix

Bisoños Usuarios de Linux de Mallorca y Alrededores | Bergantells Usuaris de Linux de Mallorca i Afegitons

Como montar un potente sistema de correo con postfix

Por Javi Polo, DrSlump (http://drslump.org)
Creado el 12/12/2002 17:56 y modificado por última vez el 16/12/2002 10:58

En este artículo intentaré explicar como montar un sistema de correo con postfix(2) que contenga usuarios, dominios y
demás datos en una base de datos mysql(3) y que a su vez soporte tanto autentificación para envio (usando
cyrus−sasl(4)) como integrar courier−imap(5) y courier−pop(6) para que los usuarios puedan bajar su correo.

Asi mismo, podremos usar un entorno de correo web como squirrelmail(7) para que los usuarios puedan manejar su
correo via web.

Por si fuera poco, la administración de las cuentas y demás se hace via web, asi que, ¿a que esperas para probarlo? :)

Este documento explica como instalar y configurar un servidor de correo completo. Esto es:







postfix para SMTP
courier para IMAP y POP3
cyrus−sasl para autentificación SMTP
squirrelmail para webmail
mysql , para guardar los usuarios

El objetivo de montar todo el chiringuito este es tener todos los datos que solemos modificar a menudo en nuestro
servidor de correo en una BBDD, de forma que podamos añadir nuevos dominios de correo, usuarios, redirecciones,
etc. de forma bastante simple, sin tener que ir a meter mano a los ficheros de configuración de postfix.

Además del salto que supone en el tema de seguridad, al no tener usuarios a piñón en nuestro sistema, esto permite una
mayor flexibilidad a la hora de manejar estos usuarios, dar altas, bajas, realizar consultas, ...

Una vez que acabemos de configurar nuestro servidor, tendremos un sistema que nos permitirá:







Recibir correo para nuestros usuarios y dominios
Autentificar por SASL para que los usuarios puedan usar nuestro sistema como relayhost
Repartir el correo de cada usuario, ya sea via POP o IMAP
Que los usuarios lean/escriban correo a travez de un entorno de webmail
Administrar todo el tinglado desde una página web, donde añadiremos o quitaremos dominios, usuarios y lo
que haga falta

Antes que nada aclarar todo está pensado de base para hacerlo en debian sid ( la distribución de las abuelitas TM ), por
lo que si usas otra distro pues algunas cosas cambiarán, o sea, que te tendrás que buscar un poco la vida. Yo soy muy
vago, asi que no me complico mucho y uso debian :)

Este artículo está bastante basado en la documentación que he encontrado por ahi sobre como hacer tirar
postfix+courier contra mysql. Es una muy buena idea leerse los howtos originales y la documentación ...

Iremos paso a paso para entender bien que vamos haciendo :)

Ante todo, aclarar que NO TENGO PUTA IDEA de SQL, ni de PHP, y que todo lo que se lo he aprendido con esto :)

1/7

BULMA: Como montar un potente sistema de correo con postfix

1. La base de datos

Primero de todo instalaremos mysql y crearemos una base de datos que contendrá la información que queremos.

La instalación de mysql no tiene mucha complicación en debian:

apt−get install mysql−server mysql−client

respondemos a las 2 preguntillas que nos hace, que no importa que las explique, y ale, ya tenemos mysql instalado
(como amo debian).

Ahora habrá que crear una base de datos y un usuario que pueda usarla ... :

Aqui usaremos mail como base de datos, y el usuario será mail, con password cipriano. Además, le damos permisos
para hacer de todo en la base de datos mail.

Ejecutamos el cliente de mysql:

chiberu:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.53−log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database mail;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on mail.* to mail@localhost identified by 'cipriano';
Query OK, 0 rows affected (0.00 sec)

y seleccionamos la base de datos:

mysql> use mail;
Database changed

Una vez tenemos la base de datos creada, meteremos las tablas que usaremos.

Las tablas que yo uso son:

Tabla transport

create table transport (
domain varchar(128) not null primary key unique,
transport varchar(128) not null default 'virtual:'
);

Esta tabla se usará para transport en el postfix (se puede hacer en un fichero, pero ya que tenemos una BBDD,
aprovechemosla ;) ).

Dicha tabla sirve para indicar que hacer con el correo para X dominio, de forma que podemos decirle, por ejemplo, el
correo para el dominio arale.org me lo reenvias a la máquina mail.arale.org y el del dominio niko−chan.net me lo
repartes entre los usuarios virtuales de la máquina.

La intención de este artículo no es la de explicar el funcionamiento de un servidor de correo, asi que si no sabes lo que
es, mejor RTFM: man transport.

Tabla virtual

create table virtual (
address varchar(255) not null primary key unique,
goto varchar(255) not null
);

2/7

BULMA: Como montar un potente sistema de correo con postfix

Esta será una tabla de usuarios virtuales, o redirecciones, o como querais llamarlo. Es la típica virtusertable de
sendmail, que permite reenviar el correo dirigido a rey@niko−chan.net a [email protected], por ejemplo.

Al igual que antes, RTFMi: man virtual.

Tabla users

create table users (
address varchar(255) not null primary key unique,
id varchar(128) not null,
clear varchar(128) not null,
uid smallint(5) unsigned not null default 10000,
gid smallint(5) unsigned not null default 8,
name varchar(128) not null,
home varchar(128) not null default '/var/mail',
domain varchar(128) not null,
maildir varchar(255) not null,
active tinyint(3) unsigned not null default 1
);

Esta tabla es la que tiene la chicha de los usuarios :

Usuario a secas (lo de la izquierda de la arroba)
Password en claro
UID que tendrán sus ficheros en el sistema
GID que tendrán sus ficheros en el sistema

Campo Descripción
address Dirección de correo completa
id
clear
uid
gid
name Nombre del fulano en cuestion
home Directorio 'base' para almacenar el mail
domain Dominio (la derecha de la arroba)
maildir Mailbox (o maildir en nuestro caso) a usar, path relativo a home
active Con esta flag controlamos si el usuario puede o no bajarse el correo

Ejemplo
[email protected]
javipolo
faryownz
10000
8
Javi Polo
/var/mail
chiberu.drslump.org
chiberu.drslump.org/javipolo/
1

Como veis, no tiene mucha complicación el tema hasta aqui. Simplemente nos hemos limitado a crear las tablas en las
que luego vamos a ir insertando los datos que usará nuestro sistema de correo.

Notese que en el campo maildir he acabado de indicar donde guardar el mail con una /. Esto es así porque queremos
que use maildir y no mailbox, ya que courier no soporta mailbox.

Una vez que tengamos esto listo, demos otro paso adelante.

2. Postfix

El siguiente paso es instalar postfix con soporte de SASL y de mysql. En debian son los paquetes postfix−tls y
postfix−mysql:

apt−get install postfix−tls postfix−mysql

Si compilas tú mismo postfix, acuerdate de que tienes que darle soporte de SASL usando la libsasl2.

Antes de meter mano a la configuración, limpiemos el /etc/postfix de mierda que nos deja la instalación por defecto:

chiberu:/etc/postfix# rm access canonical pcre_table regexp_table relocated transport virtual

y ahora, vamos a meterle mano al fichero main.cf:

añadimos esto antes de mydestination:

3/7

BULMA: Como montar un potente sistema de correo con postfix

virtual_mailbox_base=/var/mail
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
transport_maps=mysql:/etc/postfix/transport.cf
virtual_maps =mysql:/etc/postfix/virtual.cf

y mydestination lo dejamos parecido a esto:

mydestination = chiberu, localhost.localdomain, , localhost, $transport_maps

Y ahora vamos a indicarle donde buscar las cosas en la BBDD en los diferentes ficheros que hemos dicho a postfix:

/etc/postfix/mysql_virt.cf

user=mail
password=cipriano
dbname=mail
table=users
hosts=localhost
where_field=address
select_field=maildir

/etc/postfix/uids.cf

user=mail
password=cipriano
dbname=mail
table=users
hosts=localhost
where_field=address
select_field=uid

/etc/postfix/gids.cf

user=mail
password=cipriano
dbname=mail
table=users
hosts=localhost
where_field=address
select_field=gid

/etc/postfix/transport.cf

user=mail
password=cipriano
dbname=mail
table=transport
hosts=localhost
select_field=transport
where_field=domain

/etc/postfix/virtual.cf

user=mail
password=cipriano
dbname=mail
table=virtual
hosts=localhost
where_field=address
select_field=goto

Tampoco tiene misterio ... le decimos que conecte a $hosts con usuario $user, password $password y use $dbname, y
alli haga un select $select_field from $table where $where_field ... amos, por ejemplo en caso del uids.cf, si se recibiera
un mail para [email protected], postfix haria esta consulta:

4/7

BULMA: Como montar un potente sistema de correo con postfix

select uid from users where address='[email protected]'

IMPORTANTE: Asegurate de que estos ficheros solo los puede leer el grupo postfix puesto que si no cualquiera podria
trincarnos el password de acceso a la BBDD, y no es plan ...:

for i in mysql_virt.cf uids.cf gids.cf virtual.cf ; do chgrp postfix $i; chmod 640 $i; done

Ahora se nos plantea un problema ... postfix corre como chroot en /var/spool/postfix. Para acceder a la BBDD lo hace a
traves de un socket ( por defecto /var/run/mysqld/mysqld.sock) y al estar este fuera del entorno chroot en el cual se
ejecuta postfix ( por defecto /var/spool/postfix ), no tenemos acceso a dicho socket.

Una posible solución es sacar del chroot a postfix, editando el fichero /etc/postfix/master.cf, yo personalmente PASO,
así
  • Links de descarga
http://lwp-l.com/pdf11177

Comentarios de: BULMA: Como montar un potente sistema de correo con postfix (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad