Inicio / Linux / Servidor de Correo

Servidor de Correo

SendmailEn el año 2004, escribí para la web de la asociación AMIGA un manual de como instalar y configurar un servidor de correo con Sendmail bajo linux, pues hoy me lo he encontrado en una web en la que respetaron los créditos, así que aprovecho y lo dejo publicado aquí. OJO ES DE 2004!!!!

escrito por Bosco López
23-05-2004
Primeramente decir que este manual se ha utilizado y seguido en la Fedora Core 1, pero también se ha utilizado con Red Hat, así que es posible que en alguna otra distro las rutas difieran de las que aquí se nombran.Nos ponemos manos a la obra y lo primero que tendremos que hacer es comprobar que tenemos una serie de paquetes instalados y de no ser así instalarlos cuanto antes.rpm -q sendmail sendmail-cf imap m4 make cyrus-sasl cyrus-sasl-md5

De esta forma comprobaríamos si los paquetes están instalados, pero si por ejemplo nos devolviera que alguno de ellos no está instalado o por casualidad ninguno está instalado ejecutariamos lo siguiente
Para los que usen yum:
yum install sendmail sendmail-cf imap m4 make cyrus-sasl cyrus-sasl-md5

Para los que usen apt:
apt-get install sendmail sendmail-cf imap m4 make cyrus-sasl cyrus-sasl-md5

Ahora antes de seguir vamos a dejar claro como haremos el alta de cuentas de usuario, para que después no surjan problemas ni quebraderos de cabeza, así que fijaros bien.

Como es casi seguro que algún día tengamos más de un dominio en nuestro servidor, podría ocurrir que una persona se diera de alta como pepito el cual pertenecería al dominio1.com, pero al agregar el dominio2.com dos meses después a nuestro servidor, otro usuario quiere registrarse con el nombre de pepito pero con cuenta de email en dominio2.com:
pepito@dominio1.com
pepito@dominio2.com
Para poder tener este tipo de usuarios sin ningún tipo de problema las altas en vez de crearlas así:

useradd -s /sbin/nologin pepito

Las crearemos con un login del tipo usuario, para que quede más claro a pepito del dominio1.com le llamaremos usuario1 y a pepito del dominio2.com le llamaremos usuario2:
useradd -s /sbin/nologin usuario1
useradd -s /sbin/nologin usuario2

Más adelante explicaré como los diferenciaremos, para que a cada uno le llegue su correo.
Lógicamente a cada usuario hay que darle una contraseña por lo que usaremos el comando:
passwd usuario1

También asignamos la contraseña SASL para permitir la autentificación vía SMTP:

saslpasswd2 usuario1

Bien, ya sabemos como agregar a los usuarios que tendrán cuenta de correo en nuestro servidor.
Ahora estableceremos los dominios que hospedamos en nuestro servidor; para ello tendremos que ir al archivo que se encuentra en la siguiente ruta:

/etc/mail/local-host-names

Lo editamos con nuestro editor favorito y lo dejariamos tal que así:
dominio1.com
dominio2.com
mail.dominio1.com
mail.dominio2.com

Volvemos a abrir nuestro editor preferido y creamos el siguiente archivo “relay-domains”, donde incluiremos los dominios que tienen permitido el envío de correos, normalmente local-host-names y relay-domains tienen el mismo contenido, pero en caso de que vosotros querais excluir a algún dominio para que no pueda enviar correo, no tendriais que agregarlo en este archivo.
Por ejemplo vamos a pensar que <b>dominio2.com</b> no queremos que envie correos.
Lo que tendriamos en relay-domains sería lo siguiente:
dominio1.com
mail.dominio1.com
———————–
Si días después decidieramos que dominio2.com si puede enviar correos, tendriamos lo siguiente:
dominio1.com
mail.dominio1.com
dominio2.com
mail.dominio2.com

