Sendmail (Español)

From ArchWiki
Esta traducción de Sendmail fue revisada el 2019-11-21. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Sendmail es el clásico agente de transferencia de correo del mundo Unix. Este artículo se basa en Mail server.

El objetivo de este artículo es configurar Sendmail para cuentas de usuarios locales, sin usar MySQL u otra base de datos, y también permitir la creación de cuentas solo de correo .

Instalación

Instale los paquetes sendmailAUR, procmailAUR y m4.

Añadir usuarios

Cree un usuario de Linux para cada usuario que desee recibir correo electrónico en username@your-domain.com. Para añadir cuentas solo de correo, es decir, usuarios que pueden recibir correos electrónicos, pero no pueden tener acceso de shell o iniciar sesión en X, puede agregarlos así:

# useradd -m -s /usr/bin/nologin nombre-de-usuario

Configuración

Obtener certificado TLS

Advertencia: Si implementa TLS, asegúrese de seguir guía de weakdh.org y desactivar SSLv3 para evitar vulnerabilidades. Para obtener más información, consulte Server-side TLS.

Para obtener un certificado, consulte OpenSSL#Usage.

sendmail.cf

Cree el archivo /etc/mail/sendmail.mc. Puede leer todas las opciones para configurar sendmail en el archivo /usr/share/sendmail-cf/README.

Advertencia: Si crea su propio archivo sendmail.mc, recuerde que la autenticación de texto plano mediante non-TLS es muy arriesgada. Utilizar el siguiente ejemplo obliga a utilizar TLS y, por lo tanto, es más seguro, a menos que sepa lo que está haciendo.

He aquí hay un ejemplo usando «auth» mediante TLS. El ejemplo tiene comentarios que explican cómo funciona. Los comentarios comienzan con dnl .

/etc/mail/sendmail.mc
include(`/usr/share/sendmail-cf/m4/cf.m4')
define(`confDOMAIN_NAME', `your-domain.com')dnl
FEATURE(use_cw_file)
dnl  Lo siguiente permite enviar si el usuario se autentica,
dnl  y no permite la autenticación de texto plano (PLAIN/LOGIN) mediante
dnl  enlaces non-TLS:
define(`confAUTH_OPTIONS', `A p y')dnl
dnl
dnl  Aceptar autenticaciones PLAIN y LOGIN:
TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
dnl
dnl Asegúrese de que estas rutas apuntan correctamente a sus archivos cert SSL:
define(`confCACERT_PATH',`/etc/ssl/certs')
define(`confCACERT',`/etc/ssl/cacert.pem')
define(`confSERVER_CERT',`/etc/ssl/certs/server.crt')
define(`confSERVER_KEY',`/etc/ssl/private/server.key')
dnl
FEATURE(`virtusertable', `hash /etc/mail/virtusertable.db')dnl
OSTYPE(linux)dnl
MAILER(local)dnl
MAILER(smtp)dnl

Luego procéselo con:

# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

local-host-names

Coloque sus dominios en el archivo local-host-names:

/etc/mail/local-host-names
localhost
your-domain.com
mail.your-domain.com
localhost.localdomain

Asegúrese de que los dominios también sean resueltos por su archivo /etc/hosts.

access.db

Cree el archivo /etc/mail/accessy coloque allí las direcciones base donde desea poder enviar el correo. Supongamos que tiene una vpn en 10.5.0.0/24, y desea enviar correos desde cualquier ip en ese rango:

/etc/mail/access
10.5.0 RELAY
127.0.0 RELAY

Luego procéselo con:

# makemap hash /etc/mail/access.db < /etc/mail/access

aliases.db

Cree el archivo /etc/mail/aliases, descomente la línea #root: human being here y cámbielo para que sea así:

root:         your-username

Puede añadir alias para sus nombres de usuario allí, de esta forma:

coolguy:      your-username
somedude:     your-username

Luego procéselo con:

# newaliases

virtusertable.db

Cree el archivo virtusertable y coloque alias que incluyan dominios (útil si su servidor aloja varios dominios):

/etc/mail/virtusertable
your-username@your-domain.com         your-username
joe@my-other.tk                       joenobody

Luego procéselo con:

# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

Comenzar en el arranque

Active e inicie los siguientes servicios. Véase Daemons para obtener más detalles.

  • saslauthd.service
  • sendmail.service
  • sm-client.service

Autenticación SASL

Añada un usuario a la base de datos SASL para la autenticación SMTP:

# saslpasswd2 -c your-username

Consejos y trucos

Reenviar todo el correo de un dominio a cierto usuario

Para reenviar todo el correo dirigido a cualquier usuario en el dominio my-other.tk a your-username@your-domain.com, añádalo al archivo /etc/mail/virtusertable:

@my-other.tk        your-username@your-domain.com

No olvide procesarlo nuevamente con:

# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable