HOWTO Servidor de Correo Seguro utilizando Dovecot

De Gentoo Linux Wiki

Este articulo es parte de las series de HOWTO.
Kernel & Hardware Red y Servicios Portage Relacionado con el Sistema Servidor X Juegos Misceláneos

Información:
Esta es una traducción libre realizada por AnimAlf. No soy muy bueno con esto de las traducciones, por lo que cualquier aportación es deseada desde YA. Gracias. Consulta el original

Tabla de contenidos

[editar] Introducción

dovecot es "un servidor IMAP y POP3 de código abierto para sistemas GNU/Linux [Unix-like], escrito pensando principalmente en la seguridad. Aunque está escrito en C, utiliza varias técnicas de codificación para evitar la mayor parte de la trampas comunes."

Todos los detalles acerca de Dovecot pueden encontrarse en las páginas del proyecto http://www.dovecot.org

Ya que este articulo se centra principalmente el los usuarios virtuales, más adelante puedo escribir otro artículo no centrado en ellos, si sólo no en los usuarios del sistema.

Atención: Los detalles de esta instalación están basados en los archivos de configuración de la última versión de dovecot. No funcionará con las versiones anteriores como 1.x de dovecot. El proceso que describo está incompleto, clamav no está descrito, tampoco la creación de los certificados ssl. Por lo que este servidor no será seguro y no lo será hasta que complete este HOWTO.

[editar] Instalación

El proceso de isntalación proveerá de un servidor pop3 y otro imap (y smtp con postfix), servicios tanto normales como seguros. Tambien se dispondrá de una protección antivirus y una interface web en la dirección http://el.servidor.com/squirremail. Aunque no entraré en detalles sobre la configuración del servidor apache.

echo "net-mail/dovecot pop3d" >> /etc/portage/package.use
echo "mail-filter/dspam virtual-users" >> /etc/portage/package.use

emerge dovecot
emerge -Ca ssmtp
emerge postfix
emerge clamav
emerge dspam
emerge dspam-web
emerge squirrelmail

o todo con una sola orden:

echo "net-mail/dovecot pop3d" >> /etc/portage/package.use && echo "mail-filter/dspam virtual-users" >> /etc/portage/package.use && emerge -C ssmtp && emerge dovecot postfix clamav dspam dspam-web squirrelmail

[editar] Configuración

Esta sección se divide en varios apartados:

[editar] Setup Postfix

Postfix nos permitirá fácilmente tener un control sobre los usuarios. Una vez que Postfix esté instalado, podremos añadir fácilmente nuevos alias y buzones. ¡Así que vamos allá!

Vamos a crear la localización de los buzones y a establecer los permisos correctos:

  mkdir /var/spool/postfix/virtual
  chown postfix:postfix /var/spool/postfix/virtual
  chmod a+rwx /var/spool/postfix/virtual
nano -w /etc/postfix/main.cf
alias_database = hash:/etc/postfix/aliases
alias_maps = $alias_database
myhostname = <yourhostname>
mydomain = <your_domain>
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain
mail_spool_directory = /var/spool/mail
home_mailbox = Mailbox
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb = $daemon_directory/$process_name $process_id & sleep 5
disable_vrfy_command = yes
show_user_unknown_table_name = no

virtual_transport = virtual
virtual_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_minimum_uid = 12345
virtual_uid_maps = static:12345
virtual_gid_maps = static:54321
virtual_mailbox_base = /var/spool/postfix/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit = 51200000

# Additional for quota support
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
nano -w /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
nanow -w /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
#additional_conditions = and backupmx = '0' and active = '1'
nano -w /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'
nano -w /etc/postfix/mysql_relay_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '1'

¡Y ahora vamos a reiniciar postfix!

/etc/init.d/postfix restart

[editar] Usuarios Virtuales SQL - Setup

blackbird rukie # mysql -u root

mysql > CREATE DATABASE squirrelmail;

GRANT select,insert,update,delete ON squirrelmail.*
TO Anonymous@localhost IDENTIFIED BY '';

