1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer>

Interesante

  • Cómo configurar SENDMAIL SENDMAIL

    Sendmail, servidor SMTP muy extendido, con muchos años de andadura (y muchos bugs) Todos los ficheros de configuracion de sendmail se encuentran en el directorio
    /etc o /etc/mail, o en ambos dos.
    El fichero principal es sendmail.cf. Es probablemente el fichero de configuracion mas complejo y dificil
    de manejar de unix.
  • Cómo mejorar la conexión a internet o lan local

    Optimizando nuestra conexión

    Este artículo pretende mejorar la conexión a internet o en la red local tanto cableada como wireless, para ello intentaremos optimizar al maximo la tranferencia de paquetes

  • Configurar Iproute
    Introducción a Iproute

    Con Iproute podemos crear tablas de rutas alternativas a la tabla general de rutas que usamos generalmente con route. Así pues, podemos hacer que todo el tráfico proveniente de un interfaz o segmento de red salga por uno de nuestros dispositivos de red y otro tráfico proveniente de otro segmento salga por el otro dispositivo. O bien que un tipo de tráfico, por ejemplo smtp, salga por un interfaz, y otro tipo por el otro. Todo eso lo hacemos con IPROUTE.

  • Debian para principiantes
    A tí que instalaste Debian te hablo. Sí, a tí. Mi intención es en este pequeño artículo darte algunas herramientas para moverte en esta distribución.
    Este artículo no cubre la instalación, eso ya está descrito en muchas partes, además si tienes suerte alguien ya te ayudó o lo hizo por tí. El tema es que después te quedas solo, en frente del teclado, pensando si hiciste bien en meterte en esto de Linux.
    Se presupone, eso sí, un conocimiento básico de cómo se usa un Unix, comandos, manipulación de archivos, etc. Este artículo está orientado a la administración.

  • Cómo clonar discos duros con Linux
    Cualquiera que haya tenido que instalar un parque de 10 - 100 estaciones de trabajo con exactamente los mismos sistema operativo y programas se habrá preguntado si hay un modo mejor - y más rápido - de hacerlo que mover los CDs de caja en caja. Clonar consiste en  - una vez - una estación de trabajo modelo, y después copiarla en todas las demás.
    El propósito de este texto es explorar algunos de los muchos modos de clonar la configuración del disco duro de una estación de trabajo. En el proceso de clonación, utilizaremos las posibilidades nativas de Linux para producir más o menos el mismo efecto que el bien conocido Norton Ghost del mundo de Windows.
  • Cómo configurar Squid Cómo configurar Squid: Parámetros básicos para servidor Proxy.

    Introducción.

    Squid es el software para servidor Proxy más popular y extendido entre los sistemas operativos basados sobre UNIX®. Es muy confiable, robusto y versátil. Al ser software libre, además de estar disponible el código fuente, está libre del pago de costosas licencias por uso o con restricción a un uso con determinado número de usuarios.

02
Ago

Cómo configurar Postfix Courier y MySQL

Escrito por J. Llorente

PDFImprimir E-mail
Postfix Courier y MySQL

1. ¿Por que este documento?

Me he decidido a escribir este documento ya que los que busqué al intentar hacer la instalación de este trío no llegaron a gustarme.


2.¿Por que usar la autentificación en un SQL?

Lo que vamos ha hacer con este trío es conseguir un sistema de correo completo con una autentificación es un sistema de bases de datos SQL, con lo cual conseguiremos manejar varios dominios virtuales con cientos de usuarios los cuales no existen en el sistema realmente.

3. ¿Que necesito?

Bien yo hice la instalación sobre Debian GNU/Linux aunque no debería cambiar mucho para otros Linux o *BSD.
Los paquetes Debian necesarios para esta gesta son:

postfix A high-performance mail transport agent
postfix-mysql MYSQL map support for Postfix
courier-authdaemon Courier Mail Server authentication daemon
courier-authmysql MySQL Authentication for Courier Mail Server
courier-base Courier Mail Server Base System
courier-imap IMAP daemon with PAM and Maildir support
courier-imap-ssl IMAP daemon with SSL, PAM and Maildir suppor

Estos deberían estar en la misma máquina la BBDD puede ser remota y el servidor MySQL podemos instalarlo en la maquina local o no , eso tendrá que ser valorado a la hora de instalar.

mysql-client - mysql database client binaries
mysql-common - mysql database common files (e.g. /etc/mysql/my.cnf)
mysql-server - mysql database server binaries

En distintas distribuciones a Debian o si instalamos desde código fuente debemos fijarnos en que postfix y courier estén compilados con soporte de MySQL.

4. Después de la instalación de paquetes.

Lo primero que hice fue hacer las tablas de la base de datos.

# 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 maildb;
Query OK, 1 row affected (0.00 sec)

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

