PDF de programación - Postfix, Courier y MySQL

Imágen de pdf Postfix, Courier y MySQL

Postfix, Courier y MySQLgráfica de visualizaciones

Actualizado el 27 de Febrero del 2021 (Publicado el 15 de Abril del 2017)
1.127 visualizaciones desde el 15 de Abril del 2017
18,7 KB
9 paginas
Creado hace 22a (05/04/2002)
Postfix, Courier y MySQL
Alvaro Marín Illera [email protected]

5 de Abril del 2002
Revisión: 21 de Enero del 2003

Instalación y configuración de Postfix, Courier y MySQL para operar juntos y conseguir un completo
servidor de correo (SMTP e IMAP) con usuarios "virtuales" en una Base de Datos.

Introducción

Desde hace tiempo uso Postfix para el envío de correos con el fin de depender lo menos posible de otros
servidores, que daban más de un problema (autentificación, caídas...).
Postfix es un MTA (Message Transfer Agent) relativamente fácil de administrar, seguro (al menos más
que sendmail y otros) y que no sobrecarga mucho la máquina ya que solamente se cargan los módulos
necesarios en cada momento. Su función es comunicarse con los otros servidores (rigel.deusto.es, terra.es
...), para entregarse entre ellos el correo.

Por ejemplo, cuando algún amigo nuestro nos quiere enviar un mail, se conecta al servidor de correo de
terra (mailhost.terra.es) y mediante el protocolo SMTP, manda los comandos necesarios para que coja su
mensaje. Posteriormente, mailhost.terra.es se conecta con rigel.deusto.es y le entrega dicho mail, con lo
que éste lo guarda en el buzón del usuario al que iba dirigido el mensaje. Si bajamos al aula de correo de la
Universidad, mediante el protocolo pop3 nos comunicamos con rigel.deusto.es para que nos devuelva los
mensajes que hay en nuestro buzón y así recibir el mensaje que nuestro amigo nos había enviado.

Otro protocolo para poder "ver" los mensajes que tenemos en nuestro servidor, es IMAP (Internet Message
Access Protocol), el cual es mucho más potente que el pop3 anteriormente citado. Permite entre otras
muchas cosas, acceder a los mensajes del servidor como si fueran locales, creación de carpetas en el buzón
del servidor, buzones accesibles por varias personas... He elegido courier-imap para implementarlo y
poder ver así, toda su potencia :)

Por último, pero no por ello menos importante, ante cuestiones del estilo de "cómo se podría hacer para
tener usuarios solo para el correo?", "cómo podría gestionar los usuarios del correo sin tener un
/etc/passwd de 5000 líneas?"... decidí introducir también en la pareja postfix-courier, MySQL para tener
una Base de Datos en la que se podrían ir guardando los usuarios "virtuales" (ya que no van a existir en el
sistema y por tanto en /etc/passwd) de correo electrónico.

Como resumen a esta pequeña introducción, tenemos que Postfix se encargará de las labores de MTA,
Courier de dar servicio IMAP y MySQL de almacenar los usuarios "virtuales".

Todo esto ha sido implementado sobre GNU/Linux Debian Woody en un Pentium75 con 32MB de RAM.
Todos los comentarios de instalación y configuración los haré en base a esto, así que u os instalais Debian
(qué mejor disculpa que esta, no? ;P) o le dais a google y rpm como loc@s. :)

Configurando Postfix

Postfix es muy sencillo de ponerlo a andar. Con la configuración que viene por defecto (si no recuerdo
mal), ya es capaz de enviar mensajes. Para instalarlo en Woody, basta con:

apt-get install postfix

También vamos a instalar el soporte que tiene postfix para mysql:

apt-get install postfix-mysql

Para l@s que no usen debian, este soporte hay que darselo recompilando postfix con las opciones
necesarias de la forma que muestro a continuación:

make -f Makefile.init makefiles \
’CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include’ \
’AUXLIBS=/usr/local/mysql/lib -lmysqlclient -lz -lm’
make && make install

Sustituyendo /usr/local por la ruta donde tengais dichos archivos en vuestra máquina. A continuación
copiamos el archivo virtual del src de postfix al directorio de éste:

cp src/virtual/virtual /usr/libexec/postfix

Una vez instalado, vamos a /etc/postfix y con vuestro editor favorito, abrimos el archivo principal de
configuración llamado main.cf, el cual está estupendamente comentado. Os pego a continuación el mío
para que podais ir comparando y comento solamente los cambios importantes:

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = TARTALO.spliTer.net
mydomain = spliTer.net
myorigin = $myhostname
mydestination = tartalo.spliter.net, spliter.net

La siguiente opción nos permite elegir en qué tipo de "formato" postfix va a guardar los mensajes en el
buzón de cada usuario. Si elegimos Mailbox, los mensajes se guardan en un único archivo en el que se van
encolando los mensajes según van llegando al buzón. El formato Maildir, consiste en un directorio en el
que hay tres subdirectorios en el que se van guardando los mensajes en diferentes archivos. Courier-IMAP
necesita de esto, por lo que este es el que elegimos (nótese la "/" final):

home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail/
relay_domains = $mydestination
mynetworks = 192.168.1.0/24
smtpd_banner = $myhostname ESMTP $mail_name

local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
debug_peer_level = 2
debugger_command = PATH=/usr/bin:/usr/X11R6/bin xxgdb
$daemon_directory/$process_name $process_id & sleep 5
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

Es a partir de aquí donde cambia un poco la cosa. Vamos a ir comentando línea por línea:

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. En este ejemplo, tanto postfix como MySQL está en la misma
máquina, por ello el primero se conectará a la base de datos por medio de los sockets internos de
unix/linux. Para ello ponemos el parametro hosts con el valor unix:mysqld.sock. Si estuviesen en
máquinas distintas, habría que poner el nombre de la máquina en la que se encuentra MySQL.

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=unix:mysqld.sock

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=unix:mysqld.sock

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=unix:mysqld.sock

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 distinta a la máquina donde está postfix, 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(la contraseña por defecto
está en blanco, por lo que bastaria con dar "enter")
mysql -h localhost -u root -p
#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;

+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| id | char(128) | | MUL | | |
| clear | char(128) | | | | |
| name | char(128) | | | | |
| uid | int(10) unsigned | | | | |
| gid | int(10) unsigned | | | | |
| home | char(255) | | | | |
| maildir | char(255) | | | | |
+---------+-----------
  • Links de descarga
http://lwp-l.com/pdf2885

Comentarios de: Postfix, Courier y MySQL (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