¿Cómo configuro un servidor de correo electrónico?

59

Mi VPS está ejecutando Ubuntu, y me gustaría poder recibir correos electrónicos en mi dominio.

¿Cómo configuro fácilmente un servidor de correo para hacer esto?

Stefano Palazzo
fuente
3
Gran pregunta, estoy esperando una gran respuesta. He creado un par de servidores de correo a lo largo de los años y nunca ha sido fácil. Muchas decisiones: qué servidor de SMS, qué IMAP / POP, cómo almacenar los correos electrónicos, cómo almacenar usuarios ... Estoy completamente incapaz de dar una respuesta fácil .
Javier Rivera

Respuestas:

48

Así es como configuré el correo en nuestras máquinas de producción. Estos son los criterios que necesitábamos:

  • Cuentas de correo electrónico
  • Alias ​​de correo electrónico (reenviadores)
  • IMAP, POP3 y SMTP

"Fácil" (tl; dr)

Primero, quiero abordar lo que parece ser la solución más fácil .

sudo tasksel install mail-server

Varios problemas con esto ocurrieron cuando probamos esto: Primero instala Dovecot, lo cual está bien para la mayoría, pero hemos considerado que Courier es el mejor de los dos para nuestras necesidades. En segundo lugar, utiliza Postfix, que es excelente, pero también necesitamos Exim, ya que es un servidor MTA / SMTP más potente. En tercer lugar, instala MySQL: en la configuración que utilizo, preferimos los archivos planos para la configuración, ya que es un punto de ruptura menos. Piensa en lo que sucedería si MySQL fallara por alguna razón desconocida. De lo contrario, el resto de los paquetes es bastante sencillo y fácil de mantener para un servicio de correo pequeño (piense en 1-2 dominios de correo electrónico en total).

Nuestra configuración

Estructura de directorios

Nos desviamos un poco del camino de las configuraciones normales, pero facilita la gestión.

Todo nuestro correo electrónico se almacena en /var/mail/virtual/<domain>/<user>/mailAsí que para futuros ejemplos voy a estar utilizando [email protected], [email protected], [email protected]para representar una dirección de correo electrónico, un promotor de ir a [email protected], y una mala dirección, respectivamente. En el ejemplo anterior sería /var/mail/virtual/example.com/email/mail.

También mantengo una lista de todos los dominios en el servidor /etc/valiasespero más sobre eso más adelante.

Sufijo

Esta es más o menos la parte fácil de la configuración. Simplemente instale el postfixpaquete.

Exim

Instale Exim con apt-get install exim4 exim4-base exim4-config exim4-daemon-heavyUna vez instalado, deberá editar la configuración predeterminada de Exim para reemplazar o agregar los siguientes valores:

domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes

(Estas líneas aparecerán en diferentes partes del archivo, reemplácelas en consecuencia)

Una vez que esté completo, reconstruya la configuración update-exim4.confde Exim con Esto concluye los cambios necesarios para Exim

mensajero

Instalar mensajero con courier-baseeste debe instalar courier-authdaemon, courier-authlib*, courier-imap*, courier-pop*, courieruserinfo,courier-ssl

Sinceramente, no hay mucha configuración fuera del estándar. Solo tendrá que crear una base de datos de usuarios.

Cuentas

Exim y Courier verifican algunos lugares para ver si un inicio de sesión o un correo electrónico entrante son válidos. Exim comprueba si el dominio aparece como un nombre de host local, o si el dominio está dentro /var/mail/virtualo si está dentro /etc/valiases.

Crear cuentas de correo electrónico

Finalmente creé varias herramientas para agilizar este proceso, pero agregar un nuevo usuario se ajusta a:

mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/

Luego agregue la dirección al servicio de mensajería userdb, para que puedan iniciar sesión

userdb [email protected] set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail

Asegúrese de reemplazar los valores donde corresponda. Además, uidy gid debe ser el ID numérico de usuario / grupo para el usuario de correo.

userdbpw -md5 | userdb [email protected] set systempw

Esto le pedirá una contraseña, ingrese la que desea usar para la cuenta.

makeuserdb

Finalmente, genere los archivos hasd / shadow userdb. Reinicie Courier y pruebe si sus cambios funcionan:

authtest [email protected]

Debería producir algo similar a