Este archivo lo guardaremos en la siguiente ruta /etc/mail/
Vamos ahora a configurar las ips que podrán enviar correo sin autentificar y las ips a las que tenemos denegado enviar correo aunque se autentifiquen.
Para ello editamos el siguiente archivo /etc/mail/access
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.1.254 RELAY
# Otros servidores de correo en la LAN y que tiene permitido
# enviar correo hacia otros servidores.
192.168.1.253 RELAY
192.168.1.252 RELAY
# Algunas máquinas que tiene permitido enviar correo
# sin autenticarse, pero no enviar correo hacia otros servidores.
192.168.1.251 OK
192.168.1.250 OK
#
# Lista negra. Se rechaza correo que se diríja hacia y desde:
roberto@fresnedoso.com REJECT
spammingSuX.com.mx REJECT
213.60.51.20 REJECT

Los que están como RELAY no necesitan autenficarse ante el SMTP.
Ahora antes de ponernos a configurar el sendmail.mc, configuraremos a que usuario llegarán los correos de root; para ello vamos a /etc/aliases y al final del todo, ponemos:

root: usuario0 <- O el nombre de usuario que tenemos nosotros en la máquina, eso a gusto del consumidor 😛

Configuración del sendmail.mc
Primero una vista preliminar y después un archivo de configuración por defecto que os debería servir a casi todos añadiendo algunas cosillas 🙂