USE squirrelmail;
CREATE TABLE address (
owner varchar(128) DEFAULT '' NOT NULL,
nickname varchar(16) DEFAULT '' NOT NULL,
firstname varchar(128) DEFAULT '' NOT NULL,
lastname varchar(128) DEFAULT '' NOT NULL,
email varchar(128) DEFAULT '' NOT NULL,
label varchar(255),
PRIMARY KEY (owner,nickname),
KEY firstname (firstname,lastname)
);

CREATE TABLE userprefs (
user varchar(128) DEFAULT '' NOT NULL,
prefkey varchar(64) DEFAULT '' NOT NULL,
prefval blob DEFAULT '' NOT NULL,
PRIMARY KEY (user,prefkey)
);

quit

[editar] SquirrelMail Setup

Iniciando la configuración...

/var/www/localhost/htdocs/squirrelmail/config/conf.pl

Esto no mostrará:

Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books (LDAP)
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database

D.  Set pre-defined settings for specific IMAP servers

C.  Turn color off
S   Save data
Q   Quit

Presionamos 9 para acceder a la sección de la base de datos. Con lo que conseguimos que a continuación nos aparezca.

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Database
1.  DSN for Address Book   : mysql://root:password@localhost/squirrelmail
2.  Table for Address Book : address

3.  DSN for Preferences    : mysql://root:password@localhost/squirrelmail
4.  Table for Preferences  : userprefs
5.  Field for username     : user
6.  Field for prefs key    : prefkey
7.  Field for prefs value  : prefval

R   Return to Main Menu
C.  Turn color off
S   Save data
Q   Quit

Seguidamente vamos a establecer la ruta para las opciones 1 y 3,, así que presionamos 1 y 3. Ajustando la rutas para mysql: mysql://postfix:yourpassword@localhost/squirrelmail. Personalmente prefiero NO utilizar "root" y utilizar cualquier otro usuario/password que utilizo normalmente para las tareas de mantenimiento de mi sistema. Claro que puedes hacer lo que prefieras.

Establecer la contraseña para mysql si no se hizo antes ...

mysql -u root
mysql > USE mysql;
mysql > UPDATE user SET password=password("newpassword") WHERE user="root";
mysql > quit

[editar] Configurando Dovecot

Atención: 106 may NOT be the correct uid for you. To find out
cat /etc/passwd | grep postfix
nano -w /etc/dovecot-mysql.conf
driver = mysql
connect = dbname=postfix user=postfix host=localhost password=postfix
default_pass_scheme = PLAIN
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 106 AS uid, 106 AS gid FROM mailbox WHERE username  = '%u'
nano -w /etc/dovecot.conf
auth_verbose = yes
mail_debug = yes

base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
listen = *
shutdown_clients = yes
log_path = /var/log/mail.log
info_log_path = /var/log/mail.log
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = mail
disable_plaintext_auth = no
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
login_chroot = yes
login_user = postmaster
login_process_per_connection = yes
login_processes_count = 2
login_max_processes_count = 128
login_max_logging_users = 256
login_greeting = Welcome to Rukie's Mail Server.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
default_mail_env = maildir:/home/vmail/%d/%n
first_valid_uid = 106 # REMEBER THIS MUST BE CHANGED TO YOUR UID FOR "POSTFIX" FROM /etc/passwd
auth default {
        mechanisms = PLAIN
        userdb sql {
                args = /etc/dovecot-mysql.conf
        }
        passdb sql {
                args = /etc/dovecot-mysql.conf
        }
        user = root
        count = 2

}
mail_extra_groups = mail
mail_debug = yes

[editar] Administración Postfix

Ve a http://localhost/postfixadmin Se te mostrará un pequeño enlace "setup" con el que accederemos a la configuración. Después de esto debes borrar el archivo setup.php

rm /var/www/localhost/htdocs/postfixadmin/setup.php

Debes de cambiar "change-this-to-your-domain.tld" por "tudominio.com" or cualquiercosa. Esto es más sencillo hacerlo con el comando "replace". Aunque también puede hacerlo utilizando tu editor favorito.

