¿La forma más sencilla de configurar un servidor de correo electrónico IMAP seguro?

¿La forma más sencilla de configurar un servidor de correo electrónico IMAP seguro?

Me gustaría deshacerme de Google como proveedor de correo electrónico y configurar una solución de correo electrónico completa en mi servidor dedicado. El problema: deseo que la configuración sea lo más simple posible, para que no sea complicado configurar todo nuevamente si hay un problema.

Requisitos previos

  • Sólo una cuenta de usuario en la máquina.
    • (nombre diti; correo electrónico principal [email protected]; otros alias son redirigidos, pero un cliente de correo electrónico puede administrar los diferentes alias y reaccionar en consecuencia)
  • Preferiblemente no usa MySQL.
    • (en el caso de la copia de seguridad y restauración de datos, así como por razones de simplicidad, es mejor si no es necesario instalar y proteger MySQL antes de obtener un servidor de correo electrónico funcional)
  • Se puede acceder al correo electrónico (IMAP y SMTP) desde el exterior.
  • Cifrado SSL/TLS para autenticación IMAP y SMTP (estoy usandocertificado CAcertificados, ¿importa?).

Creo que la simplicidad, el acceso IMAP/SMTP y la autenticación segura son las características "básicas" que todos los que desean dejar Google o cualquier otra cosa querrían. Si me equivoco y hay una solución más sencilla (por ejemplo, una solución similar a ownCloud, con todo incluido), me encantaría escucharla.

Creo que la combinación de Postfix y Dovecot sería el camino a seguir. Por cierto, estoy ejecutando Debian.

La información que he encontrado hasta ahora.

  • Aartículo francésdescribe enmuyDetalles extensos sobre cómo configurar una solución de correo electrónico completa y segura. Es largo, más difícil de mantener, más difícil de realizar copias de seguridad y restaurar, etc. Además, ¿es necesaria una caché de DNS?
  • La wiki de Gentoo ( Complete_Virtual_Mail_Server/SSL_Certificatespágina) menciona el uso de certificados CAcert, pero no lo tiene claro (¿son SubjectAltNamenecesarios todos esos subdominios?), ni usa Postfix (he leído que Courier es más difícil).
  • Varios tutoriales sobre autohospedaje, todos diferentes, que rara vez describen lo que están haciendo ypor qué(El correo electrónico autohospedado con acceso remoto parece complicado de configurar, entonces, ¿por qué simplemente proporcionar una lista de comandos sin explicación para los "tontos?").

Espero haber preguntado las cosas correctas y que no sean demasiado tontas.

Respuesta1

  • No, no es necesario configurar una caché DNS en el servidor. El servidordeberíause un solucionador de DNS de almacenamiento en caché que esté en algún lugar cercano, pero la mayoría de las empresas de alojamiento ya ejecutan sus propios solucionadores para todo el centro de datos y configuran servidores para usarlos de forma predeterminada.

  • De forma predeterminada, tanto Postfix como Dovecot usan cuentas locales para todo. Si tiene una cuenta de Linux llamada diti, puede iniciar sesión en Dovecot con ella y configurar Postfix paravalidar los inicios de sesión SMTP contra Dovecot.

  • Si está de acuerdo con hacer que todo el correo vaya a la misma cuenta, puede configurar alias simples (como en /etc/aliases) para redirigir el correo hacia kra@o postmaster@hacia la diticuenta.

  • Todos esos sujetoAltNames no son necesarios. Los únicos que necesitas son los nombres de dominio que realmente vas ausar, por ejemplo mail.diti.meo glaux.diti.me. No estoy seguro de si es necesario incluir el dominio en sí (es decir diti.me, ).


Lo siguiente supone que el dominio ya tiene registros MX configurados para apuntar a este servidor. Generalmente trato de mantener mi configuración razonablemente clara, ya que siempre termino preguntándome "¿para qué diablos sirve esto?" unos meses después.

1.Primero, instale los paquetes postfixy dovecot-imapd. Cuando se le solicite acerca de la configuración de Postfix, seleccione la opción "Sitio de Internet" e ingrese diti.mecomo nombre de correo. En este punto, ya puedes enviar y recibir correo como [email protected], y probablemente incluso conectarte a IMAP.