Si se utiliza la siguiente línea, habilitada por defecto, se permitirá realizar autenticación a través del pueto 25 por cualquier método, incluyento PLAIN, el cual se realiza en texto simple. Esto implica cierto riesgo de seguridad.
define(confAUTH_OPTIONS', A’)dnl

Si comenta la anterior línea con dnl, y se utiliza en cambio la siguiente línea, se deshabilitará la autenticación por de texto simple en conexiones no seguras (TLS), de modo tal que solo se podrá autenticar a través de métodos que utilicen ciframiento, como sería CRAM-MD5 y DIGEST-MD5.
define(confAUTH_OPTIONS', A p’)dnl
Si se desea utilizar SMTP autenticado para equipos no incluidos dentro de /etc/mail/access, se requieren descomentar las siguientes dos líneas, eliminando el ‘dnl’ que les precede:

TRUST_AUTH_MECH(EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(
confAUTH_MECHANISMS’, EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

Deshabilitar las funciones que definen trabajar sobre la interfaz 127.0.0.1 y recibir correo de dominios inexistentes precediendo con 'dnl ' en las siguientes líneas:
dnl DAEMON_OPTIONS(
Port=smtp,Addr=127.0.0.1, Name=MTA’)dnl
dnl FEATURE(accept_unresolvable_domains')dnl

Habilitar las siguientes lineas y adaptar valores para definir la máscara que utilizará el servidor:

MASQUERADE_AS(mi-dominio.com’)dnl <- *Nota 1
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

Si se desea cargar listas negras para resolver los problemas de Spam, pueden añadirse las siguientes líneas justo arriba de MAILER(smtp)dnl:

FEATURE(dnsbl, blackholes.mail-abuse.org', Rejected – see www.mail-abuse.org/rbl/’)dnl
FEATURE(dnsbl, dialups.mail-abuse.org', Rejected – see www.mail-abuse.org/dul/’)dnl
FEATURE(dnsbl, relays.mail-abuse.org', Rejected – see work-rss.mail-abuse.org/rss/’)dnl
FEATURE(dnsbl, sbl-xbl.spamhaus.org', Rejected – see http://www.spamhaus.org/SBL/’)dnl
FEATURE(dnsbl, bl.spamcop.net', Rejected – see http://spamcop.net/’)dnl

Una vez guardado este archivo ejecutaremos el siguiente comando:

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

Archivo de configuración básica sendmail.mc
divert(-1)dnl
dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl # make -C /etc/mail
dnl #
include(/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(
setup for Red Hat Linux’)dnl
OSTYPE(linux')dnl
dnl #
dnl # Uncomment and edit the following line if your outgoing mail needs to
dnl # be sent out through an external mail server:
dnl #
dnl define(
SMART_HOST’,smtp.your.provider')
dnl #
define(
confDEF_USER_ID’,8:12”)dnl
define(confTRUSTED_USER', smmsp’)dnl
dnl define(confAUTO_REBUILD')dnl
define(
confTO_CONNECT’, 1m')dnl
define(
confTRY_NULL_MX_LIST’,true)dnl
define(confDONT_PROBE_INTERFACES',true)dnl
define(
PROCMAIL_MAILER_PATH’,/usr/bin/procmail')dnl
define(
ALIAS_FILE’, /etc/aliases')dnl
dnl define(
STATUS_FILE’, /etc/mail/statistics')dnl
define(
UUCP_MAILER_MAX’, 2000000')dnl
define(
confUSERDB_SPEC’, /etc/mail/userdb.db')dnl
define(
confPRIVACY_FLAGS’, authwarnings,novrfy,noexpn,restrictqrun')dnl
define(
confAUTH_OPTIONS’, A')dnl
dnl #
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
dnl #
dnl define(
confAUTH_OPTIONS’, A p')dnl
dnl #
dnl # PLAIN is the preferred plaintext authentication method and used by
dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do
dnl # use LOGIN. Other mechanisms should be used if the connection is not
dnl # guaranteed secure.
dnl #
dnl TRUST_AUTH_MECH(
EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
dnl define(confAUTH_MECHANISMS', EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
dnl #
dnl # Rudimentary information on creating certificates for sendmail TLS:
dnl # make -C /usr/share/ssl/certs usage
dnl #
dnl define(confCACERT_PATH',/usr/share/ssl/certs’)
dnl define(confCACERT',/usr/share/ssl/certs/ca-bundle.crt’)
dnl define(confSERVER_CERT',/usr/share/ssl/certs/sendmail.pem’)
dnl define(confSERVER_KEY',/usr/share/ssl/certs/sendmail.pem’)
dnl #
dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP’s
dnl # slapd, which requires the file to be readble by group ldap
dnl #
dnl define(confDONT_BLAME_SENDMAIL',groupreadablekeyfile’)dnl
dnl #
dnl define(confTO_QUEUEWARN', 4h’)dnl
dnl define(confTO_QUEUERETURN', 5d’)dnl
dnl define(confQUEUE_LA', 12′)dnl
dnl define(confREFUSE_LA', 18′)dnl
define(confTO_IDENT', 0′)dnl
dnl FEATURE(delay_checks)dnl
FEATURE(no_default_msa',dnl’)dnl
FEATURE(smrsh',/usr/sbin/smrsh’)dnl
FEATURE(mailertable',hash -o /etc/mail/mailertable.db’)dnl
FEATURE(virtusertable',hash -o /etc/mail/virtusertable.db’)dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl #
dnl # The -t option will retry delivery if e.g. the user runs over his quota.
dnl #
FEATURE(local_procmail,',procmail -t -Y -a $h -d $u’)dnl
FEATURE(access_db',hash -T -o /etc/mail/access.db’)dnl
FEATURE(blacklist_recipients')dnl
EXPOSED_USER(
root’)dnl
dnl #
dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
dnl DAEMON_OPTIONS(Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
dnl # this useful.
dnl #
dnl DAEMON_OPTIONS(
Port=submission, Name=MSA, M=Ea’)dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 465, but
dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can’t
dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS
dnl # and doesn’t support the deprecated smtps; Evolution <1.1.1 uses smtps
dnl # when SSL is enabled– STARTTLS support is available in version 1.1.1.
dnl #
dnl # For this to work your OpenSSL certificates must be configured.
dnl #
dnl DAEMON_OPTIONS(Port=smtps, Name=TLSMTA, M=s')dnl
dnl #
dnl # The following causes sendmail to additionally listen on the IPv6 loopback
dnl # device. Remove the loopback address restriction listen to the network.
dnl #
dnl # NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl # a kernel patch
dnl #
dnl DAEMON_OPTIONS(
port=smtp,Addr=::1, Name=MTA-v6, Family=inet6′)dnl
dnl #
dnl # We strongly recommend not accepting unresolvable domains if you want to
dnl # protect yourself from spam. However, the laptop and users on computers
dnl # that do not have 24×7 DNS do need this.
dnl #
dnl FEATURE(accept_unresolvable_domains')dnl
dnl #
dnl FEATURE(
relay_based_on_MX’)dnl
dnl #
dnl # Also accept email sent to “localhost.localdomain” as local email.
dnl #
LOCAL_DOMAIN(localhost.localdomain')dnl
dnl #
dnl # The following example makes mail from this host and any additional
dnl # specified domains appear to be sent from mydomain.com
dnl #
MASQUERADE_AS(
mi-dominio.org.mx’)dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
FEATURE(masquerade_envelope)dnl
dnl #
dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
dnl FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
FEATURE(dnsbl, blackholes.mail-abuse.org', Rejected – see www.mail-abuse.org/rbl/’)dnl
FEATURE(dnsbl, dialups.mail-abuse.org', Rejected – see www.mail-abuse.org/dul/’)dnl
FEATURE(dnsbl, relays.mail-abuse.org', Rejected – see work-rss.mail-abuse.org/rss/’)dnl
FEATURE(`delay_checks’)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

Al final de este archivo justo después de <b>MAILER(procmail)dnl</b> añadiremos de la siguiente forma nuestros dominios:
Cwdominio1.com
Cwdominio2.com
/**************************
Es decir Cw seguido del dominio *
**************************/

Después de haber guardado este archivo generaremos el sendmail.cf con el siguiente comando:
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
Ya casi estamos terminando, así que ahora una serie de comandos que ejecutaremos en nuestra consola para rematar la faena:
/sbin/newaliases <- Para que nos pille la nueva configuración de alias
/sbin/service sendmail restart <- Reiniciamos el servidor Sendmail para que utilice nuestra nueva configuración
/sbin/chkconfig –level 345 sendmail on<- Para que Sendmail se inicie con el sistema
/sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 –dport 25 -j ACCEPT<- Para aceptar el correo que nos envíen, sino tendriamos un grave problema 😛 , podríamos enviar pero no recibir.
Habilitamos los servicios pop e imap:
/sbin/chkconfig ipop3 on
/sbin/chkconfig pop3s on
/sbin/chkconfig imap on
/sbin/chkconfig imaps on
Reiniciamos el daemon xinetd:
/sbin/service xinet restart
El Archivo Virtusertable

Como dije al principio siempre nos puede ocurrir el tener que dar de alta a dos usuarios con el mismo login pero en diferente dominio, lógicamente es algo engorroso, pero si adoptamos el dar de alta a usuarios de la forma usuario1, usuario2,..etc o bien de la forma usermail1,usermail2,… la que se os ocurra nos libraremos de estos problemas ya que en el archivo virtusertable podemos definir a que usuario está destinada cada cuenta de correo:

Pongamos un ejemplo de un archivo virtusertable:

pepito@dominio1.com usuario1
pepito@dominio2.com usuario2
admin@dominio1.com usuario3
webmaster@dominio2.com usuario4
…..

Una vez guardado este archivo ejecutamos el comando makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable y reinciamos nuestro servidor de Sendmail.

Esto es todo por hoy, mañana más.

Sobre Bosco López

/dev/null

Te puede interesar también

Instalar un Theme en Nagios 4 y paquete de iconos

Nagios Core no destaca por tener una interface gráfica demasiado llamativa y hasta podríamos decir …

2 Comentarios

  1. I would like to exchange links with your site http://www.boscolopez.com
    Is this possible?

  2. Hi
     
    I need to understan..the how to…of your brain? it´s possible..really?
     
    La ostia tú!
    Bss…pero sin..l!
    YO

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *