Este tutorial esta basado en el excelente tutorial publicado en workaround.
Paso 1- Instalación de los paquetes necesarios
$> aptitude install postfix-mysql
$> aptitude install mysql-server-5.0
$> aptitude install dovecot-pop3d
$> aptitude install dovecot-imapd
$> aptitude install amavisd-new
$> aptitude install spamassassin clamav-daemon cpio arj zoo nomarch lzop cabextract pax
$> aptitude install openssl
$> aptitude install squirrelmail
$> aptitude install libapache2-mod-php5 php5-mysql
$> aptitude install telnet
$> aptitude install mutt
$> aptitude install ruby ruby1.8-dev irb rdoc rubygems
Paso 2- Creación de la BD que gestionara las cuentas de correo electrónico.
$> mysqladmin password TuPasswordVaAqui
gt; mysqladmin password TuPasswordVaAqui
gt; mysqladmin password TuPasswordVaAqui
gt; mysqladmin password TuPasswordVaAqui
gt; mysqladmin password TuPasswordVaAqui
gt; mysqladmin password TuPasswordVaAqui
$> mysqladmin -p create correo_production
gt; mysqladmin -p create correo_production
gt; mysqladmin -p create correo_production
gt; mysqladmin -p create correo_production
gt; mysqladmin -p create correo_production
gt; mysqladmin -p create correo_production
$> mysql -p
gt; mysql -p
gt; mysql -p
gt; mysql -p
gt; mysql -p
gt; mysql -p
cuando veas el prompt de mysql ingresa la siguiente sentencia SQL para crear
los privilegios necesarios del usuario que gestionara la BD.
mysql>
GRANT SELECT ON correo_production.*
TO adminuser@localhost IDENTIFIED BY 'PasswdDelUsuarioAdmin';
exit
Paso 3- Descargar y ejecutar la aplicación del correo electrónico.
Descargar la aplicación desde Aqui. e Instalar Rails
$> gem install -r rails -y
$> wget -c http://web-admin-email-server-isp-style.googlecode.com/files/correo_admin_v0.01-07091001.tar.bz2
$> tar xjf correo_v0.01-07090701.tar.bz2
$> cd correo
editar el fichero de configuracion y personalizar la parte de production, esta será la que utilizaremos.
$> vi config/database.yml
Al finalizar migraremos nuestro squema de BD de la aplicación hacia la BD con el siguiente comando.
$> rake db:migrate RAILS_ENV=production
gt; rake db:migrate RAILS_ENV=production
gt; rake db:migrate RAILS_ENV=production
gt; rake db:migrate RAILS_ENV=production
gt; rake db:migrate RAILS_ENV=production
gt; rake db:migrate RAILS_ENV=production
Paso 4- Configurar ficheros utilizados por postfix para interactuar con nuestra BD en MYSQL.
Crear el directorio mysql
$> mkdir /etc/postfix/mysql
Crear y editar el siguiente fichero
$> vi /etc/postfix/mysql/email2email.cf
Añadir lo siguiente.
user = root
password = YourPasswd
hosts = 127.0.0.1
dbname = correo_production
query = SELECT email FROM vista_usuarios WHERE email = '%s'
Guardar y salir.
Crear y editar el siguiente fichero
$> vi /etc/postfix/mysql/virtual_alias_maps.cf
Añadir lo siguiente
user = root
password = YourPasswd
hosts = 127.0.0.1
dbname = correo_production
query = SELECT destino FROM vista_alias WHERE email = '%s'
Crear y editar el siguiente fichero
$> vi /etc/postfix/mysql/virtual_lists_transport.cf
Añadir lo siguiente
user = root
password = YourPasswd
hosts = 127.0.0.1
dbname = correo_production
table = vista_listas
select_field = transport
where_field = domain
Crear y editar el siguiente fichero
$> vi /etc/postfix/mysql/virtual_mailbox_domains.cf
user = root
password = YourPasswd
hosts = 127.0.0.1
dbname = correo_production
query = SELECT 1 FROM dominios WHERE nombre='%s'
Crear y editar el siguiente fichero
$> vi /etc/postfix/mysql/virtual_mailbox_maps.cf
Añadir lo siguiente
user = root
password = YourPasswd
hosts = 127.0.0.1
dbname = correo_production
query = SELECT path FROM vista_usuarios WHERE email='%s'
Crear y editar el siguiente fichero
$> vi /etc/postfix/mysql/virtual_redirect_maps.cf
Añadir lo siguiente
user = root
password = YourPasswd
hosts = 127.0.0.1
dbname = correo_production
query = SELECT destino FROM vista_reenvios WHERE email = '%s'
Paso 5- Configurar postif para interactuar con la BD mysql
Añadir lo siguiente a nuestro /etc/postfix/main.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf,
mysql:/etc/postfix/mysql/virtual_redirect_maps.cf,
mysql:/etc/postfix/mysql/email2email.cf
virtual_mailbox_base = /home/vmail/
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# SASL Config.
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
content_filter=smtp-amavis:[127.0.0.1]:10024
receive_override_options=no_address_mappings
#mailman add
transport_maps = mysql:/etc/postfix/mysql/virtual_lists_transport.cf
relay_domains = PonAquiElDominioDeMailMan
Edita ahora master.cf y verfica si estas estas lineas, si no estan añadirlas...
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
Paso 6- Configurar dovecot
Les adjunto las opciones seleccionadas en mi archivo de configuración.
Editar /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
mail_extra_groups = mail
protocol imap {
mail_plugins = quota imap_quota
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
mail_plugins = quota
}
protocol lda {
log_path = /home/vmail/dovecot-deliver.log
postmaster_address = webadmin@ucc.edu.ni
auth_socket_path = /var/run/dovecot/auth-master
mail_plugins = cmusieve quota
global_script_path = /home/vmail/globalsieverc
}
auth default {
mechanisms = plain login digest-md5 cram-md5
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
plugin {
sieve = /home/vmail/%d/%n/sieve
trash = /etc/dovecot/trash.conf
}
Paso 7- Configuar el acceso a Dovecot a tu BD SQL.
Editar /etc/dovecot/dovecot-sql.conf y añadir lo siguiente
driver = mysql
connect = host=127.0.0.1 dbname=correo_production user=root password=tupasswordaqui
default_pass_scheme = PLAIN-MD5
password_query = select email as user, password from vista_usuarios where
email = '%u';
user_query = SELECT home, uid, gid, quota FROM vista_quotas WHERE email = '%u'
Paso 8- Arrancar tu aplicación.
$> /etc/init.d/postfix restart
$> /etc/init.d/dovecot restart
$> /etc/init.d/amavis restart
$> /etc/init.d/spamassassin restart
$> /etc/init.d/clamav-daemon restart
$> cd /opt/correo/
$> script/console production
>> dom = Dominio.new
>> dom.nombre = "test.com"
>> dom.save
>> adm = Usuario.new
>> adm.usuario = "UsuarioAdmin"
>> adm.nombre = "Nombre Completo del Usuario"
>> adm.admin = true
>> adm.dominio = dom
>> adm.password = "Tu Password Aqui"
>> adm.save
>> exit
Paso 9- Arrancar tu aplicación.
$> script/server -e production
En los mensajes que salen despues de ingresar este comando se puede visualizar el puerto
al que puedes conectarte para iniciar con la administración de las cuentas, normalmente el puerto
es el 3000 y te conectas utilizando firefox de la siguiente forma.
http://ipdetuservidor:3000
Este puerto lo puedes cambiar utilizando la instrucción
$> script/server -e production -p #puerto
Suerte.