Sin embargo, todavía no tiene SSL, ni permite enviar correo a través de SMTP desde el exterior, ni un lugar sensato para almacenar el correo (el valor predeterminado es un archivo mbox en formato /var/mail, que no es confiable y ofrece un mal rendimiento, especialmente con IMAP).

2.Si ya tienes un certificado SSL, introdúcelo en /etc/ssl/private/diti.me.pem, y la clave privada en /etc/ssl/private/diti.me.key. La ubicación exacta en realidad no importa, pero /etc/ssl/privatees donde Debian los guarda.

Asegúrese de que ambos archivos sean propiedad del ssl-certgrupo y sean legibles por él, para que Postfix y Dovecot puedan acceder a ellos. También agregue las cuentas de ambos demonios a ese grupo usando gpasswd -a.

3.El Postfix autogenerado de Debian main.cftambién es un poco desordenado, así que simplemente publicaré una versión mínima limpia:

# Información del servidor
midominio = diti.me
miorigen = $midominio
  # Varios otros parámetros utilizan estas dos variables como valores predeterminados.

#servicio SMTP
smtpd_tls_security_level = mayo
smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key
  # Esto permite utilizar STARTTLS en todas las conexiones SMTP entrantes.
  # Tenga en cuenta que se debe agregar `postfix` al grupo `ssl-cert` para poder
  # para acceder a archivos en /etc/ssl/private.

# Políticas
misredes = [::1]/128, 127.0.0.0/8, [::ffff:127.0.0.0]/104
  # Esto enumera las direcciones IP que se consideran "confiables" y que pueden usarse
  # este servidor para enviar correo al exterior (es decir, a otros dominios). Por
  # predeterminado, sólo se permite "localhost". De todos los demás solo envíe un correo a
  Se aceptarán # dominios en $mydestination.
midestino = $midominio, localhost
  # Lista de dominios para aceptar correo, desde cualquier dirección IP.
# Entrega
alias_maps = hash:/etc/aliases
  # Esto mantiene los alias en todo el sistema. Es bueno configurarlo explícitamente porque
  # el valor predeterminado a veces incluye NIS, lo cual no tiene sentido.
delimitador_destinatario = +
  # Le dice a postfix que divida la parte local de las direcciones en el primer '+',
  # el llamado "direccionamiento plus": el correo enviado a diti+foo@ será entregado
  # al buzón diti@.

Para Dovecot, Debian solo usa las configuraciones de ejemplo predeterminadas, y son bastante buenas, con cada opción descrita.

Siempre que cambies la configuración, recarga los demonios con postfix reloady/o doveadm reload.

4.De forma predeterminada, Postfix entrega el correo /var/mail/$USERen elmboxformato, que es bastante simple (puedes verlo fácilmente con un editor de texto) pero tiene muchos problemas, especialmente con IMAP, ya que hay que reescribir el archivo completo cada vez que mueves un mensaje o incluso marcar uno como "leído" o "no leído". ".

Cambie ambos demonios para usar Maildir. (Existen otros formatos, pero tienden a ser específicos del servidor MTA, MDA o IMAP o lo que sea; Maildir es ampliamente compatible).

En /etc/postfix/main.cf, agregue lo siguiente a la sección "Entrega":

home_mailbox = Correo/

Configure Dovecot para usar la misma ruta, en /etc/dovecot/conf.d/10-mail.conf:

ubicación_correo = direccióncorreo:~/Correo

5.En algún momento, deberás decirle a Dovecot que también use SSL. Las configuraciones relevantes están en /etc/dovecot/conf.d/10-ssl.conf. De hecho, el paquete Debian para Dovecotyautiliza SSL, aunque con un certificado autofirmado que es prácticamente inútil. Configúrelo para usar su propio certificado:

ssl = sí

ssl_cert = </etc/ssl/private/diti.me-mail.pem
ssl_key = </etc/ssl/private/diti.me-mail.key

6.Ahora puedes enviar correo al exterior y recibirlo. Aún es necesario configurar Postfix para permitirle enviardeafuera conectándose con su cliente de correo a través de SMTP.

