Página 1 de 2

PostFix+Mysql

Publicado: Mié, 01 Dic 2010, 11:07
por kcharrero
Hola
Necesito un manual lo mas detallado posible de como instalar postfix con soporte mysql pq la verdad que con ldap no pude mucha tanda ldap solo si me pincho bien
asi que necesito pues irme por la alternativa del postfdix contra mysql y usuarios virtuales
Gracias de antemano

Re: PostFix+Mysql

Publicado: Jue, 02 Dic 2010, 00:25
por luffy
vere de mandarte algo en estos días al privado (está en inglés) :D :D :D

Re: PostFix+Mysql

Publicado: Dom, 12 Dic 2010, 17:51
por yannsel
si me das tu correo puedo mandarte uno por el q monte el mio totalmente funcional, solo lo de las cuotas q no he dado con el pero en el manual esta:

postfix+mysql+dovecot+Tls+amavis+mailman+squirrelmail

Saludos

Re: PostFix+Mysql

Publicado: Lun, 14 Mar 2011, 16:59
por kcharrero
Yansiel hermano saludos si me hizieras llegar el manual a admin@ssp.ecc.cu te lo agradeceria pero por si las moscas hazmelo llegar con copia a angel2cuba@gmail.com
Thanks de antemano
Saludos

Re: PostFix+Mysql

Publicado: Jue, 21 Abr 2011, 10:37
por alberto
yannsel escribió:si me das tu correo puedo mandarte uno por el q monte el mio totalmente funcional, solo lo de las cuotas q no he dado con el pero en el manual esta:

postfix+mysql+dovecot+Tls+amavis+mailman+squirrelmail

Saludos
A mí también me interesaría. ¿Puedes mandarlo a alberto@ettpartagas.co.cu?

Re: PostFix+Mysql

Publicado: Jue, 21 Abr 2011, 11:13
por KZKG^Gaara
Ya soy otro que se interesa: kzkggaara@ipichcb.rimed.cu

Re: PostFix+Mysql

Publicado: Sab, 30 Abr 2011, 09:41
por Azeroth_2011
Mano yo tambien estoy unteresado en eso:
jmvaldes@uclv.edu.cu
saludos

Re: PostFix+Mysql

Publicado: Vie, 06 May 2011, 08:39
por linxer
Instalación de un servidor de correo en Linux Debian Etch
(Postfix, Mysql, Courier, Squirrelmail)

Nota:Probado tambien en Debian Lenny..

Introducción:
Instalaremos un servidor de correo en Linux con el sistema Debian Etch. Que como base de datos para guardar los usuarios y contraseñas utilizaremos Mysql. Tratare de ser muy explicativo para que los que no tengan mucha idea de Linux puedan instalar este servicio de correo es casi un copia y pega.

Instalación:
Entramos en modo consola con permiso root e instalamos.

TRABAJO CON LA BASE DE DATOS
Apache------------Servidor WEB
Mysql--------------Servidor de Base de Datos
Phpmyadmin-----Cliente del Servidor de Base de datos

Código: Seleccionar todo

apt-get install apache2 mysql-server phpmyadmin
Nos disponemos a crear la base de datos donde guardaremos los usuarios y las contraseñas del servidor de correo.
mysql -u root -p
mysql> create database mail;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on mail.* to mail@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)

NOTA IMPORTANTE
grant all privileges on mail.* to mail@localhost -> se le dará todo los permiso de la base de datos mail al usuario mail@localhost es el usuario a crear para acceder a la base de datos mail
123 es el contraseña del usuario mail@localhost Esto puede ser cambiado a conveniencia

Mysql
usuario : mail
Contraseña: 123
BD: mail

mysql> use mail;
Database changed
mysql> CREATE TABLE `domains` (
`domain` varchar(50) NOT NULL default '',
PRIMARY KEY (`domain`)
) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE `forwardings` (
`source` varchar(80) NOT NULL default '',
`destination` text NOT NULL,
PRIMARY KEY (`source`)
) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> CREATE TABLE `users` (
`email` varchar(80) NOT NULL default '',
`password` varchar(20) NOT NULL default '',
`user` varchar(20) NOT NULL default '',
`name` varchar(30) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`user`)
) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.00 sec)

Ahora insertamos el dominio del correo. Todo esto es continuo
mysql> INSERT INTO `domains` (`domain`) VALUES ('ltu.ecc.cu');
ltu.ecc.cu -> este es el dominio a enviar o recibir
ejemplo (ernesto@ltu.ecc.cu)

