You are on page 1of 25

Módulo VII

Servidores de web y correo electrónico


Introducción
En este módulo se estudiará el apache como servidor de web y también el sendmail como MTA
(Message Transfer Agent) (casi) estándar de Linux. Decimos casi estándar porque existen otros do
con renombre: Postfix y qmail.

Apache - Servidor para páginas web (http server)


Linux, es un sistema operativo que posee una gran cantidad de soluciones y muy buena
performance en lo que a servicios de red TCP/IP se refiere. Un servidor de paginas web es una
solución casi estándar en la actualidad.
En este modulo se estudiará apache ya que, además de ser el servidor web de Linux, posee
actualmente (según NetCraft http://www.netcraft.com) un 62% de instalaciones en toda la internet
(cerca de 8.000.000 instalaciones), sea sobre GNU/Linux u otros sitemas operativos.
Utilización
La mayoría de las distribuciones vienen con un paquete del apache, pero de todas formas, al estar
bajo licencia GPL, los fuentes están disponibles. Todo lo relacionado con apache se puede encontrar
en http://www.apache.org
Una vez instalado el paquete (o compilados los fuentes) se puede inicializar el demonio ejecutando
el comando "httpd". Dependiendo su configuración, se van a encontrar "n" procesos con el mismo
nombre, e incluso se puede correr el apache como servicio de inetd (aunque esto no es
recomendable en lo absoluto).
El servidor web puede correr a nombre de cualquier usuario del sistema, siempre se recomienda no
utilizar el superusuario para realizar esto, ya que se pueden presentar algunos agujeros de seguridad.
(internamente se le especifica al httpd que utilice un usuario en particular para ejecutarse, por lo
tanto se puede ejecutar el comando como root y el proceso quedara a nombre del usuario
configurado).
Por defecto, el servidor web "escucha" en el puerto 80 de TCP/IP, aunque esto es configurable y
modificable.
Configuración
Apache posee básicamente tres archivos de configuración, aunque en algunas instalaciones se
encuentran los tres archivos integrados en uno solo.
Los tres archivos son:
1.httpd.conf
2.srm.conf
3.access.conf
En todos los archivos de configuración del apache, se agregan comentarios escribiendo el signo
numeral "#" en la primer columna de cada línea comentada.
httpd.conf
Este es el archivo de configuración principal, cuando se integran todos los archivos de
configuración se utiliza este, incluyendo el código de los otros dos. En este archivo se configura la
parte más esencial del apache, acá se le dirá al apache donde están todos los archivos de
configuración del apache, que módulos estarán activos, sobre que puerto de TCP/IP estará
escuchando el servidor, cuantos servidores virtuales tiene, etcétera.
Algunos campos de interés:
•ServerType <forma de ejecución>
Las opciones son standalone, que es la default, o inetd que permite que el proceso sea gobernado
por el inetd (cada vez que un navegador pida una página en este servidor web, el inetd levantará el
proceso http)
•HostnameLookups <on u off>
Este campo le indicará al web server si debe hacer una búsqueda del nombre que tiene asociado el
número de IP del cliente (el navegador). Esto permitirá que en los archivos de monitoreo (los logs)
aparezca el nombre del cliente que se esta conectado o simplemente el numero de IP. Si el campo
indica on, al servidor web le tomara unos milisegundos más responder a cada requerimiento (ya que
va a buscar el nombre del cliente cada vez)
•User <nombre_de_usuario>
Este campo indica a nombre de que usuario se correrá el servidor de web. Indistintamente de que
usuario ejecute el proceso, este utilizara como dueño el usuario que se le indique en este campo.
Generalmente se utilizan usuario como nobody o httpd, no se recomienda utilizar root.
•Group <nombre_de_grupo>
Ídem anterior pero con relación al grupo al que pertenecerá el proceso.
•ServerRoot <directorio>
En este campo se indica donde esta el directorio "conf" donde se encuentra toda la configuración
del servidor apache. Dentro de este directorio se grabaran los archivos de monitoreo (bajo el
subdirectorio "logs"), entre otras cosas.
•ErrorLog <nombre_de_archivo>
En este campo se especifica que nombre llevara el archivo de monitoreo de errores del web server.
Este archivo estar'a ubicado debajo del directorio que indique ServerRoot
•LoadModule <alias> <ubicación del modulo>
Apache es una aplicación modular, que permite que se agregue funcionalidad al servidor web a
través de bibliotecas dinámicas. De esta manera, solo alcanza con grabar el modulo en el disco,
hacer las configuraciones necesarias y reiniciar el servidor web para que la nueva funcionalidad
comience a tener efecto. Algunos ejemplos de módulos pueden ser soporte de SSL, SSI, PHP3, Perl
embebido, etcétera.
El alias es utilizado para hacer referencia al modulo desde otros campos.
•AddModule <modulo>.c
Este campo le indicará al apache que debe agregar el modulo referenciado a su memoria.
•ServerName <nombre_del_servidor>
Acá se ingresará el nombre que llevara el servidor web, en este campo se debe poner un nombre
valido para este servidor (un nombre previamente definido en la configuración de la red del equipo)
•StartServers <cantidad_de_servidores>
Este valor indica la cantidad de instancias del mismo proceso se deben levantar. En sitios que
reciben mucho tráfico es recomendable levantar una cantidad interesante de instancias, de esta
forma cuando existan varios navegadores realizando requerimientos el servidor va a poder
atenderlos sin mayores demoras. En el caso de que no haya una instancia disponible, el web server
crea una instancia nueva, el problema es que este proceso tarda un tiempo y genera una perdida de
performance desde el punto de vista del navegador.
El número por defecto (10) es un valor razonable para sitios de trafico medio.
•MaxClients <cantidad_máxima_de_clientes>
Este campo indica la cantidad máxima de navegadores que se atenderán al mismo tiempo. Si este
valor es alcanzado, los navegadores no recibirán datos del servidor web.

srm.conf
En este archivo se configura la forma en que el servidor web responde ante los requerimientos de
los navegadores de internet. Cuales son las páginas reservada para los usuarios del equipo, que tipo
de dato contienen los archivos dependiendo su extensión, etcétera.
Algunos campos de interes:
•DocumentRoot <directorio>
En este campo se indica el directorio en el cual estarán todos los archivos relacionados con este sitio
web en particular. Acá se ubican las páginas HTML, CGIs y todo lo que involucre a este servidor
web. El directorio default es /home/httpd/html
•UserDir <nombre de directorio>
Los usuarios normales del equipo pueden realizar su propia página personal, cuando desde el
navegador se utilice el http:URL/? nombre_de_usuario, el servidor web irá al directorio de trabajo
del usuario (home directory) y buscará el subdirectorio nombre_de_directorio y le enviara al
navegador las páginas que se encuentren en el mismo. El directorio default es public_html
•DirectoryIndex <archivo indice> <archivo indice>
El servidor web utiliza un archivo (referenciado en este campo) como archivo por defecto de cada
directorio. Cuando un navegador pida las páginas del directorio
http://www.sudominio.com/informacion/, el servidor web buscará algún archivo que tenga el
nombre de archivo_indice, de no encontrarlo desplegará en el navegador, todos los archivos que se
encuentran en el directorio.
•Alias <nombre> <directorio_real>
Todos los directorios que se accedan a través de un navegador son relativos al directorio que indica
DocumentRoot. Si en un navegador se ingresa http://www.linuxcollege.com.ar/capacitacion, el
directorio que el servidor web tratará de acceder será DocumentRoot/capacitacion. De existir algún
directorio fuera de esta rama del árbol de directorios, se debe utilizar Alias para que el navegador
acceda al contenido del mismo. Por ejemplo, si el directorio "capacitacion" estuviese en otro
directorio se debería configurar el apache mediante un alias que diga:
Alias capacitacion /home/pepe/capacitacion
•ScriptAlias <nombre_falso> <directorio_real>
Este campo tiene la misma funcionalidad que el campo Alias, excepto que se utiliza para los scripts
que ejecute el servidor web.
Ejemplo: ScriptAlias /cgi-bin/ /home/httpd/cgi-bin
access.conf
En este archivo se configura todo lo que tenga que ver con accesos a las páginas del servidor web.
Que tipo de restricciones tendrá cada directorio o directorios de todo el servidor web.
Algunos campos de interés:
•<Directory <directorio>>
Este campo le indica al servidor web las diferentes acciones que se pueden realizar sobre los
archivos que están dentro del directorio referenciado.
Ejemplo:
<Directory /home/httpd/cgi-bin>
AllowOverride None
Options ExecCGI
</Directory>
Con esta directiva estamos especificando que esta permitida la ejecución de programas tipo CGI
("Options ExecCGI") y que no se leerán las directivas que existan en el archivo /home/httpd/cgi-
bin/.htaccess ("AllowOverride None"). Este último archivo se utiliza para especificar ciertos tipos
de acceso sobre el directorio (con usuario y clave). Para más información sobre este campo dirigirse
a ladocumentación de apache en http://www.apache.org/docs/mod/core.html
Es importante notar que los directorios que se referencian tienen PATH absoluto y no son los
directorios que se utilizan desde el navegador. En el ejemplo anterior el directorio referenciado es
/home/httpd/cgi-bin, este directorio posee generalmente un Alias llamado /cgi-bin/, de esta forma en
el navegador el usuario pondrá http://www.linuxcollege.com.ar/cgi-bin/, pero el verdadero
directorio es /home/httpd/cgi-bin.
Servidores Virtuales
Apache permite tener varios servidores web montados sobre un único equipo con un único apache
corriendo. Estos servidores web reciben el nombre de servidores virtuales. Básicamente es para
realizar el trabajo de "hosting" (un único equipo con varios nombres distintos). Esta característica es
muy utilizada cuando se tiene varios sitios web que no reciben mucho trafico.
Existen varias formas de crear servidores virtuales:
1.Servidores virtuales basados en números de IP
2.Servidores virtuales basados en nombres (URLs)
3.Configuración dinámica de servidores virtuales
Servidores virtuales basados en números de IP
Este tipo de configuración requiere tener un número de IP distinto para cada servidor virtual.
Para realizar esta configuración se utiliza la directiva <VirtualHost <URL>> y dentro del contexto
de la directiva se puede especificar diferentes opciones que se aplicarán a este servidor virtual
únicamente. Los ejemplos siempre ayudan, así que acá presentamos uno:
Ejemplo
<VirtualHost soporte.linuxcollege.com.ar>
ServerAdmin webmaster@linuxcollege.com.ar
ServerName soporte.linuxcollege.com.ar
DocumentRoot /home/httpd/html/soporte
ErrorLog logs/soporte_error.log
CustomLog logs/soporte_combined.log combined
</VirtualHost>
En el ejemplo se puede ver que existe un sitio web virtual llamado soporte.linuxcollege.com.ar, este
nombre debe tener asociado una dirección de IP exclusiva, de esta forma, cuando un navegador
hace un requerimiento sobre este URL, apache sabrá a quien se esta referenciando y le enviará al
navegador las páginas que estén en el directorio /home/httpd/html/soporte. Las opciones que se
encuentran entre las directivas <VirtualHost> y </VirtualHost> solo se aplicarán a este servidor
virtual.
Servidores virtuales basados en nombres (URLs)
En los casos que un equipo no tenga varias direcciones de IP distintas, apache brinda la posibilidad
de tener una única dirección de IP y asociarle varios nombres para utilizarlo como servidores
virtuales.
El único requerimiento previo a este tipo de configuración es que se le indique al sistema operativo,
los diferentes nombres que tiene el equipo.
Para realizar esta configuración se hará uso de dos directivas. La directiva NameVirtualHost y
<VirtualHost>.
NameVirtualHost <número de IP>
La dirección de IP que se especifica en esta directiva es la dirección que tiene asociada todos los
nombres de los servidores virtuales.
Ejemplo
NameVirtualHost 216.32.74.55
<VirtualHost 216.32.74.55>
ServerAdmin webmaster@linuxcollege.com.ar
ServerName soporte.linuxcollege.com.ar
DocumentRoot /home/httpd/html/soporte
ErrorLog logs/soporte_error.log
CustomLog logs/soporte_combined.log combined
</VirtualHost>
<VirtualHost 216.32.74.55>
ServerAdmin webmaster@linuxcollege.com.ar
ServerName capacitacion.linuxcollege.com.ar
DocumentRoot /home/httpd/html/capacitacion
ErrorLog logs/capacitacion_error.log
CustomLog logs/capacitacion_combined.log combined
</VirtualHost>
En el ejemplo se puede ver como coexisten dos URL diferentes para una misma dirección de IP. El
servidor apache verificará que nombre utilizo el usuario en su navegador (si fue
http://soporte.linuxcollege.com.ar o http://capacitacion.linuxcollege.com.ar). Dependiendo de este
URL, el servidor apache le enviará al navegador las páginas que están en /home/httpd/html/soporte
o /home/httpd/html/capacitacion.
Configuración dinámica de servidores virtuales
Existe una tercer forma de armar servidores virtuales. Esta forma permite armar rápidamente un
nuevo servidor virtual, sin tener que reiniciar el servidor apache con cada nuevo servidor virtual que
se agregue. Esta configuración es más complicada inicialmente, pero una vez hecha solo alcanzará
con crear un directorio en el disco para que apache automáticamente dé de alta un servidor virtual
nuevo (sin reinicializar el servicio).
Para realizar esta configuración hay que agregar el módulo de vhost_alias en el httpd.conf. Esto se
agrega utilizando las siguientes dos líneas:
LoadModule vhost_alias_module modules/mod_vhost_alias.so
AddModule mod_vhost_alias.c
Luego se utilizan las directivas de servidores virtuales dinámicos:
VirtualDocumentRoot /home/httpd/www/%0/html
VirtualScriptAlias /home/httpd/www/%0/cgi-bin
Es muy importante, para que funcione correctamente esta configuración que se deshabilite la opción
de UseCanonicalName, por lo tanto se debe agregar también:
UseCanonicalName off
Con esta configuración se le esta indicando al servidor apache que reemplace la variable especial
"%0" con el nombre del servidor que se quiere alcanzar. Si el usuario ingreso
http://dinamicos.linuxcollege.com.ar debe existir un directorio
/home/httpd/www/dinamicos.linuxcollege.com.ar/html (donde se alojaran todas las páginas del
servidor virtual) y /home/httpd/www/dinamicos.linuxcollege.com.ar/cgi-bin (donde estarán todos
los scripts que le dan funcionalidad al sitio web).
Una vez realizada esta configuración solo basta con crear un directorio con el nombre del sitio web
en /home/httpd/www y los subdirectorios "html" y "cgi-bin" (este último solamente se necesita si el
sitio web utiliza scripts).
Este tipo de configuración presenta una problemática y es que no se puede grabar información de
monitoreo en archivo separados. La información de todos estos servidores virtuales siempre se va a
grabar en un solo archivo. De todas formas se puede cambiar el formato con el que se graban las
líneas dentro del archivo de monitoreo, para poder filtrar luego la información y así crear diferentes
archivos.
Para realizar esto se debe cambiar la línea que indica el formato del archivo:
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog logs/access_log vcommon
La variable especial "%V" se reemplazara por el URL que haya indicado el navegador (por
ejemplo: dinamicos.linuxcollege.com.ar)
Sendmail - El MTA (Message Transfer Agent) de Linux más utilizado
Uno de los servicios más utilizados en redes es la transferencia de correo electrónico entre usuarios.
Linux presenta varios programas que administran este servicio. Estos programas son llamados
"Agentes de Transferencia de Mensjes" (MTA). Se encargan de atender a los clientes de mai,
denominados MUA (Mail User Agent), comol Pine, elm, netscape, Eudora, Outlook, y encargarse
en llevar el mensaje enviado a destino.
Como el MTA más utilizado en Linux es sendmail (aunque existen muchos otros), en este curso
veremos algunas características de sendmail y como configurarlas.
Configuración
Existe un archivo donde se arma toda la configuración de sendmail, este archivo es /etc/sendmail.cf.
El archivo es bastante complejo y existen libros enteros que explican como entenderlo y
modificarlo. Acá se verán las características mas importante y utilizadas.
Para solucionar el problema de entender este archivo, existen muchas interfaces que permiten
modificar la configuración de sendmail, cada distribucion presenta el suyo, pero el que mejor
administra el sistema de correo es webmin (http://www.webmin.com/webmin)
Opciones del Sendmail

Opción Descripción
DS <host> Enviar correo saliente a través de esta maquina: A menos que no se especifique un
servidor, cualquier correo saliente no destinado a los usuarios de tu sistema será enviando a la
máquina especificada. Es útil si tu sistema está tras un firewall y por ello no puede entregar correo
de internet directamente.
DR <host> Remitir nombres de usuario no calificados a la máquina: Acá se escribe el host donde va
a ir a parar los mensajes de usuarios que no están en este equipo. En caso de no tener host, los
correos se remiten localmente.

O QueueDirectory= <directorio> Directorio de cola de correo: Esta opción te permite configurar


qué directorio utiliza sendmail para almacenar mensajes de correo en cola. No lo cambies a menos
que sepas lo que estás haciendo.
O PostMasterCopy= <dirección de correo> Enviar mensajes de error a: Esta opción determina a qué
dirección sendmail envía notificaciones de fallos en la entrega (además de a la persona que envió en
fallido correo). Por defecto es a la dirección local Postmaster, que es normalmente alias hacia root.
O Timeout.queuereturn= <cant. de tiempo> Tiempo antes de darse por vencido: Si la entrega de un
mensaje falla por alguna razón temporal (como que el servidor destinatario esté caído), sendmail
mantendrá el correo en su cola por la cantidad de tiempo especificado por esta opción, reintentando
la entrega ocasionalmente. Una vez que el tiempo límite se alcance, un mensaje a poner en la calle
será enviado de vuelva al remitente y el mensaje será descartado. Este tiempo debe de ser
suministrado como un número seguido de un carácter para las unidades, como 30m o 1d. Son
unidades válidas s = segundos, m = minutos, h = horas, d = días y w = semanas.
O Timeout.queuewarn= <cant. de tiempo> Tiempo antes de enviar un aviso: Si la entrega de un
mensaje falla por alguna razón temporal (como que el servidor destinatario esté caído), sendmail
mantendrá el correo en su cola por la cantidad de tiempo especificado por esta opción, reintentando
la entrega ocasionalmente. Una vez que el tiempo límite se alcance, un mensaje será enviado de
vuelva al remitente informándole del retraso en la entrega del mensaje. Este tiempo debe de ser
suministrado como un número seguido de un carácter para las unidades, como 30m o 1d. Son
unidades válidas s = segundos, m = minutos, h = horas, d = días y w = semanas.

Aliases archivo /etc/aliases


Los aliases son utilizados para tener varias cuentas de correo del mismo dominio que apunten a una
única cuenta. Por ejemplo, tener una cuenta de mail info@linuxcollege.com.ar que en realidad
apunte a pepe@linuxcollege.com.ar y también a juan@linuxcollege.com.ar. De esta forma cuando
un usuario envía un correo a info@linuxcollege.com.ar, este correo es redireccionado a las cuentas
pepe y juan.
En el archivo /etc/sendmail.cf se debe especificar cual es el archivo que contiene los aliases del
equipo. Este archivo puede ser mas de uno.
IMPORTANTE: Cuando se modifique el archivo de aliases, se debe ejecutar el comando
"newaliases" para que los cambios estén activos.

Opción Descripción
O AliasFile=<archivo> Indica el archivo que contiene los aliases del equipo. El archivo configurado
por defecto es /etc/aliases

Formato del archivo de aliases


Este archivo se compone de dos columnas separadas por el símbolo ":" (dos puntos).
En este archivo es indistinto escribir los aliases con mayúsculas o minúsculas, ya que el protocolo
SMTP no hace distinción entre ellas.
Aliases simples:
En la primer columna se escribe el nombre del alias (por ejemplo: "info"), en la segunda columna se
ingresan los verdaderos destinatarios (u otro alias). Los destinatarios van separados por una coma.
Ejemplo:
info: pepe, juan
Postmaster: root, info

Aliases dinámicos:
Se llaman aliases dinámicos cuando involucran un archivo (que contiene direcciones de correo).
Ejemplo:
ventas: :include:/etc/mail/ventas.lst
soporte: :include:/etc/mail/soporte.lst
Dominios Locales archivo ( /etc/sendmail.cw )
Generalmente los equipos que están publicos en internet soportan recibir correo de diferentes
dominios. Por ejemplo, además de recibir correo de todo el dominio linuxcollege.com.ar, también
que se reciba correo de los dominios ciua.com.ar y capacitacionweb.com.ar. Para realizar esto se le
debe especificar a sendmail cuales son todos los dominios que se aceptan. Esta configuración se
realiza a través de la opción "Fw". El valor por defecto de esta opción es /etc/sendmail.cw.
IMPORTANTE: Para que esto funcione es necesario que el equipo este configurado, a nivel
direcciones de IP, para que acepte este dominio. Se deben agregar las configuraciones necesarias en
el DNS o archivo /etc/hosts (para uso local).

Opción Descripción
Fw<archivo con dominios> Especifica el archivo que contiene todos los dominios que acepta este
MTA.

Formato del archivo de dominios


En este archivo se escriben todos los dominios. Un dominio por renglón.
Ejemplo:
linuxcollege.com.ar
ciua.com.ar
capacitacionweb.com.ar
Usuarios Virtuales
Cuando un equipo acepta varios dominios todos los usuarios que estén configurados en este equipo
tendrán como dirección de correo su nombre arroba los dominios existentes.
Si seguimos el ejemplo anterior, el usuario pepe tendrá tres direcciones de correo:
•pepe@linuxcollege.com.ar
•pepe@ciua.com.ar
•pepe@capacitacionweb.com.ar
Si este equipo acepta dominios de correo de diferentes empresas, por ejemplo
@linuxcollege.com.ar y @ciua.com.ar, es necesario poder tener direcciones como
info@linuxcollege.com.ar e info@ciua.com.ar, pero que apunten a diferentes usuarios.
Esto no se puede realizar con el uso de aliases, ya que sólo se permiten aliases únicos, solamente
puede existir un único alias llamado "info".
Para realizar este "filtrado" se utilizan usuarios virtuales. Lo que se logra con las direcciones
virtuales es la posibilidad de enviar correo a info@linuxcollege.com.ar y también a
info@ciua.com.ar; y que estén direccionados a los usuarios correspondientes. A modo de ejemplo:
info@linuxcollege.com.ar (apunta a) pepe@linuxcollege.com.ar y juan@linuxcollege.com.ar
info@ciua.com.ar (apunta a) andreagarcia@ciua.com.ar
Configuración
La siguiente opción debe estar presente en el archivo /etc/sendmail.cf. El valor que recibe por
defecto es /etc/mail/virtusertable.
Opción Descripción
Kvirtuser hash -o <archivo> Especifica el archivo que contiene los usuarios virtuales

Formato de la tabla de usuarios virtuales


dirección de correo usuario real

Ejemplo:

info@linuxcollege.com.ar pepe_linuxcollege, juan_linuxcollege


info@ciua.com.ar andreagarcia_ciua

Cuando se utilizan usuarios virtuales, se configuran usuarios con nombres que indiquen a que
dominio pertenecen. En este ejemplo los usuarios que se han dado de alta son:
pepe_linuxcollege
juan_linuxcollege
andreagarcia_ciua
Por lo tanto cuando el usuario pepe desee bajar sus correo no utilizará como usuario de POP a
"pepe", sino a "pepe_linuxcollege"

Activación de las modificaciones


Una vez realizados todos los cambios en el archivo que contiene la tabla de usuarios virtuales, es
necesario ejecutar el comando "make" en el directorio que contiene dicho archivo. En algunos casos
también es necesario reiniciar el servicio de sendmail.
Service sendmail restart

Documentación de referencia
Existen varios sitios que contienen información sobre apache, de todas formas, toda la información
sobre apache surge del sitio del proyecto http://www.apache.org.
Para información sobre sendmail, el mejor sitio es http://www.sendmail.org.

Sendmail - Configuración de la red local


Cuando se tiene una pequeña red, con distintas cuentas de correo electrónico y distintos usuarios, el
siguiente procedimiento puede resultar de mucha utilidad.
Este manual considera que:
Usted se conecta a Internet por medio de un modem con un proveedor de servicios.
•Que no tiene un IP permanente, sino uno dinámico, o que no se trata de un enlace dedicado, como
DSL, T1 o T3. Es decir, se conecta a Internet por medio de un ISP.
•Que usted posee al menos una cuenta de correo electrónico POP3 con al menos un proveedor de
servicios.

Requerimientos y lista de materiales.


•Si se trata de una PC solitaria, bastará con definir bien los parámetros en /etc/sysconfig/network,
/etc/hosts y /etc/resolv.conf. Si se trata de una intranet en el hogar o pequeña oficina, Linux® debe
de estar bien configurado para redes clase A con IP Masquerading y servidor de nombres -DNS-.
•Accesos a Internet utilizando un buen modem por hardware (NO softmodems).
•Un proveedor de servicio de correo electrónico tipo POP3 o IMAP y una o más cuentas.
•Tener instalados los paquetes sendmail, sendmail-cf, m4, make, xinet e imap que vienen incluidos
en el CD de instalación.
Tómese en consideración que, de ser posible, se debe utilizar la versión estable más reciente de todo
el software que vaya a instalar al realizar los procedimientos descritos en este manual, a fin de
contar con los parches de seguridad necesarios. Ninguna versión de sendmail anterior a la 8.11.x se
considera como apropiada debido a fallas de seguridad de gran importancia. Por favor visite el sito
web de su distribución predilecta para estar al tanto de cualquier aviso de actualizaciones de
seguridad.
Procedimientos.
Verificando los parámetros de red necesarios.
Debe de definirse el nombre de la máquina que funcionará como servidor de correo. Normalmente
utilizaremos el esquema nombre_maquina.nombre_dominio. Un ejemplo del nombre de la máquina
servidor sería linux.linuxparatodos.com o linux.miredlocal.org.mx. Así que asegúrese de que esto se
encuentra perfectamente definido en /etc/sysconfig/network y /etc/hosts:
Para /etc/sysconfig/network, es decir, el nombre que asignamos a la máquina, correspondería lo
siguiente:

NETWORKING=yes
HOSTNAME=server80.ciua.com.ar
GATEWAY=10.10.3.80

Para /etc/hosts, es decir, la información de los hosts y las direcciones IP, correspondería lo
siguiente:

127.0.0.1 localhost.localdomain localhost


10.10.3.80 SERVER80.ciua.com.ar SERVER80

# Opcionalmente aquí puede agregar también


# los nombres y direcciones IP de la máquinas de
# la red local.

Además de configurar correctamente un DNS, si se tuviese red local, que defina bien los DNS o
servidores de nombres de dominios correspondientes. Esto debe hacerlo en el archivo
/etc/resolv.conf, de un modo similar al siguiente:

search ciua.com.ar
#
# El IP de la máquina que tiene el DNS de la red local.
Nameserver 10.10.3.80
#
# Los DNS del proveedor de servicios.
Nameserver 200.0.194.68
nameserver 200.1.0.1

Preparativos.
Es imperativo crear las cuentas locales para cada usuario que recuperará correo del servidor. Si
además se tiene u proveedor de accesos a Internet y se utilizan varias cuentas de correo de este, y se
desea enviar correo desde dichas cuentas a través de Sendmail, para efectos prácticos y de
organización, se deben utilizar también los mismos logins.

Ejemplo.
Se tiene como servidor de correo saliente -SMTP- a mail.proveedor.net, y con este tenemos cuatro
cuentas de correo electrónico: jperez@proveedor.net, plopez@proveedor.net,
psanchez@proveedor.net y pgonzalez@proveedor.net que son utilizadas por 4 distintos usuarios en
cuatro distintas máquinas dentro de nuestra intranet. Deberemos de crear al menos estas cuentas en
el servidor Linux®: jperez, plopez, psanchez y pgonzalez.

Si solo tenemos una cuenta de correo electrónico con mail.proveedor.net, solo necesitaremos crear
una cuenta con este mismo login. El procedimiento descrito en este manual hará que todo el correo
electrónico, sin importar que nombre de dominio tengamos, salga con una máscara y llegue a los
destinatarios como @proveedor.net.
Considere que en adelante podrá enviar un mensaje de correo electrónico incluso desde una ventana
terminal o consola y este llegará al destinatario presentando como remitente
su_login@proveedor.net, así que es importante defina bien los nombre de las cuentas en Linux. Si
usted envía un mensaje desde una cuenta de correo electrónico que en realidad no existe en
mail.proveedor.neto que le pertenece a alguien fuera de su organización u hogar, técnicamente
estaría enviando Spam al no proporcionar una cuenta de correo electrónico verdadera, o bien nunca
le llegarían las posibles contestaciones.
Configurando Sendmail
Es importante tener instalados los paquetes sendmail y sendmail-cf, ya que utilizaremos el servidor
de correo Sendmail para el envío de nuestros mensajes y filtrado de correo masivo no solicitado
-Spam-, y el paquete imap, mismo que nos permitirá utilizar el servicio de IMAP y POP3. Para
asegurarse de esto, se puede utilizar la siguiente línea de comando:

rpm -q sendmail sendmail-cf imap

Esto debe devolvernos las versiones de sendmail, sendmail-cf e imap que se tienen instaladas. Si no
fuese así, debemos cambiar a root, si aún no lo hemos hecho, y proceder a instalar estos paquetes.
Introduzca el CD-ROM de su distribución y siga el siguiente procedimiento:

mount /mnt/cdrom

cd /mnt/cdrom/RedHat/RPMS

rpm -Uvh sendmail-* imap-*

cd $home

eject /mnt/cdrom

Debe instalar sendmail-cf o no le será posible compilar los archivos necesarios para configurar
Sendmail. El paquete imap, el cual contiene el daemon para los protocolo POP3, es el que nos
permitirá recuperar el correo desde el servidor en el resto de las máquinas que integren la red local
con cualquier cliente de correo electrónico.
Antes de continuar, debemos editar el fichero /etc/mail/local-hostnames, en el cual deberemos listar
todos y cada uno de los aliases que tenga el servidor que estamos configurando, así como los
posibles dominios.

# - include all aliases for your machine here.


Ciua.com.ar
SERVER80.ciua.com.ar
mail.ciua.com.ar

Procederemos entonces a modificar el archivo /etc/mail/sendmail.mc, con previo respaldo del


original, a fin de preparar la configuración del servidor de correo del siguiente modo, donde
smtp.proveedor.net corresponde al servidor de correo saliente del proveedor de servicio que
utilicemos y proveedor.net corresponde a la máscara que utilizaremos para todo el correo que
emitamos desde nuestro servidor:

divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
define(`confDEF_USER_ID',``8:12'')dnl
define(`SMART_HOST',`smtp.proveedor.net')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')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
define(`STATUS_FILE', `/var/log/sendmail.st')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 TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')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
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail)dnl
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl Si queremos establcer un mejor nivel de seguridad
dnl es conveniente descomentar la siguiente línea de
dnl modo tal que solo estará permitido enviar correo
dnl desde la interfaz de la tarjeta de red
dnl DAEMON_OPTIONS(`Port=smtp,Addr=192.168.1.1, Name=MTA')
FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
MASQUERADE_AS(proveedor.net)dnl

Luego se procesa con el siguiente comando para generar /etc/sendmail.cf:

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

Abrimos ahora el archivo /etc/mail/access y agregamos algunas líneas para definir quienes podrán
hacer uso de nuestro servidor de correo para poder enviar mensajes:

# por defecto solo se permite enviar correo


# a localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
ciua.com.ar RELAY
SERVER80.ciua.com.ar RELAY
#
# Si aplica, también agregue los nombres de las
# máquinas que integran su red local.
EQUIPO1.ciua.com.ar RELAY
EQUIPO2.ciua.com.ar RELAY
EQUIPO3.ciua.com.ar RELAY
EQUIPO4.ciua.com.ar RELAY
EQUIPO5.ciua.com.ar RELAY
EQUIPO6.ciua.com.ar RELAY
# etc.
#
# Y también podemos agregar las direcciones de correo
# electrónico de aquellos a quienes consideremos
# "indeseables", o que queramos bloquear.
Spam@algun_Spamer.com REJECT
info@otro_Spammer.com REJECT
# etc.

En este archivo también puede agregar las direcciones de correo electrónico que desee bloquear,
como son las de quienes envían correo masivo no solicitado -Spam-. Si le desea ahorrarse algo de
tiempo ingresando direcciones y servidores a bloquear, descargue el siguiente archivo que ya
incluye una buena colección de direcciones de correo electrónico y conocidos servidores que
generan Spam:
Al concluir, debemos también compilar este archivo para generar otro en formato de base de datos a
fin de ser utilizado por Sendmail:

cd /etc/mail
make

O bien puede ejecutar lo siguiente:

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

Será de utilidad designar un alias a la cuenta de correo de root a fin de recibir los mensajes
generados por el sistema en una cuenta común de usuario. Abra el archivo /etc/aliases, en donde al
final encontrará la siguientes líneas:

# Person who should get root's mail


# root: sam

Esto corresponde a la cuenta de correo local hacia donde se redireccciona el correo de root.
Descomente la última línea y asigne el nombre de la cuenta de usuario que utiliza normalmente:

# Person who should get root's mail


root: jperez
A fin de que este nuevo alias surta efecto y pueda ser utilizado por Sendmail debe utilizar el
comando newaliases:

/sbin/newaliases

Terminados los detalles de la configuración, reinicie sendmail del siguiente modo y tendrá listo un
servidor de correo que podrá utilizar para enviar mensajes para toda su red local utilizando el
servidor SMTP de su proveedor de servicios:

/etc/rc.d/init.d/sendmail restart

Generalmente Sendmail está incluido entre los servicios que de forma predeterminada se inician
con el sistema. Si por alguna razón Sendmail no estuviese habilitado, agregue del siguiente modo:

/sbin/chkconfig --add sendmail

Habilitando los servicios POP3 e IMAP


Si usted utiliza Red Hat Linux 7.x o versiones posteriores o equivalentes, debe saber que inetd ha
sido sustituido por xinetd, y utiliza métodos de configuración muy distintos.
Puede habilitar los servicios ipop3 (POP3 tradicional, autenticación en texto plano), pop3s (POP3
seguro, autenticación con criptografía), imap (IMAP tradicional, autenticación en texto plano) e
imaps (IMAP seguro, autenticación con criptografía). Utilice aquellos que consideré como más
apropiados para su red local de acuerdo a las capacidades de los clientes de correo electrónico
utilizados. Tome en cuenta que la autenticación por medio de texto plano es definitivamente un
método inseguro, y siempre serán mejor usar los servicios que permitan establecer conexiones
seguras.
Puede habilitar los servicios de manera automática e inmediata ejecutando los siguientes comandos
(solo habilite aquellos que realmente necesite):

/sbin/chkconfig ipop3 on
/sbin/chkconfig pop3s on
/sbin/chkconfig imap on
/sbin/chkconfig imaps on

También puede habilitarlos manualmente con un editor de texto, lo cual es sugerido a fin de
habilitar opciones adicionales, como direcciones IP específicas a las cuales se les estaría permitido
cierto servicio. Acceda a al directorio /etc/xinet.d/ y edite los fichero ipop3, pop3s, imap e imaps,
según lo requiera. Estos requerirán edite una sola línea para habilitar el servicio:

service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
disable = no
only_from = 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 localhost
}

Lo mismo aplica para el protocolo IMAP e IMAPS.


Hecho lo anterior, es necesario reiniciar el daemon xinetd con la siguiente línea de comando:

/etc/rc.d/init.d/xinet restart

Configurando Fetchmail.
Es importante tener instalado el paquete Fetchmail, ya que este será el que se encargue de recuperar
el correo de cuantas cuentas tengamos. Para asegurarse de esto, se puede utilizar la siguiente línea
de comando:

rpm -q fetchmail

Esto debe devolvernos la versión de fetchmail que se tiene instalada. Si no fuese así, debemos
cambiar a root proceder a instalarlo. Introduzca el CDROM de su distribución y siga el siguiente
procedimiento:

mount /mnt/cdrom

cd /mnt/cdrom/RedHat/RPMS

rpm -Uvh fetchmail-*

cd $home

eject /mnt/cdrom

Recuerde que las versiones más recientes de Fetchmail, 5.3.x en adelante, requieren tener instalados
algunos de los paquetes de kerberos5, así que de ser necesario, instálelos del mismo modo. Después
de Instalar fetchmail, se debe crear manualmente un archivo que se llame /root/.fetchamailrc y con
algo como lo siguiente:

#/root/.fetchmailrc
set logfile "/var/log/fetchmail.log"
set postmaster "root"
set daemon 0

# Recuperamos el correo de jperez@proveedor.net y lo


# depositamos en el buzón de correo local de jperez.
#
poll mail.proveedor.net with protocol POP3, with options
user "jperez" there with password "contraseña" is jperez here
with options rewrite mimedecode pass8bits

# Si tenemos cuenta en Yahoo!, podemos recuperar esta y


# también depositarla en buzón de correo local de jperez
#
poll pop.mail.yahoo.com with protocol POP3, with options
user "login_Yahoo" there with password "contraseña" is jperez here
with options rewrite mimedecode pass8bits

# Hacemos lo mismo con el usuario jlopez, y todos aquellos usuarios que


# queramos, a fin de recuperar su correo desde Internet y depositarlo
# en su correspondiente carpeta de correo local.
#
poll mail.otroproveedor.net with protocol POP3, with options
user "login_remoto" there with password "contraseña" is jlopez here
with options rewrite mimedecode pass8bits

# Opcionalmente limitamos la recepción de


# mensajes grandes a un máximo 1.5 MB, por
# aquello de los imprudentes "amigos" que suelen
# enviarnos mensajes con adjuntos de 2 MB.
# Modifíquese el valor a su propia conveniencia.
#
limit 1500000

Ya que este archivo incluirá contraseñas importantes, es imperativo que las proteja cambiando los
permisos del archivo /root/.fetchamailrc de modo que solo root pueda utilizarlo:

chmod 700 /root/.fetchamailrc

Luego, en ip-up.local deben agregarse las líneas correspondientes, esto para que se inicie fetchmail
inmediatamente después de levantarse el enlace ppp del siguiente modo:

#!/bin/bash
# ip-up.local

# Primero nos aseguramos de que no exista


# un proceso de Fetchmail en el trasfondo.
fetchmail -q
#
# Recupera mensajes inmediatamente después de
# conectarnos a Internet cada 960 segundos.
# Elija entonces el intervalo de tiempo que mejor
# le convenga, recordando que algunos proveedores
# de servicios suelen desconectarnos de Internet
# automáticamente si hay acciones repetitivas cada
# determinado tiempo, o bien si hay inactividad después
# de cierto tiempo. Por experiencia personal, le sugiero
# revisar correo cada 15-16 minutos, o bien cada 30
# minutos si su proveedor de servicio requiere
# autenticación previa cada 30 minutos para poder
# enviar mensajes.
# Considere que a veces puede tomar más de 15 minutos
# descargar todo el correo de sus cuentas. fetchmail se
# interrumpiría y volvería a empezar, por lo que tendríamos
# mensajes repetidos infinitamente y jamás terminaríamos
# de descargarlos.
#
fetchmail -d 960
#
# Si acaso el servidor SMTP no requiere una autenticación
# previa vía POP3, esto enviará nuestros mensajes
# pendientes.
/usr/sbin/sendmail -q &
##############################
# Si usted tiene una sola PC #
# conectada a Internet, #
# como sería en el hogar, #
# omita todo lo que sigue. #
##############################

#
#
#

# cargamos los módulos necesarios:


/sbin/modprobe ip_conntrack
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_REDIRECT
/sbin/modprobe ipt_TOS
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_MIRROR
/sbin/modprobe ipt_LOG
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat

# creamos cadenas que bloqueen nuevas conexiones excepto si


# provienen de la red local
#
/sbin/iptables -N block
/sbin/iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
/sbin/iptables -A block -j DROP

/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT # ftp


/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ftp
/sbin/iptables -A INPUT -p udp --dport 22 -j ACCEPT # ftp
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT # http
/sbin/iptables -A INPUT -p tcp --dport 6699 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 6347 -j ACCEPT # Gnutella
/sbin/iptables -A INPUT -p ucp --dport 5000 -j ACCEPT # ICQ
/sbin/iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 5000 -j ACCEPT
/sbin/iptables -A INPUT -j block
/sbin/iptables -A FORWARD -j ACCEPT
echo "Starting Masquerading"
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# Redireccionamos todas las peticiones hacia puerto 80 del


# exterior para pasar a través de el puerto donde escucha
# nuestro Proxy
#
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 80
Si /etc/ppp/ip-up.local no existiese, debe de crearse este utilizando cualquier editor de texto y
hacersele ejecutable aplicandole el comando chmod +x:

chmod +x /etc/ppp/ip-up.local

Y en /etc/ppp/ip-down.local debe de agregarse lo siguiente:

#!/bin/bash
# ip-down.local

# Nos aseguramos de que se termine Fetchmail al desconectarnos


# de Internet.
fetchmail -q

# Quitamos los módulos de IP Masquerade para liberar recursos.


/sbin/rmmod ip_conntrack
/sbin/rmmod ipt_REJECT
/sbin/rmmod ipt_REDIRECT
/sbin/rmmod ipt_TOS
/sbin/rmmod ipt_MASQUERADE
/sbin/rmmod ipt_MIRROR
/sbin/rmmod ipt_LOG
/sbin/rmmod iptable_mangle
/sbin/rmmod iptable_nat

# Y borramos las reglas que habíamos establecido


/sbin/iptables -X
/sbin/iptables -F
/sbin/iptables -Z

Si /etc/ppp/ip-down.local tampoco existiese, debe de crearse este con cualquier editor de texto y
hacersele ejecutable aplicandole el comando chmod +x:

chmod +x /etc/ppp/ip-down.local

Configuración de los clientes de correo.


Considerando que tiene bien configada su red local y que ha seguido este manual al pie de la letra,
sea la PC que sea en su red local, debe configurar linux.miredloacal.org.mx como servidor de
correo saliente o SMTP y servidor de correo entrante o POP3 en el cliente de coreo que utilice. El
correo que enviemos sin estar conectados a Internet se guardará en el spool de Sendmail y será
enviado una vez que se levante el enalce PPP. Los mensajes de correo de nuestras cuentas serán
recuperados desde Internet por Fetchamail y concentrados en los buzones de correo local y solo
bastará recuperarlos de el servidor local con cualquier cliente de correo.

Prerencias de Netscape para los servidores de correo.


Si acaso le resulta más cómodo, deje que Fetchmail haga su trabajo y utilice directamente el
servidor SMTP que elija para enviar sus mensajes. Para tal caso, es aún más importante recordar
que debe definir en las máquinas clientes, o estaciones de trabajo, el IP de la maquina que servira de
servidor de correo y con el modem que se conecta a Internet como el Gateway o puerto de enlace
para toda la red.
Como Configurar Sendmail para redes empresariales

Introducción.
La mayoría de las distribuciones de GNU/Linux incluyen de manera predeterminada Sendmail, un
poderoso servidor de correo electrónico ampliamente utilizado alrededor del mundo. Este requiere
de una correcta configuración para su mejor aprovechamiento y poder disponer de un nivel de
seguridad aceptable.
Es muy común que los administradores inexpertos no se molesten siquiera en establecer un nivel de
seguridad apropiado en sus redes locales, y mucho menos en el servidor de correo, el cual ven como
un servicio más. Es un error común el configurar Sendmail para que permita enviar correo como sea
a cualquier costo. Usualmente este costo significa convertirse en Open Relay, y por lo tanto en un
paraíso para personas que se dedican al envío masivo de correo comercial (Spam).
Con este manual usted no podrá:
•Convertirse en gurú en GNU/Linux, pero le será de utilidad.
•Acabar con enfermedades, hambre, guerra, miseria, Microsoft® y otros miles de malestares de los
que adolece el mundo.

•ftp://updates.redhat.com/7.1/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM)


Linux 7.1
•ftp://updates.redhat.com/7.2/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM)
Linux 7.2
Procedimientos.
Preparativos.
Lo primero será establecer que es lo que tenemos en la red local y que es lo que haremos con esto.
Determine que máquinas de su red local, específicamente las direcciones IP, necesitan poder enviar
y recibir correo electrónico y cuales NO deben hacerlo.
Determine como desea recuperar los mensajes de correo electrónico que arriben al servidor. POP3 o
IMAP.

POP3: Es el protocolo de recuperación de correo electrónico más utilizado en la actualidad. Permite


recuperar el correo pero este se almacenará localmente en el disco duro de las máquinas de los
usuarios
IMAP: Este protocolo almacena el correo electrónico, y permite la creación de carpetas de usuario,
en el servidor. De modo tal, los usuarios pueden acceder desde cualquier parte del mundo a su
buzón de correo y carpetas personales. IMAP también facilita la utilización de webmails (servicios
de correo basado sobre web).
.

Determine el nombre de todos los posibles nombres o aliases que tenga su servidor. Ejemplo:
ciua.com.ar, mail.ciua.com.ar, server80.ciua.com.ar , ciua.com.ar, etc.
Configure sus dos tarjetas de red, una para la red local con la IP inválida y otra para la dirección IP
real. Puede hacerlo utilizando el procedimiento descrito en el manual "Cómo - configurar
correctamente los parámetros de red".
Verificando parámetros de red.
Debe de definirse el nombre de la máquina que funcionará como servidor de correo. Normalmente
utilizaremos el esquema nombre_maquina.nombre_dominio. Un ejemplo del nombre de la máquina
servidor sería linux.linuxparatodos.com o servidor.mi-dominio.org.mx. Así que asegúrese de que
esto se encuentra perfectamente definido en /etc/sysconfig/network y /etc/hosts:
Para /etc/sysconfig/network, es decir, el nombre que asignamos a la máquina, correspondería lo
siguiente:

NETWORKING=yes
HOSTNAME=SERVER80.ciua.com.ar
GATEWAY=200.41.50.80

Para /etc/hosts, es decir, la información de los hosts y las direcciones IP, correspondería lo
siguiente:

# Primero, verificamos que las direcciones IP del


# servidor estén asociadas correctamente a un nombre
# largo y uno corto. Los espacios son con tabuladores.
127.0.0.1 localhost.localdomainl localhost
200.41.50.80 SERVER80.ciua.com.ar SERVER80
10.10.3.30 EQUIPO30.ciua.com.ar SERVER30
#
# Opcionalmente aquí puede agregar también
# los nombres y direcciones IP de la máquinas
# de la red local.
10.10.3.30 SERVER30.ciua.com.ar SERVER30
10.10.3.39 EQUIPO39.ciua.com.ar EQUIPO39
10.10.3.44 EQUIPO44.ciua.com.ar EQUIPO44
10.10.3.40 EQUIPO40.ciua.com.ar EQUIPO40
10.10.3.37 EQUIPO37.ciua.com.ar EQUIPO37
10.10.3.34 EQUIPO34.ciua.com.ar EQUIPO34
10.10.3.43 EQUIPO43.ciua.com.ar EQUIPO43
10.10.3.42 EQUIPO42.ciua.com.ar EQUIPO42
10.10.3.35 EQUIPO35.ciua.com.ar EQUIPO35
10.10.3.33 EQUIPO33.ciua.com.ar EQUIPO33
10.10.3.31 EQUIPO31.ciua.com.ar EQUIPO31

Además de configurar correctamente un DNS que defina bien los DNS o servidores de nombres de
dominios correspondientes. Esto debe hacerlo en el archivo /etc/resolv.conf, de un modo similar al
siguiente:

search ciua.com.ar
#
# El IP de la máquina que tiene el DNS de la red local.
Nameserver 10.10.3.80
#
# Los DNS del proveedor de servicios.
nameserver 200.33.213.66
nameserver 200.33.209.66

Una cosa más antes de continuar...


No olvide que se require un DNS perfectamente configurado para que este resuelva su nombre de
dominio utilizado por el servidor de correo. Recuerde que el correo proveniente de otros equipos no
llega solito al servidor ni tampoco por arte de magia.
Confirmando la instalación de Sendmail.
Es importante tener instalados los paquetes sendmail y sendmail-cf, ya que utilizaremos el servidor
de correo Sendmail para el envío de nuestros mensajes y filtrado de correo masivo no solicitado
-Spam-, y el paquete imap, mismo que nos permitirá utilizar el servicio de IMAP y POP3. Para
asegurarse de esto, se puede utilizar la siguiente línea de comando:

rpm -q sendmail sendmail-cf imap


Esto debe devolvernos las versiones de sendmail, sendmail-cf e imap que se tienen instaladas. Si no
fuese así, debemos cambiar a root, si aún no lo hemos hecho, y proceder a instalar estos paquetes.
Introduzca el CDROM de su distribución y siga el siguiente procedimiento:

mount /mnt/cdrom

cd /mnt/cdrom/RedHat/RPMS

rpm -Uvh sendmail-* imap-*

cd $home

eject /mnt/cdrom

Debe instalar sendmail-cf o no le será posible compilar los archivos necesarios para configurar
Sendmail. El paquete imap, el cual contiene el daemon para los protocolo POP3, es el que nos
permitirá recuperar el correo desde el servidor en el resto de las máquinas que integren la red local
con cualquier cliente de correo electrónico.
Configurando Sendmail.
Antes de continuar, debemos editar el fichero /etc/mail/local-host-names, en el cual deberemos de
listar todos y cada uno de los aliases que tenga el servidor que estamos configurando, así como los
posibles sub-dominios. Es decir, todos los dominios para los cuales estaremos recibiendo correo en
un momento dado.

# Incluya aquí todos los dominios para los que


# recibamos correo.
Ciua.com.ar
SERVER80.ciua.com.ar
mail.ciua.com.ar

Procederemos entonces a modificar el archivo /etc/mail/sendmail.mc, con previo respaldo del


original, a fin de preparar la configuración del servidor de correo.

cp /etc/mail/sendmail.mc /etc/mail/etc/sendmail.mc.default

Por defecto Sendmail solo permitirá enviar correo solo desde la interfaz loopback (127.0.0.1), es
decir, desde el mismo servidor. Si queremos poder enviar correo desde las máquinas de la red local
comente la línea o bien, si tiene varias, añada las interfaces desde las cuales se quiere que escuche
peticiones sendmail y omita las que no deben, como sería una red loal secundaria con restricciones.

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

Si queremos filtrar Spam de manera eficiente, la mejor manera de empezar a hacerlo es rechazando
correo proveniente de dominios NO RESUELTOS, es decir dominios que no están registrados en un
DNS y que por lo tanto SON inválidos. Para tal fin, a menos que se requiera lo contrario, es
necesario mantener comentada la siguiente línea:

dnl FEATURE(`accept_unresolvable_domains')dnl

Es necesario establecer que ciua.com.ar corresponderá a la máscara que utilizaremos para todo el
correo que emitamos desde nuestro servidor. Debe, por tanto, añadirse una línea justo debajo de
MAILER(procmail)dnl y que va del siguiente modo:

MASQUERADE_AS(ciua.com.ar)dnl

Todo en conjunto, ya modificado, debería de quedar del siguiente modo (NO modificar el orden de
las líneas):

divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')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
define(`STATUS_FILE', `/var/log/sendmail.st')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 TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')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
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail)dnl
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
dnl FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
MASQUERADE_AS(ciua.com.ar)dnl

Luego se procesa con el siguiente comando para generar /etc/sendmail.cf:


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

Abrimos ahora el archivo /etc/mail/access y agregamos algunas líneas para definir quienes podrán
hacer uso de nuestro servidor de correo para poder enviar mensajes:

# Por defecto, solo se permite enviar correo desde localhost...


localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
# Debemos añadir los nombres y direcciones IP
# que ahora tenga el servidor
ciua.com.ar RELAY
SERVER80.ciua.com.ar RELAY
EQUIPO1.ciua.com.ar RELAY

# Agregue también los nombres COMPLETOS de la máquinas


# y direcciones IP que integran su red local.
# Solo especifique aquellas máquinas que tendrán
# permitido enviar y recibir correo. No es buena idea
# especificar redes completas. Especifique máquinas
# individuales, aunque signifique ingresar manualmente un
# centenar de entradas. Es más seguro de este modo.
EQUIPO1 RELAY
EQUIPO2 RELAY
EQUIPO3 RELAY
EQUIPO4 RELAY
EQUIPO5 RELAY
EQUIPO6 RELAY
EQUIPO7 RELAY
10.10.3.30 RELAY
10.10.3.31 RELAY
10.10.3.32 RELAY
10.10.3.33 RELAY
10.10.3.34 RELAY
10.10.3.35 RELAY

# etc.
#
# Y también podemos agregar las direcciones de correo
# electrónico de aquellos a quienes consideremos
# "indeseables", o que queramos bloquear.
Spam@algun_Spamer.com REJECT
info@otro_Spammer.com REJECT
#
# etc.

En este archivo también puede agregar las direcciones de correo electrónico que desee bloquear,
como son las de quienes envían correo masivo no solicitado -Spam-. Si le desea ahorrarse algo de
tiempo ingresando direcciones y servidores a bloquear, descargue el siguiente archivo que ya
incluye una buena colección de direcciones de correo electrónico y conocidos servidores que
generan Spam:
Al concluir, debemos también compilar este archivo para generar otro en formato de base de datos a
fin de ser utilizado por Sendmail:

cd /etc/mail
make

O bien puede ejecutar lo siguiente:

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

Será de utilidad designar un alias a la cuenta de correo de root a fin de recibir los mensajes
generados por el sistema en una cuenta común de usuario. Abra el archivo /etc/aliases, en donde al
final encontrará la siguientes líneas:

# Person who should get root's mail


root: jperez

Esto corresponde a la cuenta de correo local hacia donde se redireccciona el correo de root.
Descomente la última línea y asigne el nombre de la cuenta de usuario que utiliza normalmente:

# Person who should get root's mail


root: jperez

A fin de que este nuevo alias surta efecto y pueda ser utilizado por Sendmail debe utilizar el
comando newaliases:

/sbin/newaliases

Terminados los detalles de la configuración, reinicie sendmail del siguiente modo y tendrá listo un
servidor de correo que podrá utilizar para enviar mensajes para toda su red local utilizando el
servidor SMTP de su proveedor de servicios:

/etc/rc.d/init.d/sendmail restart

Generalmente Sendmail está incluido entre los servicios que de forma predeterminada se inician
con el sistema. Si por alguna razón Sendmail no estuviese habilitado, ejecute lo siguiente a fin de
habilitar sendmail en los niveles de corrida 3, 4 y 5:

/sbin/chkconfig --level 345 sendmail on

Si está funcionando un contrafuegos o firewall, recuerde que debe de estar abierto el puerto 25, de
otro modo el correo saldría pero no entraría. Añada o verifique que esté presente una línea en el
guión de firewall similar a la siguiente:

#SMTP
/sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 25 -j ACCEPT

Habilitando los servicios POP3 e IMAP


Si usted utiliza Red Hat Linux 7.x o versiones posteriores o equivalentes, debe saber que inetd ha
sido sustituido por xinetd, y utiliza métodos de configuración muy distintos.
Puede habilitar los servicios ipop3 (POP3 tradicional, autenticación en texto plano), pop3s (POP3
seguro, autenticación con criptografía), imap (IMAP tradicional, autenticación en texto plano) e
imaps (IMAP seguro, autenticación con criptografía). Utilice aquellos que consideré como más
apropiados para su red local de acuerdo a las capacidades de los clientes de correo electrónico
utilizados. Tome en cuenta que la autenticación por medio de texto plano es definitivamente un
método inseguro, y siempre serán mejor usar los servicios que permitan establecer conexiones
seguras.
Puede habilitar los servicios de manera automática e inmediata ejecutando los siguientes comandos
(solo habilite aquellos que realmente necesite):

/sbin/chkconfig ipop3 on
/sbin/chkconfig pop3s on
/sbin/chkconfig imap on
/sbin/chkconfig imaps on

También puede habilitarlos manualmente con un editor de texto, lo cual es sugerido a fin de
habilitar opciones adicionales, como direcciones IP específicas a las cuales se les estaría permitido
cierto servicio. Acceda a al directorio /etc/xinet.d/ y edite los fichero ipop3, pop3s, imap e imaps,
según lo requiera. Estos requerirán edite una sola línea para habilitar el servicio:

service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
disable = no
only_from = 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 localhost
}

Lo mismo aplica para el protocolo IMAP e IMAPS.


Hecho lo anterior, es necesario reiniciar el daemon xinetd con la siguiente línea de comando:

/etc/rc.d/init.d/xinet restart

Acto seguido se ejecuta el siguiente comando:

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

Otra opción más del administrador es bloquear también el accesos a los dominios involucrados a
través de IPChains o IPTables. Esto no impedirá que llegue correo, pero servirá para boicotear a las
empresas que utilizan Spam para promocionarse, al no permitir el acceso a sus redes desde nuestras
redes locales.
Para determinar la dirección IP de un dominio en particular, solo baste ejecutar el comando host, el
cual devolverá la dirección IP y quizá algo de información adicional, como si se trata del alias de
otro dominio.

host solopromos.com.mx
solopromos.com.mx. has address 200.57.146.18

Una vez determinadas las direcciones IP problemáticas, solo hay que añadir algunas líneas en el
guión de Firewall que se este utilizando de modo tal que queden bloqueadas de manera permanente,
por lo menos desde nuestra red local. Ejemplo:

/sbin/iptables -A INPUT -s 216.219.236.81 -d 0/0 -j DROP


/sbin/iptables -A INPUT -s 64.65.27.126 -d 0/0 -j DROP
/sbin/iptables -A INPUT -s 200.57.146.18 -d 0/0 -j DROP

Mientras más usuarios y administradores participen reportando y castigando el Spam,


correspondientemente, esta molestia desaparecerá eventualmente, o al menos haremos saber a
quienes se promocionan de este modo que NO NOS AGRADA lo que hacen.
El Servidor de Nombres (DNS)
Si el servidor DNS se localiza en otro servidor y es administrado por otras personas, solo bastará
con informar al administrador de dicho servidor de nombres la existencia del nuevo servidor de
correo electrónico, a fin de que se de de alta la entrada correspondiente en el DNS y a su vez a fin
de que el NIC lo tome en cuenta en el siguiente ciclo de refresco.
Si desea configurar DNS propio, y dar éste de alta con el NIC, se necesitará tener instalados los
siguientes paquetes: bind, bind-utils y caching-nameserver. Todos, seguramente, vienen incluidos en
alguno de los CD de instalación. Note por favor que no es conveniente utilizar versiones anteriores
a bind-9.1.3, debido a serias fallas de seguridad. Consulte en el sitio web de su distribución para
verificar si hay paquetes de actualización disponibles.
•ftp://updates.redhat.com/7.1/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM)
Linux 7.1
•ftp://updates.redhat.com/7.2/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM)
Linux 7.2
Los siguientes corresponderían a los contenidos para los ficheros de zona requeridos para la red
local y por el NIC con el que se haya registrado el dominio. Note por favor que en las zonas de
reenvío siempre se especifica al menos un Mail Exchanger (MX) y que se utilizan tabuladores (tecla
TAB) en lugar de espacio. Solo necesitará sustituir nombres y direcciones IP, y quizá añadir nuevas
entradas para complementar su red local.
Zona de reenvío red local
/var/named/mi-red-local.org.mx.zone

/sbin/chkconfig --level 345 named on

Configuración de los clientes de correo.


Considerando que tiene bien configurada su red local y que ha seguido este manual al pie de la
letra, sea la PC que sea en su red local, puede configurar mail.mi-red-local.org.mx o mail.mi-
dominio.org.mx como servidor de correo saliente o SMTP y servidor de correo entrante, POP3 o
imap, en el cliente de correo que utilice.

Preferencias de Netscape para los servidores de correo.

Squiid: Servidor Proxy


Introducción.
Squid es el servidor Proxy más popular y extendido entre los sistemas operativos basados sobre
UNIX®. Es muy confiable, robusto y versátil. Al ser software libre, además de estar disponible el
código fuente, está libre del pago de costosas licencias por uso o con restricción a un uso con
determinado número de usuarios.
Entre otras cosas, Squid puede hacer Proxy y cache con los protocolos HTTP, FT

You might also like