PostFix+Mysql
PostFix+Mysql
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
Re: PostFix+Mysql
postfix+mysql+dovecot+Tls+amavis+mailman+squirrelmail
Saludos
Re: PostFix+Mysql
Thanks de antemano
Saludos
Re: PostFix+Mysql
A mí también me interesaría. ¿Puedes mandarlo a alberto@ettpartagas.co.cu?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
- KZKG^Gaara
- Mensajes: 463
- Registrado: Sab, 07 Ago 2010, 14:09
- Ubicación: /dev/kzkggaara
- Contactar:
Re: PostFix+Mysql
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.
- Azeroth_2011
- Mensajes: 1
- Registrado: Sab, 16 Abr 2011, 16:05
Re: PostFix+Mysql
Re: PostFix+Mysql
(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
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
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
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
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
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
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_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
Código: Seleccionar todo
ln -f -s /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
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
Código: Seleccionar todo
nano /etc/courier/authdaemonrc
authmodulelist="authmysql"
Vamos hacer la conexión de la base de datos
Este fichero quedaria así
Código: Seleccionar todo
nano /etc/courier/authmysqlrc
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
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
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
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
Código: Seleccionar todo
squirrelmail-configure
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
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
Grupo de Usuarios de las Tecnologías Libres en Jiguani
http://gutljig.genetica.co.cu
Re: PostFix+Mysql
Muy bueno el tuto pero como sería para aplicar las casi obligatorias restricciones de correo (Nacional e Internacional) que debemos tener en nuestros servidoreslinxer 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
Nos disponemos a crear la base de datos donde guardaremos los usuarios y las contraseñas del servidor de correo.Código: Seleccionar todo
apt-get install apache2 mysql-server phpmyadmin
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):Creamos la el directorio mysqlCódigo: Seleccionar todo
apt-get install postfix-tls postfix-mysql
mkdir /etc/postfix/mysql
Nos disponemos hacer los ficheros de la conexión del postfix con la base de datos Mysql
user = mailCódigo: Seleccionar todo
nano /etc/postfix/mysql/mysql-virtual_domains.cf
password = 123
dbname = mail
table = domains
select_field = domain
where_field = domain
hosts = 127.0.0.1
user = mailCódigo: Seleccionar todo
nano /etc/postfix/mysql/mysql-virtual_email2email.cf
password = 123
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1
user = mailCódigo: Seleccionar todo
nano /etc/postfix/mysql/mysql-virtual_forwardings.cf
password = 123
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1
user = mailCódigo: Seleccionar todo
nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf
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
virtual_alias_domains = virtual_alias_mapsCódigo: Seleccionar todo
nano /etc/postfix/main.cf
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:y crear un hard link al socket actual:Código: Seleccionar todo
mkdir -p /var/spool/postfix/var/run/mysqld chown mysql /var/spool/postfix/var/run/mysqld
y terminamos con la conexión del postfix ahora vamos a conectar a courier el servidor (pop-imap)Código: Seleccionar todo
ln -f -s /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
Instalamos el servidor courier (POP/IMAP)Configuramos para que se conecte con la base de datos para que los usuarios puedan bajar los correos.Código: Seleccionar todo
apt-get install courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-mysql
Buscamos esta linear y la ponemos asíCódigo: Seleccionar todo
nano /etc/courier/authdaemonrc
authmodulelist="authmysql"
Vamos hacer la conexión de la base de datos
Este fichero quedaria asíEste archivo quedaría así.Código: Seleccionar todo
nano /etc/courier/authmysqlrc
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 serviciosAutentificar el puerto stmp: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
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
pwcheck_method: auxpropCódigo: Seleccionar todo
nano /etc/postfix/sasl/smtpd.conf
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'
smtp_sasl_auth_enable = noCódigo: Seleccionar todo
nano /etc/postfix/main.cf
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 webCódigo: Seleccionar todo
apt-get install squirrelmail squirrelmail-locales
Configurar el correo webCódigo: Seleccionar todo
ln -s /usr/share/squirrelmail /var/www/webmail
Nota: Configura el squirrelmail a su gusto como administradorCódigo: Seleccionar todo
squirrelmail-configure
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.
Salu2s