mysql> INSERT INTO `forwardings` (`source`, `destination`) VALUES
('postmaster@ltu.ecc.cu', 'administrador@ltu.ecc.cu'),
('webmaster@ltu.ecc.cu', 'administrador@ltu.ecc.cu'),
('aggdrop@ltu.ecc.cu', 'administrador@ltu.ecc.cu'),
('servicios@ltu.ecc.cu', 'administrador@ltu.ecc.cu');

Query OK, 0 rows affected, 1 warning (0.00 sec)

Explicación: Tabla de usuario (users)
Campo Ejemplo Descripción
Email ernesto@ltu.ecc.cu Correo del usuario
password 123 Contraseña (encritada o texto plano) depende de la configuración
user ernesto Es el usuario para autentificarte
name Ernesto Suárez R. Nombre del usuario
date 2010-01-21 Fecha de la creación de usuario


# Esto no tiene mucha explicación Tabla (domains)
Campo Ejemplo Descripción
domain ltu.ecc.cu El dominio puede s

# Nota
Este puede tenar más dominios pero no nos vamos a complicar mucho Tabla (forwardings).
Campo Ejemplo Descripción
source webmaster@ltu.ecc.cu Correo a reenviar
destination ernesto@ltu.ecc.cu Correo a donde llega


#Nota
Esto es para reenviar correos a otras direcciones es decir el correo del webmaster va a llegar también a Ernesto. UFFFF terminamos con las base de datos, ahora viene instalar el Postfix.

Instalando y configurando (Postfix):

Código: Seleccionar todo

apt-get install postfix-tls postfix-mysql
Creamos la el directorio mysql
mkdir /etc/postfix/mysql

Nos disponemos hacer los ficheros de la conexión del postfix con la base de datos Mysql

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_domains.cf
user = mail
password = 123
dbname = mail
table = domains
select_field = domain
where_field = domain
hosts = 127.0.0.1

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_email2email.cf
user = mail
password = 123
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_forwardings.cf
user = mail
password = 123
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf
user = mail
password = 123
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
where_field = email
hosts = 127.0.0.1

Ahora editamos el fichero de configuración del postfix para hacer la conexión entre el postfix y la base de datos de mysql

Código: Seleccionar todo

nano /etc/postfix/main.cf
virtual_alias_domains = virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
Después de esto muy importante
Primero debemos añadir una cuenta de usuario al sistema:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Esta otra solución consiste en crear el directorio dentro del chroot:

Código: Seleccionar todo

mkdir -p /var/spool/postfix/var/run/mysqld
chown mysql /var/spool/postfix/var/run/mysqld
y crear un hard link al socket actual:

Código: Seleccionar todo

ln -f -s  /var/run/mysqld/mysqld.sock  /var/spool/postfix/var/run/mysqld/mysqld.sock
y terminamos con la conexión del postfix ahora vamos a conectar a courier el servidor (pop-imap)

Instalamos el servidor courier (POP/IMAP)

Código: Seleccionar todo

apt-get install courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-mysql
Configuramos para que se conecte con la base de datos para que los usuarios puedan bajar los correos.

Código: Seleccionar todo

nano /etc/courier/authdaemonrc
Buscamos esta linear y la ponemos así

authmodulelist="authmysql"

Vamos hacer la conexión de la base de datos
Este fichero quedaria así

Código: Seleccionar todo

nano /etc/courier/authmysqlrc
Este archivo quedaría así.

MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD 123
MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD user
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_NAME_FIELD user
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

NOTA: MYSQL_CRYPT_PWFIELD o MYSQL_CLEAR_PWFIELD esto es a conveniencia pero solo puedes activar uno solo. Pero si encripta las contraseña dará error a la hora de autentificar el puerto 25

Y reiniciamos todos los servicios

Código: Seleccionar todo

/etc/init.d/postfix restart
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
Autentificar el puerto stmp:

Código: Seleccionar todo

apt-get install libsasl2 libsasl2-modules sasl2-bin libpam-mysql libsasl2-modules-sql openssl

Código: Seleccionar todo

mkdir /etc/postfix/sasl

Código: Seleccionar todo

nano /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
allow_plaintext: true
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail
sql_passwd: 123
sql_database: mail
sql_select: SELECT password FROM users WHERE user = '%u'

Código: Seleccionar todo

nano /etc/postfix/main.cf
smtp_sasl_auth_enable = no
smtpd_helo_required = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
disable_vrfy_command = yes

smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

Correos WEB
Instalar correo web

Código: Seleccionar todo

apt-get install squirrelmail squirrelmail-locales

Código: Seleccionar todo

ln -s /usr/share/squirrelmail /var/www/webmail
Configurar el correo web

Código: Seleccionar todo

squirrelmail-configure
Nota: Configura el squirrelmail a su gusto como administrador

FILICIDADES YA TIENE TU SERVIDOR DE CORREOS INSTALADO

Cosas que faltan.

Implementar cuotas
Que se creen automáticamente los maildirs al crear las cuentas, y que, si así se indica, se borren a la hora de eliminarlas
Quedaría encriptar los passwd de la base de datos

Bibliografía:

Bulma
howtoforge
etc....

y otras muchas paginas que no recuerdo. ;-)

Re: PostFix+Mysql

Publicado: Mié, 25 Abr 2012, 17:09
por kike
alguien podría mandarme el manual de:
postfix+mysql+dovecot+Tls+amavis+mailman+squirrelmail
que propusieron arriba...

probé este último en squeeze y tuve unos pequeños problemas con la entra de correos internacionales con estas líneas..
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

y me gusta más el dovecot. espero me ayuden con lo del manual porque estoy un poco apurado.
Gracias de antemano y disculpen la molestia.
Atte
kike

Re: PostFix+Mysql

Publicado: Sab, 28 Abr 2012, 08:17
por chuck
linxer escribió:Instalación de un servidor de correo en Linux Debian Etch
(Postfix, Mysql, Courier, Squirrelmail)

Nota:Probado tambien en Debian Lenny..

Introducción:
Instalaremos un servidor de correo en Linux con el sistema Debian Etch. Que como base de datos para guardar los usuarios y contraseñas utilizaremos Mysql. Tratare de ser muy explicativo para que los que no tengan mucha idea de Linux puedan instalar este servicio de correo es casi un copia y pega.

Instalación:
Entramos en modo consola con permiso root e instalamos.

TRABAJO CON LA BASE DE DATOS
Apache------------Servidor WEB
Mysql--------------Servidor de Base de Datos
Phpmyadmin-----Cliente del Servidor de Base de datos

Código: Seleccionar todo

apt-get install apache2 mysql-server phpmyadmin
Nos disponemos a crear la base de datos donde guardaremos los usuarios y las contraseñas del servidor de correo.
mysql -u root -p
mysql> create database mail;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on mail.* to mail@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)

NOTA IMPORTANTE
grant all privileges on mail.* to mail@localhost -> se le dará todo los permiso de la base de datos mail al usuario mail@localhost es el usuario a crear para acceder a la base de datos mail
123 es el contraseña del usuario mail@localhost Esto puede ser cambiado a conveniencia

Mysql
usuario : mail
Contraseña: 123
BD: mail

mysql> use mail;
Database changed
mysql> CREATE TABLE `domains` (
`domain` varchar(50) NOT NULL default '',
PRIMARY KEY (`domain`)
) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE `forwardings` (
`source` varchar(80) NOT NULL default '',
`destination` text NOT NULL,
PRIMARY KEY (`source`)
) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> CREATE TABLE `users` (
`email` varchar(80) NOT NULL default '',
`password` varchar(20) NOT NULL default '',
`user` varchar(20) NOT NULL default '',
`name` varchar(30) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`user`)
) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.00 sec)

Ahora insertamos el dominio del correo. Todo esto es continuo
mysql> INSERT INTO `domains` (`domain`) VALUES ('ltu.ecc.cu');
ltu.ecc.cu -> este es el dominio a enviar o recibir
ejemplo (ernesto@ltu.ecc.cu)

mysql> INSERT INTO `forwardings` (`source`, `destination`) VALUES
('postmaster@ltu.ecc.cu', 'administrador@ltu.ecc.cu'),
('webmaster@ltu.ecc.cu', 'administrador@ltu.ecc.cu'),
('aggdrop@ltu.ecc.cu', 'administrador@ltu.ecc.cu'),
('servicios@ltu.ecc.cu', 'administrador@ltu.ecc.cu');

Query OK, 0 rows affected, 1 warning (0.00 sec)

Explicación: Tabla de usuario (users)
Campo Ejemplo Descripción
Email ernesto@ltu.ecc.cu Correo del usuario
password 123 Contraseña (encritada o texto plano) depende de la configuración
user ernesto Es el usuario para autentificarte
name Ernesto Suárez R. Nombre del usuario
date 2010-01-21 Fecha de la creación de usuario


# Esto no tiene mucha explicación Tabla (domains)
Campo Ejemplo Descripción
domain ltu.ecc.cu El dominio puede s

# Nota
Este puede tenar más dominios pero no nos vamos a complicar mucho Tabla (forwardings).
Campo Ejemplo Descripción
source webmaster@ltu.ecc.cu Correo a reenviar
destination ernesto@ltu.ecc.cu Correo a donde llega


#Nota
Esto es para reenviar correos a otras direcciones es decir el correo del webmaster va a llegar también a Ernesto. UFFFF terminamos con las base de datos, ahora viene instalar el Postfix.

Instalando y configurando (Postfix):

Código: Seleccionar todo

apt-get install postfix-tls postfix-mysql
Creamos la el directorio mysql
mkdir /etc/postfix/mysql

Nos disponemos hacer los ficheros de la conexión del postfix con la base de datos Mysql

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_domains.cf
user = mail
password = 123
dbname = mail
table = domains
select_field = domain
where_field = domain
hosts = 127.0.0.1

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_email2email.cf
user = mail
password = 123
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_forwardings.cf
user = mail
password = 123
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1

Código: Seleccionar todo

nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf
user = mail
password = 123
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
where_field = email
hosts = 127.0.0.1

Ahora editamos el fichero de configuración del postfix para hacer la conexión entre el postfix y la base de datos de mysql

Código: Seleccionar todo

nano /etc/postfix/main.cf
virtual_alias_domains = virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
Después de esto muy importante
Primero debemos añadir una cuenta de usuario al sistema:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Esta otra solución consiste en crear el directorio dentro del chroot:

Código: Seleccionar todo

mkdir -p /var/spool/postfix/var/run/mysqld
chown mysql /var/spool/postfix/var/run/mysqld
y crear un hard link al socket actual:

Código: Seleccionar todo

ln -f -s  /var/run/mysqld/mysqld.sock  /var/spool/postfix/var/run/mysqld/mysqld.sock
y terminamos con la conexión del postfix ahora vamos a conectar a courier el servidor (pop-imap)

Instalamos el servidor courier (POP/IMAP)

Código: Seleccionar todo

apt-get install courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-mysql
Configuramos para que se conecte con la base de datos para que los usuarios puedan bajar los correos.

Código: Seleccionar todo

nano /etc/courier/authdaemonrc
Buscamos esta linear y la ponemos así

authmodulelist="authmysql"

Vamos hacer la conexión de la base de datos
Este fichero quedaria así

Código: Seleccionar todo

nano /etc/courier/authmysqlrc
Este archivo quedaría así.

MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD 123
MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD user
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_NAME_FIELD user
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')

NOTA: MYSQL_CRYPT_PWFIELD o MYSQL_CLEAR_PWFIELD esto es a conveniencia pero solo puedes activar uno solo. Pero si encripta las contraseña dará error a la hora de autentificar el puerto 25

Y reiniciamos todos los servicios

Código: Seleccionar todo

/etc/init.d/postfix restart
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
Autentificar el puerto stmp:

Código: Seleccionar todo

apt-get install libsasl2 libsasl2-modules sasl2-bin libpam-mysql libsasl2-modules-sql openssl

Código: Seleccionar todo

mkdir /etc/postfix/sasl

Código: Seleccionar todo

nano /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
allow_plaintext: true
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail
sql_passwd: 123
sql_database: mail
sql_select: SELECT password FROM users WHERE user = '%u'

Código: Seleccionar todo

nano /etc/postfix/main.cf
smtp_sasl_auth_enable = no
smtpd_helo_required = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
disable_vrfy_command = yes

smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

Correos WEB
Instalar correo web

Código: Seleccionar todo

apt-get install squirrelmail squirrelmail-locales

Código: Seleccionar todo

ln -s /usr/share/squirrelmail /var/www/webmail
Configurar el correo web

Código: Seleccionar todo

squirrelmail-configure
Nota: Configura el squirrelmail a su gusto como administrador

FILICIDADES YA TIENE TU SERVIDOR DE CORREOS INSTALADO

Cosas que faltan.

Implementar cuotas
Que se creen automáticamente los maildirs al crear las cuentas, y que, si así se indica, se borren a la hora de eliminarlas
Quedaría encriptar los passwd de la base de datos

Bibliografía:

Bulma
howtoforge
etc....

y otras muchas paginas que no recuerdo. ;-)
Muy bueno el tuto pero como sería para aplicar las casi obligatorias restricciones de correo (Nacional e Internacional) que debemos tener en nuestros servidores :?: :?: 8-)

Salu2s ;)