Primero dígale a Postfix que use Dovecot para verificar los inicios de sesión. Las siguientes instrucciones están tomadas en su mayoría deWiki de Palomar.

Dovecot /etc/dovecot/conf.d/10-master.confnecesita escuchar en un enchufe al que Postfix pueda acceder; la configuración predeterminada ya tiene un ejemplo comentado:

autenticación de servicio {
    ...
    unix_listener /var/spool/postfix/privado/auth {
        modo = 0660
        usuario = sufijo
        grupo = sufijo
    }
    ...
}

Y Postfix necesita usarlo – /etc/postfix/main.cfotra vez:

# Autenticación
smtpd_sasl_type = palomar
smtpd_sasl_path = privado/autenticación
  # El otro tipo posible es "cyrus", para Cyrus SASL 'saslauthd'
  # demonio. Elijo Dovecot aquí porque funciona bien como servidor SASL y
  # Es más sencillo dejar que maneje la autenticación para ambos demonios.

7.Observe que lo anterior no se estableció smtpd_sasl_auth_enableen ninguna parte. La convención actual esnohabilite la autenticación SMTP globalmente, pero mantenga tcp/25 únicamente como un puerto SMTP "servidor a servidor". Mientras tanto, los mensajes nuevos de los usuarios se aceptan a través de SMTP en tcp/587, el puerto de "envío de correo", que requiere autenticación. Algunos ISP incluso bloquean tcp/25 debido al spam, pero mantienen abierto tcp/587 ya que suele estar mejor protegido.

Habilite el puerto "Envío" en /etc/postfix/master.cf, con autenticación SASL. El valor predeterminado master.cfya tiene las líneas necesarias que solo necesitan ser descomentadas, aunquealgunomuchos de ellos aún deberían quedar fuera.

presentación inet n - - - - smtpd
  -o syslog_name=postfix/envío
  -o smtpd_tls_security_level=cifrar
    # El puerto "Envío" requerirá TLS, en lugar de hacerlo opcional
  -o smtpd_sasl_auth_enable=sí
    # ...así como permitir que los usuarios inicien sesión.
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
    # Estas cuatro opciones se pueden dejar comentadas; si están habilitados, lo harían
    # Esperamos que establezcas reglas de restricción personalizadas en 'main.cf', pero el
    # los predeterminados están bien.
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,rechazar
    # Las restricciones de destinatario predeterminadas verifican la dirección IP y
    # $midestino. Para el puerto "Envío", permita todo siempre y cuando
    # ya que el usuario ha iniciado sesión, pero rechaza todo el correo anónimo.
  -o milter_macro_daemon_name=ORIGINANTE
    # Si luego decide configurar un proxy DKIM o similar, esto le permitirá
    # para distinguir los correos enviados por los usuarios de los entrantes recibidos.
    # Es parte de la configuración predeterminada, por lo que también se incluye aquí.

Si tiene un cliente de correo que requiere un puerto "SSL implícito" de estilo antiguo (tcp/465), puede descomentar las smtpslíneas master.cf; si lo hace, mantenga la configuración similar a la del submissionpuerto.

8.Finalmente configure alias para su cuenta, editando /etc/aliases. El postmasteralias es básicamente obligatorio; es el punto de contacto si hay problemas con su servidor de correo. Señalar rooty otros alias similares también es bueno.

El formato básico está documentado en alias(5):

postmaster: root
admin:      root
root:       diti
kra:        diti

Utilice postaliaso newaliasespara actualizar la base de datos hash /etc/aliases.dbcada vez que edite este archivo.

Ahora, todavía tiene una cuenta llamada ditien lo que respecta a Postfix y Dovecot, pero el correo enviado kra@...también se reenvía allí. Algunos clientes de correo (por ejemplo, Thunderbird) admiten múltiples "identidades" o "personas" para un único servidor de correo, por lo que puede seleccionar entre diferentes direcciones "De:".

Eso es todo. Es posible que regrese con instrucciones para procmail, dominios virtuales, SPF y/o DKIM más adelante.

información relacionada