Postfix + Courier-imap + mysql
Después de darle muchas vueltas y error tras error, tenemos funcionando una versión de prueba del servidor de correo con dominios y usuarios virtuales.
Postfix se encargará de las labores de MTA, Courier de dar servicio IMAP y MySQL de almacenar los usuarios "virtuales".
A modo de resumen, podemos decir que el proceso es el siguiente:
Cuando mandamos un mail por SMTP a un usuario, postfix lo recibe y lo primero que hace es ver si dicho usuario existe en la base de datos de MySQL.
Por ello, se conecta a él y lanza una consulta SQL. Si no obtiene resultado, es que dicho user no existe por lo que no es posible enviar el mail.
Si la consulta tiene éxito, coge el campo maildir cuyo id corresponde con el destinatario del mail, y mira a ver si existe el directorio Maildir en /var/spool/mail/usuario/.
Si no es así lo crea y deposita el mail en dicho directorio, estando ya a disposición del usuario para que lo consulte por vía IMAP a través de Courier.
Anduvimos por:
/etc/postfix/main.cf
/etc/postfix/mysql_virt.cf
/etc/postfix/master.cf
/etc/postfix/ids.cf
/etc/postfix/gids.cf
/etc/postfix/transport.cf
/etc/postfix/virtual.cf
/etc/courier/authdaemonrc
/etc/courier/authmysqlrc
Editamos el /etc/init.d/mysql para que se cree el link del socket cada vez que se reinicie el servidor de mysql
ln -f /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
La BD.
create table transport (
domain varchar(128) not null primary key unique,
transport varchar(128) not null default 'virtual:'
);
create table virtual (
address varchar(255) not null primary key unique,
goto varchar(255) not null
);
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 '/',
domain varchar(128) not null,
maildir varchar(255) not null,
active tinyint(3) unsigned not null default 1
);
Algunas fuentes y recetas:
http://bulma.net/body.phtml?nIdNoticia=1621&nIdPage=8
http://groups.google.com.mx/group/es.comp.os.linux.redes/tree/browse_frm/month/2004-07/b91c68c6ea4a82fe?hl=es&rnum=231
http://groups.google.com.mx/group/es.comp.os.linux.redes/tree/browse_frm/month/2004-07/b91c68c6ea4a82fe?hl=es&rnum=231
http://www.macnux.com/portal/articulos_linux/como_configurar_postfix_courier_y_mysql.html
http://postfixwiki.org/index.php?title=Virtual_Users_and_Domains_with_Courier-IMAP_and_MySQL
http://workaround.org/articles/ispmail/
http://workaround.org/articles/ispmail-sarge/
El siguiente paso será probar algunos webmails para ver su funcionalidad en la red interna....
Postfix se encargará de las labores de MTA, Courier de dar servicio IMAP y MySQL de almacenar los usuarios "virtuales".
A modo de resumen, podemos decir que el proceso es el siguiente:
Cuando mandamos un mail por SMTP a un usuario, postfix lo recibe y lo primero que hace es ver si dicho usuario existe en la base de datos de MySQL.
Por ello, se conecta a él y lanza una consulta SQL. Si no obtiene resultado, es que dicho user no existe por lo que no es posible enviar el mail.
Si la consulta tiene éxito, coge el campo maildir cuyo id corresponde con el destinatario del mail, y mira a ver si existe el directorio Maildir en /var/spool/mail/usuario/.
Si no es así lo crea y deposita el mail en dicho directorio, estando ya a disposición del usuario para que lo consulte por vía IMAP a través de Courier.
Anduvimos por:
/etc/postfix/main.cf
/etc/postfix/mysql_virt.cf
/etc/postfix/master.cf
/etc/postfix/ids.cf
/etc/postfix/gids.cf
/etc/postfix/transport.cf
/etc/postfix/virtual.cf
/etc/courier/authdaemonrc
/etc/courier/authmysqlrc
Editamos el /etc/init.d/mysql para que se cree el link del socket cada vez que se reinicie el servidor de mysql
ln -f /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
La BD.
create table transport (
domain varchar(128) not null primary key unique,
transport varchar(128) not null default 'virtual:'
);
create table virtual (
address varchar(255) not null primary key unique,
goto varchar(255) not null
);
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 '/',
domain varchar(128) not null,
maildir varchar(255) not null,
active tinyint(3) unsigned not null default 1
);
Algunas fuentes y recetas:
http://bulma.net/body.phtml?nIdNoticia=1621&nIdPage=8
http://groups.google.com.mx/group/es.comp.os.linux.redes/tree/browse_frm/month/2004-07/b91c68c6ea4a82fe?hl=es&rnum=231
http://groups.google.com.mx/group/es.comp.os.linux.redes/tree/browse_frm/month/2004-07/b91c68c6ea4a82fe?hl=es&rnum=231
http://www.macnux.com/portal/articulos_linux/como_configurar_postfix_courier_y_mysql.html
http://postfixwiki.org/index.php?title=Virtual_Users_and_Domains_with_Courier-IMAP_and_MySQL
http://workaround.org/articles/ispmail/
http://workaround.org/articles/ispmail-sarge/
El siguiente paso será probar algunos webmails para ver su funcionalidad en la red interna....
0 Comments:
Post a Comment
<< Home