y seleccionamos la base de datos:

mysql> use mail;
Database changed

La primera que creo es la de transport , viene a ser como el mailertable de sendmail indicamos que acción que se debe ejecutar dependiendo del dominio al que se dirige el email, la estructura es la siguiente.

CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) TYPE=MyISAM;

Domain indica el dominio sobre el cual se debe ejecutar la acción y transport la acción a realizar, recomiendo un man 5 transport para ver las opciones , aunque las más comunes son:

smtp: con lo que redirigiremos el correo de ese servidor hacia otro dominio

local: hará un relay local es decir chequeara si ese usuario existe en la maquina local y si es afirmativo le entregará el email

virtual: este es relativo a los dominios virtuales normalmente los que autentificamos conta la base de datos.

La tabla de transport deberia quedar similar a esta:

mysql> select * from transport;
+-----------------------------+---------------------+
| domain | transport |
+-----------------------------+---------------------+
| dominio.com | virtual: |
| paquito.dominio.com | smtp:192.168.0.2:25 |
| listas.dominio.com | local: |
+-----------------------------+---------------------+
3 rows in set (0.00 sec)

La segunda tabla y la más compleja por el número de campos es la de los usuarios, la estructura es la siguiente:

CREATE TABLE users (
id varchar(128) NOT NULL default '',
id_courier varchar(128) NOT NULL default '',
address varchar(128) NOT NULL default '',
crypt varchar(128) NOT NULL default '',
clear varchar(128) NOT NULL default '',
name varchar(128) NOT NULL default '',
uid smallint(5) unsigned NOT NULL default '1000',
gid smallint(5) unsigned NOT NULL default '1000',
home varchar(128) NOT NULL default '/',
domain varchar(128) NOT NULL default '',
maildir varchar(255) NOT NULL default '',
imapok tinyint(3) unsigned NOT NULL default '1',
bool1 tinyint(3) unsigned NOT NULL default '1',
bool2 tinyint(3) unsigned NOT NULL default '1',
PRIMARY KEY (id),
UNIQUE KEY id (id),
UNIQUE KEY address (address),
KEY id_2 (id),
KEY address_2 (address)
) TYPE=MyISAM;


Paso a explicar que es cada campo.
id Nombre de usuario. Sirve para identificar al usuario de correo en la base de datos normalmente se usa Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
id_courier Nombre del usuario de IMAP, con este campo identificaremos el login de imap del usuario de esa cuenta de correo, por ejemplo Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla si quisiéramos que se identificase como paco en este campo pondríamos paco.

address Pues nada aquí obviamente tenemos que poner la dirección de correo electrónico completa Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla por ejemplo.

crypt Aqui irá la clave encriptada, se debe insertar como encrypt('tupasswd').

clear El password en texto plano.

name Nombre con el que se enviaran los emails, es decir Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla usaria Francisco Yonky Mas Jaco.

uid y gid Son el uid y el gid del usuario que puede escribir en el directorio de spool de mensajes, más adelante explicaré lo que es.

home En este campo se ha de poner el directorio general de spool este directorio ha de tener un gid y uid igual al que hemos puesto anteriormente, y será donde se almacenen las carpetas del usuario de un dominio en concreto. Seria algo similar a esto /var/spool/mail/dominio/paco/, normalmente meteremos todo un dominio con el mismo gid y uid.

domain Coincide con el dominio en nuestro caso jaco.com

maildir Es el directorio maildir de usuario. Por ejemplo /var/spool/mail/dominio/paco/Maildir/.

imapok Es un campo que pondremos a 1 si queremos que ese usuario posea cuenta imap

bol1 y bol2 La he colocado para usarlas como variables bit para imap y poder emprender distintas acciones según estén a 1 o 0.

La tabla quedaría mas o menos así:


| id | id_courier | address | crypt |clear | name| uid |gid | home| domain| maildir| imapok |bool1 | bool2 |

| Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla | paco| Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla | PyinZSuIE0lRs | mipassesjaco | Francisco Yonky Mas Jaco | 1000 | 1000 | /var/spool/mail/dominio/paco/ | dominio.com | /var/spool/mail/dominio/paco/Maildir/ | 1 | 1 | 1 |

La última tabla es virtual, esta tabla contendrá direcciones virtuales por ejemplo las del mailman, su estructura es:

CREATE TABLE virtual (
address varchar(255) NOT NULL default '',
goto varchar(255) NOT NULL default '',
UNIQUE KEY address (address)
) TYPE=MyISAM;

address Identifica la dirección virtual

goto dirección a la que apuntará la virtual.

Ejemplo de la tabla en concreto para mailman:

mysql> select * from virtual;
+----------------------------------------+-------------------+
| address | goto |
+----------------------------------------+-------------------+
| Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla | general-owner |
| Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla | general |
| Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla | general-admin |
| Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla | general-request |
+----------------------------------------+-------------------+
4 rows in set (0.00 sec)


5. Ya tengo las tablas que ¿mas necesito?

Bien ahora lo que necesitaremos será configurar el postfix para que use el mysql.
En /etc/postfix/main.cf necesitamos añadir lo siguiente normalmente se suelen poner sobre relayhost=


transport_maps=mysql:/usr/local/etc/postfix/transport.cf
virtual_mailbox_maps=mysql:/usr/local/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/usr/local/etc/postfix/uids.cf
virtual_gid_maps=mysql:/usr/local/etc/postfix/gids.cf
virtual_mailbox_base=/ #Esto lo puedes cambiar a otro sitio si quieres mas seguridad
mydestination = $mydomain, $myhostname, $transport_maps
virtual_maps =mysql:/usr/local/etc/postfix/virtual.cf

Chequea que en master.cf tengas:
virtual unix - n n - - virtual

Ahora vamos con los archivos de conexión a MySQL que hemos definido anteriormente en main.cf

Todos estos archivos los debemos crear en /etc/postfix:

# transport.cf
user= postfix <--Usuario de la base de datos
password= whatever <--pasword de ese usuario
dbname=maildb <-- nombre de la base de datos
table=transport
select_field=transport
where_field=domain
hosts= localhost <-- o servidor de base de datos remoto


Los demás contienen valores similares

# mysql_virt.cf
user= postfix
password= whatever
dbname=maildb
table=users
select_field=maildir
where_field=address
hosts=localhost

# uids.cf
user=postfix
password=whatever
dbname=maildb
table=users
select_field=uid
where_field=address
hosts=localhost

# gids.cf
user=postfix
password=whatever
dbname=maildb
table=users
select_field=gid
where_field=address
hosts=localhost

# virtual.cf
user=postfix
password=whatever
dbname=maildb
table=virtual
select_field=goto
where_field=address
hosts=localhost

Ahora configuramos el courier para que pueda acceder a la base de datos.

#archivo /etc/courier/authmysqlrc
MYSQL_SERVER localhost #Servidor mysql
MYSQL_USERNAME postfix #Usuario SQL
MYSQL_PASSWORD whatever #password SQL
MYSQL_SOCKET /tmp/mysql.sock #esto se ha de colocar si la base datos es local
MYSQL_DATABASE maildb #base de datos
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD crypt
MYSQL_CLEAR_PWFIELD clear
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD id_courier
MYSQL_HOME_FIELD home
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_WHERE_CLAUSE imapok=1 AND bool1=1 AND bool2=1

#archivo /etc/courier/authdaemon

authmodulelist="authmysql" <-- esto es para los posibles métodos de autentificación de usuarios en el imap se puede incluir desde PAM a LDAP man authdaemon.

Ahora reinicia los servicios de postfix y courier.

6.Añadiendo un dominio a transport

Muy fácil solo hay que ejecutar esta consulta:

insert into transport (domain,transport) values("dominio.com","virtual:");

7. ¿Como añado usuarios?

Los usuarios los debemos añadir en la base de datos y posteriormente crear los
directorios home y maildir con el gid y el uid que hemos especificado en el registro.

Debemos hacer algo así:
insert into users (id,id_courier,address,crypt,clear,name,uid,gid,home,domain,maildir,imapok,bool1,bool2)
values(" Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ","paco"," Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ",encrypt('passwordquequieras'),
"passwordquequieras","Francisco Yonky Mas Jaco","1000","1000","/var/spool/mail/dominio/paco/","dominio.com",
"/var/spool/mail/dominio/paco/Maildir/","1","1","1");

Luego creamos el directorio de este usuario y le damos permisos:

mkdir -p /var/spool/mail/dominio/paco/Maildir
chmod -R UID:GID /var/spool/mail/dominio/paco

8.Fin

Bueno ya debería estar funcionando todo pero si algo falla revisa los logs del sistema no creo que te sea difícil encontrar el fallo ya que los errores de postfix dan bastante información , te aconsejo que también si fallara algo miraras el log del mysql por si hay alguna consulta mal formada o te has equivocado en algún campo. Este Documento esta escrito por Omar López aka pollo puedes usarlo como quieras, no me hago responsable de los daños que puedas causar con el.

Autor: pollo www.valenciawireless.net

Technorati Tags:
ssl >>

Agregue su comentario

Tu Nombre:
Asunto:
Comentario:

Últimos contenidos

Facebook conecta

Total visitas

3638537
38.107.179.231
UNITED STATES
US

Quien está en linea

Tenemos 46 invitados conectado(s)

Conectan

Locations of visitors to this page

Nos visitan desde

Últimos comentarios

Vitales Servidor