Authentication succeeded.

     Authenticated: [email protected]  (uid 8, gid 8)
    Home Directory: /var/mail/virtual/example.com/email
           Maildir: /var/mail/virtual/example.com/email/mail
             Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
           Options: (none)

Si ve "Error de autenticación: operación no permitida", edite / etc / courier / authdaemonrc y agregue authuserdb a la línea authmodulelist.

Una vez que se hayan confirmado todas las pruebas, reinicie los diversos servicios involucrados ( courier-authdaemon, exim4), abra los puertos 143, 25, 586, 495, 110 y configure las cuentas en su cliente de correo favorito.

Crear alias de correo electrónico

Para cada dominio, debe crear un archivo /etc/valiases(crear si no existe) con al menos la siguiente línea:

*: :fail: No user at this address.

Qué dice esto: si el correo entrante no coincide con ninguna cuenta de correo electrónico que tengo en el archivo, entonces el correo debe fallar y rebotar con un mensaje: "Ningún usuario en esta dirección". Por lo tanto, todo el correo enviado a decir: [email protected]sería rechazado como un fracaso.

Sin embargo, tenemos algunas direcciones de correo electrónico que deseamos mantener en otro lugar, por ejemplo, [email protected], para hacerlo necesitamos crear /etc/valiases/example.comy el contenido del archivo debe ser el siguiente:

fwd: [email protected]
*: :fail: No user at this address.

De esa manera, aunque [email protected] no coincide con ninguna cuenta de correo electrónico en el servidor, coincide con el /etc/valiasesarchivo y el correo se reenviará a [email protected]. Sin embargo, [email protected] seguirá fallando con un mensaje "Ningún usuario en esta dirección".

Marco Ceppi
fuente
11
¿Esto viene con un número ISBN?
Wesley
1
@WesleyDavid No creo que mi historia de bash se muestre como un ISBN :)
Marco Ceppi
Solo siguiendo esto, muy apreciado, he editado anteriormente para cubrir un error que obtuve con la línea de prueba automática.
Darren Greaves
@DarrenGreaves Gracias! ¡Me alegra que haya ayudado y gracias por la actualización!
Marco Ceppi
Estoy luchando para que todo esto funcione: solo obtuve el enrutamiento de valiases para trabajar cuando agregué el archivo de enrutamiento 350 (editado para rutas) de debian-administration.org/articles/140 : las cosas de dominios virtuales no funcionan en absoluto - ¿Tuviste que agregar algún archivo de enrutamiento? Ejército de reserva.
Darren Greaves
14

La forma más fácil es correr sudo tasksel install mail-server. Eso le dará un servidor de correo electrónico con valores predeterminados sanos. Todo lo que tiene que hacer es responder algunas preguntas. Obviamente, aún puede hacer configuraciones manuales después si es necesario, pero en la mayoría de los casos no lo será. Simplemente siga las instrucciones en pantalla y debería estar bien.

Sin embargo, leer sobre la administración de los servicios de correo electrónico es absolutamente recomendable.

Referencias oficiales:

Jo-Erlend Schinstad
fuente
¿Hay una manera perezosa de ver qué va a hacer (paquetes que instalará, configuración predeterminada)? Por perezoso quiero decir sin instalarlo yo mismo.
Javier Rivera
@Javier puede ver qué contenido se instala ejecutandosudo tasksel --task-packages mail-server
Marco Ceppi
Configuración almacenada en MySQL, sin anti-spam, sin antivirus ... no es realmente útil para nosotros :(.
Javier Rivera
4

Acabo de hacer esto yo mismo, de hecho necesitas postfix, y en mi caso también quería un servidor imap para poder usar un buen cliente gui (sin mencionar ningún nombre) en otra máquina. Usé estos documentos:

Sufijo

Dovecot (imap y pop3)

En realidad es bastante simple, lo puse en funcionamiento en unos minutos y estoy recibiendo correos electrónicos. Esto también es útil para comprobar que todo está configurado bien pingability .

Ah, y por supuesto, tendrá que configurar sus entradas de dns correctamente como se muestra a continuación (según la configuración que funcionó para mí):

name   type   content
  @      A     ???.???.??.??    
mail     A     ???.???.??.??

y

         MX Records
Name                 Priority
mail.mydomain.com.      1
mail2.mydomain.com.     2

Tenga en cuenta la parada completa al final de los servidores de correo e inserte su dirección IP y nombre de dominio cuando corresponda.

NimChimpsky
fuente