Sendmail (Español)
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 [email protected]. 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
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
.
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/access
y 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
[email protected] your-username [email protected] joenobody
Luego procéselo con:
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
Comenzar en el arranque
Active e inicie los siguientes servicios. Lea 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 [email protected], añádalo al archivo /etc/mail/virtusertable
:
@my-other.tk [email protected]
No olvide procesarlo nuevamente con:
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable