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.
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 mysql
mkdir /etc/postfix/mysql
Nos disponemos hacer los ficheros de la conexión del postfix con la base de datos Mysql
user = mail
password = 123
dbname = mail
table = domains
select_field = domain
where_field = domain
hosts = 127.0.0.1
user = mail
password = 123
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1
user = mail
password = 123
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1
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
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.
Buscamos esta linear y la ponemos así
authmodulelist="authmysql"
Vamos hacer la conexión de la base de datos
Este fichero quedaria así
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
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'
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
Configurar el correo web
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.