HOWTO Servidor de Correo Seguro utilizando Dovecot
De Gentoo Linux Wiki
| 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.