blackbird rukie # replace "change-this-to-your.domain.tld" "yourdomain.com" -- /var/www/localhost/htdocs/postfixadmin/config.inc.php
blackbird rukie # replace "$CONF['domain_path'] = 'NO';" "$CONF['domain_path'] = 'YES';" -- /var/www/localhost/htdocs/postfixadmin/config.inc.php
blackbird rukie # replace "$CONF['domain_in_mailbox'] = 'YES';" "$CONF['domain_in_mailbox'] = 'NO';" -- /var/www/localhost/htdocs/postfixadmin/config.inc.php
blackbird rukie # replace "$CONF['encrypt'] = 'md5crypt';" "$CONF['encrypt'] = 'cleartext';" -- /var/www/localhost/htdocs/postfixadmin/config.inc.php


Atención: Esto parece no funcionar de momento y estoy tratando de entender cual es el método correcto de editar la contraseña del administrador

Necesitarás cambiar el usuario postfix usuario/contraseña del habitual admin:admin a alguno más seguro. Haz esto..

htpasswd2 /var/www/localhost/htdocs/postfixadmin/admin/.htpasswd admin

admin es el usuario aquí, pero puedes cambiarlo por el nombre de usuario que hayas elegido.

Para impedir a los usuarios locales leer tu directorio postfixadmin, ejecuta lo siguiente.

chown -R apache:apache /var/www/localhost/htdocs/postfixadmin/
chmod -R 700 /var/www/localhost/htdocs/postfixadmin/

[editar] DSPAM Setup

DSPAM es lo que será utilizado para protegerte de, pues del spam.

Ahora, tenemos que dejar a DSPAM acceder a mysql, lo conseguimos utilizando la configuración del paquete. Nos pedirá la contraseña de root para mysql, así que necesitas ser práctico. Atención: config necesita que le digas la versión del paquete que quieres configurar por lo que puedes utilizar "# esearch dspam" "#eix dspam" o "emerge -p dspam" para saber la versión utilizas.

# emerge --config =dspam-3.6.6

DSPAM viene con una plantilla de texto que es usada para la interacción con los usuarios. Esta está desafortunadamente en un lugar equivocado

# mv /etc/mail/dspam/txt /var/spool/dspam/

[editar] Verifica tu servidor

Ahora que ya conoces los pasos más importates de la configuración, ya puedes arrancar el dovecot.

/etc/init.d/dovecot start

Asegúrate de que ves el mensaje "Dovecot starting up" en tu archivo log. (/var/log/mail.log)

Prueba a acceder a él via telnet o similar:

ktelnet localhost 143 

Si todo es correcto responderá con el mensaje * OK Dovecot ready. Si no, es que no está funcionando por alguna razón. Seguramente algún error en la configuración, échale un vistazo al archivo log en busca de errores.

Intenta conectarte:

x login testuser@domain.tld yourpass

Deberías ver el mensaje x OK Logged in. Si no, la identificación a fallado por alguna razón. Échale un vistazo al error en /var/log/mail.log

blackbird rukie # nano -w /var/log/mail.log


Para salir

x logout

Prueba de acceder con un cliente IMAP real y asegúrate de que todo funciona correctamente.

También puedes probar squirrelmail. Prueba de acceder a http://localhost/squirrelmail

Si obtienes un error sobre ownership y no eres capaz de editar/crear una default_pref, ejecuta el siguiente comando

chown -R apache:apache /var/www/localhost/squirrelmail -R


Rukie Traducido por AnimAlf (sed clementes y corregid la traducción)

[editar] Uso

Dovecot es el mejor utilizando el acceso a los buzones mediante POP3 o IMAP. Además pueden incorporarsele una multitud de características adicionales como son ...

  • Usuarios virtuales con ...
    • Exim
    • OpenLDAP
    • PostgreSQL
    • Postfix
  • POP before SMTP
  • SSL / TLS
  • SASL
  • NFS
  • ACLs

Para el más basico acceso a su servidor de correo, solo instálalo y ponlo en marcha.

[editar] Fuentes utilizadas

¿Preocupaciones o elogios? Por favor, usa nuestra sección de discusión.

Herramientas personales
Otros idiomas