Podcast: Descargar (28.7MB)
Hoy vamos a proceder a instalar un servidor de correo en una máquina con Debian 8.8 resultante de una instalación mínima, con ssh, nada más.
Como servidor de correo SMTP vamos a utilizar Postfix y como servidor IMAP y POP3 vamos a utilizar Dovecot, hoy no voy a instalar ni webmail ni extras, buscaré la instalación más sencilla posible y un día si queréis nos metemos en ampliar esta instalación para dotarla de más caracterísitcas.
Simplemente aclarar que aunque trabaje en Neodigit en este post no explico como se instalan los seridores de correo en Neodigit pues esa es una tarea en la que no estoy involucrado porque yo hago otras cosas, así que no busquéis similitudes entre como lo cuento en este audio y cómo se instala en una base de 800 servidores, obviamente no se instala de la misma manera ni de la misma forma, una vez aclarado esto vamos a ir empezando.
Lo que vamos a hacer es instalar dovecot para imap y para pop3 y vamos a utilizar postfix para smtp.
apt install dovecot-core dovecot-imapd dovecot-lmtpd
Para instalar postfix primero desinstalaremos exim4
apt purge exim4 && apt install postfix postgrey postfix-policyd-spf-python
Al instalar postfix nos saldrá un wizard para configurarlo y tendremos varias opciones. Si queremos que sea un servidor público le diremos que es un «Sitio de Internet» y confraternaremos el FQDN y un par de preguntas más, así de fácil, de momento no tiene más problemática.
Otra cosa será preparar un certificado, que puede ser un Comodo, un Let’s Encrypt, uno autofirmado (no muy recomendable) o lo que queráis
openssl req -new -newkey rsa:2048 -nodes -keyout mail.ipv6.org.es.key -out mail.ipv6.org.es.csr cp mail.ipv6.org.es.csr mail.ipv6.org.es.pem wget https://www.startssl.com/certs/sub.class1.server.ca.pem cat mail.ipv6.org.es.pem sub.class1.server.ca.pem > mail.ipv6.org.es.chain.crt rm sub.class1.server.ca.pem chmod 644 mail.ipv6.org.es.chain.crt chmod 640 mail.ipv6.org.es.key mv mail.ipv6.org.es.chain.crt /etc/ssl/certs/ mv mail.ipv6.org.es.key /etc/ssl/certs/
Ahora configuraremos la primera parte de postfix e iremos a /etc/postfix/main.cf y pondremos nuestros datos en:
smtpd_tls_cert_file=/etc/ssl/certs/mail.ipv6.org.es.chain.crt
smtpd_tls_key_file=/etc/ssl/private/mail.ipv6.org.es.key
smtpd_use_tls=may
En mi caso además de cambiar los ficheros de certificados le he cambiado smtpd_use_tls de yes a may.
Y ahora pasamos a configurar dovecot, para ello utilizaremos la aplicación de dump de dovecot, que es doveconf y generaremos un fichero de configuración, así pues:
doveconf -n > /etc/dovecot/dovecot.conf
Y modificamos el fichero de dovecot.conf
Sustituyendo la línea ssl=no por las siguientes:
service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 993 } } ssl = required ssl_ca = </etc/ssl/certs/ca-certificates.crt ssl_cert = </etc/ssl/certs/mail.ipv6.org.es.chain.crt ssl_key = </etc/ssl/certs/mail.ipv6.org.es.key
Y le decimos a systemd que no monitorice el puerto 143
# cp /lib/systemd/system/dovecot.socket /etc/systemd/system/ # systemctl reenable dovecot.socket # sed -i '/:143$/s/^/#/' /etc/systemd/system/dovecot.socket
Comprobamos que estén los puertos accesibles
# systemctl restart postfix # systemctl restart dovecot # netstat -lnpt
Y probamos que todo funcione bien
$ openssl s_client -starttls smtp -crlf -connect <your_mail_server>:587 $ openssl s_client -connect <your_mail_server>:993
Ahora el siguiente paso será añadir autenticación para las cuentas
En /etc/postfix/main.cf añadiremos las siguientes líneas
smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot # The path is relative to $queue_directory: # # postconf |grep queue_directory # queue_directory = /var/spool/postfix smtpd_sasl_path = private/auth # Do not accept SASL authentication over unencrypted connections smtpd_tls_auth_only = yes
Y en /etc/dovecot/dovecot.conf las siguientes:
Cambiaremos
mail_location = mbox:~/mail:INBOX=/var/mail/%u
por
mail_location = maildir:/var/vmail/%d/%n
Cambiaremos
passdb { driver = pam }
por
passdb { driver = passwd-file # The entire email address will be used as the username for email client. # Don't bother about the scheme here, will be overwritten by a strong scheme from file. # (http://wiki2.dovecot.org/AuthDatabase/PasswdFile) args = scheme=CRYPT username_format=%u /etc/dovecot/users }
Y cambiaremos
userdb { driver = passwd }
por
userdb { # For static type, LDA verify the user's existence by lookup passdb # ( http://wiki2.dovecot.org/UserDatabase/Static ) driver = static args = uid=vmail gid=vmail home=/var/vmail/%d/%n }
Ahora vamos a proceder a añadir el usuario de sistema vmail para empezar a crear cuentas de correo:
adduser --system --home /var/vmail --uid 550 --group --disabled-login vmail
Para generar la primera cuenta necesitamos poder generar la primera contraseña y lo haremos con la aplicación doveadm pw.
doveadm pw -s SHA512-CRYPT
Esto nos preguntará una contraseña y nos generará el código encriptado, por defecto se suele utiliza SHA512-CRYPT, pero BLF-CRYPT (blowfish) tiene una encriptación más fuerte.
Añadiremos al fiechero /etc/dovecot/users una línea del estilo:
edu@ipv6.org.es:{SHA512-CRYPT}$6$YbrPvVHPcgbzcaCu$ZFRJptczU8mfvXeUe5CzyECvSaPq4JaLSoPamm.pH73/BIoAjpmxMpZPdpsiwCwpTHa/MhSntksy0gmcK.Fko1
Pero antes arreglaremos los permisos:
# chmod 640 /etc/dovecot/users # chown root:dovecot /etc/dovecot/users
Ahora vamos a terminar de configurar postfix y añadiremos encima de myhostname en main.cf de postfix la línea
mydomain = ipv6.org.es
Obviamente cada uno el suyo y si es necesario modificar las líneas de myhostname y de myorigin que por defecto viene en /etc/mailname, que yo lo tengo bien, pero hay mucha gente que prefiere forzarlo a mano.
Y ya solo nos quedará añadir al fichero dovecot.conf
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0666 user = postfix group = postfix } }
Ahora ya faltará la parte de DNS.
Para la configuración de DNS tenemos que tener en cuenta las entradas MX, los SPF y las resoluciones inversas.