Servidor de Correo – Casillas y usuarios virtuales

Configuración de Apache

Configuración de Apache

En este caso vamos a definir un subdominio

 <VirtualHost vma.midominio.edu.ar:80>
 ServerAdmin administrador@midominio.edu.ar
 ServerName vma.midominio.edu.ar
 ServerAlias vma.midominio.edu.ar
 DocumentRoot /srv/vimbadmin/public
 <Directory /srv/vimbadmin/public>
 Options FollowSymLinks
 AllowOverride FileInfo
 Require all granted
 </Directory>
 ErrorLog ${APACHE_LOG_DIR}/error_vma.log
 CustomLog ${APACHE_LOG_DIR}/access_vma.log combined
 </VirtualHost>

A partir de aquí se puede visitar vma.midominio.edu.ar y crear una cuenta de administrador ViMbAdmin. Por favor, notar que esta cuenta ViMbAdmin no es una cuenta virtual de correo electrónico.
Es posible agregar dominio, usuarios virtuales de correo electrónico luego de ingresar a vma.midominio.edu.ar usando la cuenta ViMbAdmin.

Probando la configuración

Local
La herramienta cliente de OpenSSL ofrece una manera de conectar y diagnosticar servidores:

# openssl s_client -starttls smtp -connect midominio.edu.ar:587
# openssl s_client -connect midominio.edu.ar:993

ambos comandos deben arrojar
Verify return code: 0 (ok)
como una de las últimas líneas.

Servidor
En una nueva terminal, nos conectamos al servidor

# tail -f /var/log/mail.log

para verificar si postfix y dovecot están (re-)arrancando sin inconvenientes:

# service postfix restart
# service dovecot restart

Luego verificamos los puertos 25, 587 y 993 aparecen en la columna ‘Local Address’:

# netstat -ltnp

Configuración de MUA (Mail User Agent) ej. Mozilla Thunderbird

Correo entrante IMAP:

Nombre de host: midominio.edu.ar
Puerto: 993
SSL: SSL/TLS
Autenticación: Clave normal
Nombre de usuario: administrador@midominio.edu.ar

Correo saliente SMTP:

Nombre de host: midominio.edu.ar
Puerto: 587
SSL: STARTTLS
Autenticación: Clave normal
Nombre de usuario: administrador@midominio.edu.ar

Configuración automática de los clientes de correo para IMAP/SMTP

Algunos clientes de correo emplean un sistema denominado “Autodiscover” para averiguar cuáles son los parámetros de uso imap/smtp.
Puedes configurar esto si quieres, básicamente requiere un subdominio y un registro SRV.
Puedes agregar el registro SRV en cualquier dominio para el que quieras usar esta configuración.
Si tienes un certificado SSL global en dovecot para tu nombre de host, esta sería una buena forma de asegurarte de que los clientes utilizan el valor correcto, para que no obtengan errores de certificado SSL.
Supongamos que vas a tener a tus clientes con

midominio.edu.ar

conectados a

correo.midominio.edu.ar

tanto para IMAP como para SMTP.
Creamos un subdominio llamado

autodiscover.midominio.edu.ar

para almacenar el XML.
Configuramos un registro SRV en la zona DNS de midominio.edu.ar:

_autodiscover._tcp.midominio.edu.ar. 3600 IN SRV 10 10 443 autodiscover.midominio.edu.ar.

Luego, creamos el subdominio autodiscover.midominio.edu.ar y añadimos el siguiente código en un archivo llamado autodiscover.php:

<?php
//get raw POST data so we can extract the email address
$data = file_get_contents("php://input");
preg_match("/\<EMailAddress\>(.*?)\<\/EMailAddress\>/", $data, $matches);
//set Content-Type
header("Content-Type: application/xml");
echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
 <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
 <Account>
 <AccountType>email</AccountType>
 <Action>settings</Action>
 <Protocol>
 <Type>IMAP</Type>
 <Server>correo.midominio.edu.ar</Server>
 <Port>993</Port>
 <DomainRequired>off</DomainRequired>
 <LoginName><?php echo $matches[1]; ?></LoginName>
 <SPA>off</SPA>
 <SSL>on</SSL>
 <AuthRequired>on</AuthRequired>
 </Protocol>
 <Protocol>
 <Type>SMTP</Type>
 <Server>correo.midominio.edu.ar</Server>
 <Port>587</Port>
 <DomainRequired>off</DomainRequired>
 <LoginName><?php echo $matches[1]; ?></LoginName>
 <SPA>off</SPA>
 <Encryption>TLS</Encryption>
 <AuthRequired>on</AuthRequired>
 <UsePOPAuth>off</UsePOPAuth>
 <SMTPLast>off</SMTPLast>
 </Protocol>
 </Account>
 </Response>
</Autodiscover>

Ten en cuenta que el registro SRV utiliza el puerto 443 para autodiscover.midominio.edu.ar, así que asegúrate de tener una configuración de certificado válida para este subdominio.
Puedes probar yendo a https://autodiscover.midominio.edu.ar para asegurarte de que tienes un candado verde. El script busca la entrada XML en la etiqueta <EMailAddress> para insertar en el campo de resultado <LoginName>.
Si es necesario, puedes configurar SMTP para usar el puerto 465, pero tendrías que cambiar la <Encriptación> de TLS a SSL, ya que el protocolo es diferente en el 465.
El puerto 587 requiere smtp-auth pero se salta algunas comprobaciones de spam y usa STARTTLS para habilitar SSL. El puerto 465 es SSL completo pero los clientes pueden tener problemas para enviar si su IP/rango está en una RBL.
Por último, necesitaremos configurar un archivo .htaccess para que cualquier petición al subdominio autodiscover.midominio.edu.ar resulte en que se llame al autodiscover.php. En el DocumentRoot del subdominio, añade este código:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ autodiscover.php [NC,L]
Thunderbird

A diferencia de la auto-detección de Microsoft, Thunderbird hace un intento directo a
http://autoconfig.midominio.edu.ar/mail/config-v1.1.xml?emailaddress=user@midominio.edu.ar
Esto puede ser manejado creando un subdominio llamado “autoconfig”, y en el área web de este subdominio, crear una carpeta llamada “mail”, y dentro de este directorio “mail”, crear un archivo llamado config-v1.1.xml. Una ruta de ejemplo podría ser similar a:
/domains/midominio.edu.ar/public_html/autoconfig/mail/config-v1.1.xml
Dentro de este archivo, colocamos el código:

<clientConfig version="1.1">
 <emailProvider id="midominio.edu.ar">
 <domain>midominio.edu.ar</domain>
 <displayName>%EMAILADDRESS%</displayName>
 <incomingServer type="imap">
 <hostname>mail.midominio.edu.ar</hostname>
 <port>993</port>
 <socketType>SSL</socketType>
 <username>%EMAILADDRESS%</username>
 <authentication>password-cleartext</authentication>
 </incomingServer>
 <outgoingServer type="smtp">
 <hostname>smtp.midominio.edu.ar</hostname>
 <port>587</port>
 <socketType>STARTTLS</socketType>
 <username>%EMAILADDRESS%</username>
 <authentication>password-cleartext</authentication>
 </outgoingServer>
 </emailProvider>
</clientConfig>