Note: this wiki is no longer maintained. If you have any questions related to this wiki, please post them on the CrunchBang forums.

Translations of this page?:

WIKI-ES HOWTO CÓMO configurar un servidor de Transmisión SMTP con Anti-Spam y Anti-Virus en #! Lite

Esto es por mucho un trabajo en progreso, ya que apenas comence a trabajar en él, pero el plan es construir un servidor de transmisión (relay) SMTP, usando #!Lite como Sistema Operativo, para proporcionar funcionalidad anti-spam y anti-virus en un servidor de correo electrónico existente. Ésta guía CÓMO puede servir para ayudarlo a comenzar, aún si ya se encuentra corriendo un dominio de correo electrónico, sin embargo, debe tomar en consideración varios factores, cómo los lapsos de tiempo en el cambio de direcciones y otros y de ese modo asegurar el flujo de correo, de otra manera, sus usuarios podrían enfurecerse un poco con usted. En mi situación, agregué un nuevo dominio a un servidor de correo existente, que ya albergaba dos dominios de correo electrónico que actualmente son protegidos por hardware para filtrar spam; el cuál, con suerte reemplazaré con ésta instalación en un futuro cercano - por ahora, un recién configurado dominio para un nuevo proyecto de negocios de mi jefe fue una gran manera de evaluar ésta configuración.

Configurando #! Lite

Antes que nada, hágase de una copia de la Edición Lite de #! aquí y grabe un LiveCD. Una vez que arranque, opte por una instalación estándar de #! Lite, conservando las opciones predeterminadas sugeridas y agregue su información. Sólo en caso de que ésta sea su primera instalación de #! , una vez que el LiveCD haya iniciado dentro de Openbox, basta con hacer click derecho sobre el escritorio y seleccionar Install (Instalar) desde el menú.

Después de la instalación, cambie a una terminal y use su editor favorito para configurar la conectividad de red y acceso remoto como a continuación se detallará. Después de ese punto, podremos dejar el ruidoso cuarto del servidor y regresar a nuestro escritorio para terminar la configuración con una buena taza de café y nuestras canciones favoritas de fondo ;-)

Conectividad de Red

Consideraciones Generales

Para poder proporcionar los servicios requeridos a su servidor de correo electrónico, nuestra #Spam box deberá tener asignada un dirección IP estática y ser capaz de “ver” nuestro servidor de email, así como también poder ver el mundo a través del puerto 25, ya que será su servidor SMTP de cara a Internet, que básicamente filtrará y analizará su tráfico de correo electrónico antes de que siquiera llegue a su servidor de email. No puedo proporcionar una wiki completa sobre seguridad de red ni cosa por el estilo, pero sea consciente de todas las implicaciones que tiene abrir su máquina al mundo exterior de esta manera - éste documento sólo pretende darle un vistazo rápido en cuánto a cómo reducir la cantidad de spam a ningún costo o a bajos costos en comparación con otras soluciones de filtrado de spam. La seguridad de su red es su trabajo y responsabilidad y no puedo asumir ninguna responsabilidad por cualquier problema de seguridad que pudiese encontrar. En mi caso no hubo necesidad de una firewall (cortafuegos) adicional, ya que el servidor ya se encontraba resguardado tras una sólida firewall.

Auto-inicio de la Interfaz

De manera predeterminada, #! no iniciará ninguna de sus conexiones de red hasta que haya iniciado una sesión en X y el Gestor de redes (NetworkManager) haga su magia, si es que está configurado para auto-arrancar la interfaz de red.

Para un posible sistema de servidor headless (sin cabeza), que sea capaz de reiniciar sin intervención de un usuario, lo anterior ciertamente no sería práctico y por lo tanto, necesitamos configurar la interfaz de red para que auto-arranque. Esto puede lograrse a través de configurar /etc/network/interfaces. Actualmente estamos removiendo el Gestor de Redes de Gnome (NetworkManager), ya que de otra manera, nos arriesgamos a que sobreescriba algunas de las configuraciones manuales si alguien entra al sistema y juega con él.

Para remover NetworkManager, corra:

sudo update-rc.d -f NetworkManager remove

Ahora a nuestra configuración de interfaz. En mi caso este archivo ahora se ve como a continuación se muestra:

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.10.129
netmask 255.255.255.0
gateway 192.168.10.10
network 192.168.10.0
broadcast 192.168.10.255

Obviamente tendrá que reemplazar la configuración con los valores de la suya o podría estar corriendo DHCP, en cuyo caso no tendrá necesidad de ninguna de las direcciones y reemplazar iface eth0 inet static con iface eth0 inet dhcp

Ya que no estaremos corriendo network-manager, necesitaremos agregar nuestro nombre de servidor manualmente

/etc/resolv.conf

nameserver 192.168.10.40
nameserver 4.2.2.2

De nuevo, reemplace las direcciones con aquella apropiadas para usted.

Para ver si su configuración está funcionando, corra:

sudo /etc/init.d/networking restart

Entonces trate de hacer ping sobre una dirección externa, por ejemplo, ver si tenemos conectividad y nombre se servidor (nameserver):

ping google.com

Si obtiene pings de vuelta, debe estar en forma decente. CTRL+C lo sacará de ese ping, en caso que lo pregunte. Ahora bien, es hora de reiniciar el sistema y verificar una vez más la conectividad de red. Debería conectarlo automáticamente después del arranque sin solicitarle que incie una sesión en X para que el gestor de redes corra.

Configurando el Acceso Remoto

Ya que no me gusta pasar horas en mi cuarto de servidor y prefiero sentarme en mi cómodo escritorio, instalaremos algunas herramientas adicionales para tener acceso remoto. Y debido a que todos somos tan consentidos y amamos usar las GUI's hoy en día, hay herramientas que estaremos usando para acceder a nuestro próximo a ser sistema headless (esto es, sin pantalla/teclado/ratón locales): SSH y VNC. No entraré en tanto detalle acerca de ambos, ya que hay muchísima información acerca de ellas en la red y todo lo que realmente necesitamos para nuestros propósitos es que funcionen y que usted sea capaz de mantener su CrunchSpam-Box (Realmente me gusta ese nombre, pero creo que necesito asegurarme de preguntarle a la gente que “es” #! que dicen al respecto…)

OpenSSH

Para obtener acceso remoto a la línea de comando en su nuevo servidor y hacerlo de una manera segura, ya que seguramente querrá conectarse a él desde el exterior (si elije configurar su sistema/firewall de esa manera) estaremos instalando un servidor OpenSSH en la máquina. Bueno, eso suena realmente complicado y geeky, eh? Pero no se desespere, esta parte al menos será fácil. En la terminal escriba:

sudo apt-get install openssh-server

Ummm…sí…eso es todo. No, realmente. Hecho. Acaba de instalar un servidor SSH y #! se encarga de la configuración. Ahora puede conectarse remotamente a la línea de comando de su nuevo servidor escribiendo:

ssh <hostname>

reemplazando <hostname> ya sea con el nombre resoluble o con la dirección IP de su máquina. Alternativamente en una máquina Windows, descargue Putty - es un pequeño pero genial cliente SSH y tiene muchas otras funciones que pueden ser muy útiles!

Debe poder ingresar a la shell remota ahora, justo como si estuviera sentado frente a es máquina. Así que como se siente, sentado en su cómoda silla de oficina con una café en la mano y sin todo el ruido del cuarto del servidor y aún así poder trabajar en esa máquina como si estuviera sentado frente a ella (al menos bien me imagino)? Es hora de rellenar la taza, yo diría, antes de que avancemos para hacer llegar a su brillante y negra GUI a esa máquina remota también….

x11vnc

Para acceder a una GUI en una caja Linux, VNC es una de mis maneras preferidas de hacerlo - es gratuita, fácil de configurar, bastante conservadora en lo que se refiere a requerimientos de ancho de banda, dependiendo en la configuración y x11vnc es una maravillosa implementación de un servidor para dicho protocolo.

Sentado en su escritorio, en su cómoda silla, con su recién rellenada taza de café. abra una conexión SSH a su caja servidor una vez más e ingrese a su cuenta. En la línea de comando escriba:

sudo apt-get install x11vnc

lo cuál instalará nuestro servidor x11vnc y algunas dependencias, ya que está en los repositorios.

Ahora que tenemos x11vnc instalado, necesitamos configurar el sistema para “escuchar” en busca de conexiones VNC ya para cuando el gestor de sesión GDM esté corriendo e incluso cuando nadie haya ingresado. Primero, creamos una contraseña para ser usada por VNC. Hay varias maneras para autorizar acceso VNC vía x11vnc. Aquí tomaré un enfoque muy básico en cuánto a que mi conexión VNC no será accesible desde el exterior. Si sigue el enlace al sitio de x11vnc encontrará mucha información referente al tema. Así que creemos dicha contraseña y guardemos el archivo que la contiene en algún lugar:

sudo x11vnc -storepassword sucontraseña /etc/x11vnc.pass

Reemplace “sucontraseña” con una contraseña de su elección. Unas cuántas líneas hacia abajo, le diremos a x11vnc que use éste archivo para autorizar el acceso.

En este punto, necesitamos decirle a GDM que inicie x11vnc con los parámetros de nuestra elección cuando cargue. Esto se logra editando /etc/gdm/Init/Default en su editor favorito. (Ummm…ya le he dicho que realmente me agrada joe? No, ese no es un colega o cosa por el estilo, sino un pequeño gran editor, está en los repositorios!)

sudo joe /etc/gdm/Init/Default

y vaya hacia abajo hasta el final del archivo y justo encima de la línea que tiene exit 0 agregue las siguiente líneas:

# Setup x11vnc
/usr/bin/x11vnc -rfbauth /etc/x11vnc.pass -o /tmp/x11vnc.log -forever -bg -rfbport 5900 -noxfixes -cursor arrow -arrow 3 -allow 192.168.10.

Trataré de darle una breve explicación para algunas de las opciones - si necesita saber más, ya le he mencionado que hay un montón de información en el sitio de x11vnc???

rfbauth /etc/x11vnc.pass

Esto le dice a x11vnc que use el archivo de contraseña que creamos en el paso anterior para las autorizaciones.

o /tmp/x11vnc.log

Información de tiempo de ejecución será registrada en el archivo referido (útil para resolver problemas con x11vnc. Pregúnteme como lo sé…)

rfbport 5900

El puerto que usará para conectarse con su cliente. 5900 es un puerto estándar VNC, pero puede cambiarlo a cualquier puerto disponible por diversas razones.

noxfixes

Ese me tomo un tiempo. Por alguna razón el servidor X entero se mantuvo cayéndose tan pronto como buscaba ingresar al GDM que se veía hermoso en mi cliente VNC. De algún modo, en esta versión particular, x11vnc es capaz de tirar a X (realmente algo de miedo…) y ésta opción previene que eso suceda. La desventaja es que previene a X de mostrar buenos cursores de ratón, que es por lo cual usamos…

cursor arrow -arrow 3

De lo contrario, todo lo que vería como puntero del ratón es una gorda y fea “X” y eso no sería para nada lindo, verdad?

allow 192.168.10.

Agregue esto para prevenir que alguien desde otra subred pueda acceder a VNC (sí, lo admito, tengo mi lado paranoide…)

Piensa que ya terminamos? No tan rápido! Si no llevamos a cabo el siguiente paso, GDM aún matará nuestra sesión después de que ingresemos, aún con el parámetro -noxfixes! Para cambiar esa conducta, necesitaremos editar el archivo /etc/gdm/gdm.conf escribiendo:

sudo joe /etc/gdm/gdm.conf

Encuentra la entrada que contiene:

#KillInitClients=true

Ésta línea, podría o podría no se comentada con un ”#”. En todo caso, debería leerse:

KillInitClients=false

Cuándo termine. Sí, es un archivo bastante grande y si de hecho está usando joe como le dije ( :P ) puede oprimir CTRL+K seguido de F para encontrar una cadena de caracteres (string) ;-) Guarde el archivo y salga de su editor.

Todo lo que resta por hacer es reiniciar su servidor. No, no se levante! Puede hacerlo justo aquí, dentro de su maravillosa sesión SSH! Sólo escriba:

sudo shutdown -r now

Su caja se reiniciará automágicamente y volverá a arrancar y correr a través de su nuevo y flamante cliente VNC con acceso remoto! Hay bastantes de ellas alrededor en la red, personalmente uso tanto TightVNC o en mi máquina del trabajo (WIN) mRemote la cual soporta muchos protocolos de acceso remoto de inmediato tras instalarse, aparte de que permite aplicaciones personalizadas. Si usted como yo, soporta una tonelada de sistemas diferentes y tiene que trabajar en un entorno Windows de vez en cuando, quizá quiera echar un vistazo…

Así que descargue, instale, configure, aprisa! Una vez conectado, le pedirá la contraseña que creó arriba (aún la recuerda, verdad?) y entonces se le presentará una bellísima pantalla de acceso GDM donde puede ingresar a su Gestor de Ventanas Openbox, justo como si estuviera en ese ruidoso cuarto de servidor!

Ok, yo entiendo…quiere jugar con ella por un rato…es realmente genial después de todo. Tan pronto como esté listo, avanzaremos para tener la transmisión (relay) de correo instalada.

Instalando Postfix

Instalación del Paquete

Lo primero que haremos es instalar Postfix como nuestro MTA (Mail Transfer Agent - Agente de Transferencia de Correo), proporcionándonos transmisión (relay) de email para transportar correo electrónico desde el internet hasta su servidor de email existente y mientras lo hacemos, le permitirá a todas las demás pequeñas piezas que instalaremos después, poner sus dedillos en esos correos electrónicos para asegurarnos de que no contengan sucios bichillos o spam enlatado. No gastaré mucho tiempo escribiendo sobre como configurar su firewall (cortafuegos), cómo es que MX registra trabajo y tales asuntos, si se atreve a seguir esta guía CÓMO (acaso está loco???) tendrá un muy buen entendimiento de esas cuestiones (eso espero!!!) y tendrá todo listo y configurado para que su MX registre puntos hacia su IP pública y su ruteo se asegure de que el tráfico del puerto 25 llegue a su nueva y flamante SpamCrunch box. Así que vayamos a #! para ser Postfixeados:

sudo apt-get install postfix

No es maravilloso tener acceso a esos geniales repositorios de ubuntu mientras que lo que corre es una esbelta, ligera, malvada, brillante y negra máquina #! CrunchBang?

Ya que tengo que admitir que soy un total novato en Postfix, tome muchos puntos de referencia para la configuración de archivos de ésta guía CÓMO que fue muy útil, aún cuando fue escrita para una instalación de FC4, que aún cuándo tantos de los comandos CLI, ubicación de archivos y cosas por el estilo, son completamente inútiles para nosotros, la configuración general aún aplica y probablemente conocerá su sistema lo suficiente para resolver las cosas. Trato de dar tanta información específica a #! CrunchBang como me es posible.

La belleza de instalar Postfix de ese modo, es que automágicamente configura a todos los usuarios y todos los grupos para nosotros, así que no tendremos que hacer nada de eso. También inicia Postfix al momento de arrancar. También le presentará una rutina de configuración, la cuál no usaremos para nuestro propósito, porque en lugar de eso, preferimos terminar sin ninguna configuración automática.

Configuración de Postfix

master.cf

Comencemos configurando los servicios de Postfix. Esto se hace en el archivo /etc/postfix/master.cf . Éste es un archivo de configuración bastante chistoso en apariencia, ya que está dispuesto como una tabla. No hay mucho que cambiar en este archivo aparte de agregar las siguientes dos líneas justo bajo la línea que comienza con pickup:

  -o content_filter=
  -o receive_override_options=no_header_body_checks

Asegúrese de hacerles sangría con una sola tabulación - Creo que se supone que sea de ese modo o al menos así es cómo funciona ;-) Todo lo que hace, es decirle a Postfix que los mensajes locales no estarán sujetos a los filtros internos de Postfix. No hay más que configurar a partir de allí, pero por ahora sólo queremos asegurarnos de que tenemos la funcionalidad de transmisión básica y probarla, una vez que esté funcionando. Ahora podemos avanzar.

main.cf

El archivo main.cf es un archivo de configuración bastante poderoso. Es tanto lo que puede ser hecho y controlado por él y puede volverse bastante complejo. El mejor lugar para obtener información acerca de sus parámetros y sintaxis es el Sitio Web de Postfix que tiene información detallada. Por ahora le proporcionaré la información para crear una configuración MUY sencilla de Postfix. Agregue tantos servicios RBL y parámetros como lo desee, pero querrá mantenerlo de algún modo sencillo, al menos hasta que todo esté arriba y corriendo y partir de ahí. En éste punto no habrá main.cf en su directorio /etc/postfix/ - recuerde, le dijimos al programa de configuración no configurar nada, así que tenemos que hacer uno:

sudo joe /etc/postfix/main.cf

Esto abrirá su nuevo editor favorito (joe!) con un archivo nuevo y vacío. Para empezar, use lo siguiente (Usemos al gemelo malvado de Contoso, Monstroso como un ejemplo aquí - necesitará reemplazar todos los nombres de dominios con los valores correctos para su propósito!):

/etc/postfix/main.cf

myhostname = crunchspam.monstroso.com
mydomain = monstroso.com
myorigin = monstroso.com
mydestination =
local_recipient_maps =
mynetworks = 192.168.10.99
relay_domains = monstroso.com
message_size_limit = 10485760
transport_maps = hash:/etc/postfix/transport
smtpd_helo_required = yes
disable_vrfy_command = yes
virtual_alias_maps = hash:/etc/postfix/virtual
alias_maps = hash:/etc/aliases
smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_access, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dul.dnsbl.sorbs.net
smtpd_helo_restrictions = check_helo_access hash:/etc/postfix/helo_access, reject_invalid_hostname
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access, reject_unknown_sender_domain
smtpd_recipient_restrictions = reject_unknown_recipient_domain, permit_mynetworks, reject_unauth_destination, check_recipient_access hash:/etc/postfix/recipient_access
smtpd_data_restrictions =  reject_unauth_pipelining

Permítame darle algunos de los puntos relevantes acerca de los elementos que menos se explican a sí mismos, sólo para que nadie pueda acusarme de brujería…

mydestination =

Esto está en blanco ya que no estamos en el negocio de la entrega de correo (mail-delivery), sino en el de la transmisión de coreo (mail-relay). Adivine, es mejor de esa manera, de lo contrario, tendríamos que incrementar nuestros precios aproximadamente cada mes :P Básicamente le estamos diciendo a Postfix no entregar ningún correo a buzones de entrada (mailboxes) locales.

mynetworks = 192.168.10.99

Es muy importante que pongamos algo ahí. Normalmente, esto sería usado si el servidos también enviará correo saliente y limitaría las redes de destino. Si lo dejaremos vacío, nuestro servidor sería un excelente medio de transmisión para todos y mandaría carretonadas de spam enlatado a tavés de él. Así que como estamos “sólo” usando Postfix como un medio de transmisión, añadiremos nuestra propia IP aquí (o algo más que sea inofensivo y en nuestra red), de ese modo nadie puede transmitir nada a través de nuestro servidor.

Las líneas con restricciones se explican bastante bien por sí mismas y más información está disponible en - sí, lo adivino, verdad? - El Sitio Web de Postfix. Algo que habrá visto es que hay un montón de archivos hash (de función de resumen) referidos. No es necesario decir que aún no tenemos esos archivos, así que tendremos que crearlos. Afortunadamente, Postfix viene con un pequeño comando genial llamado postmap que nos permite compilar archivos de texto en archivos legibles por Postfix .db los archivos hash y como puede ver por las referencias, tenemos que crear un montón de ellos.

Una vez que tengamos guardado nuestro main.cf y volvamos a la línea de comando, escriba (para todo esto, asumo que está en /etc/postfix/)

sudo joe /etc/postfix/transport

para crear un nuevo archivo de texto con el nombre transport. Para nuestros propósitos, todo lo que necesitamos es añadir ésta línea:

monstroso.com      smtp:[192.168.10.45]

Lo cuál le dice a nuestro servidor transmitir mensajes para monstroso.com vía smtp a la IP de nuestro servidor de correo que alberga los buzones de correo (mailboxes) reales. Puede agregar tantas líneas como quiera para más dominios/servidores. Debo decirle cada vez que tiene que reemplazar esos datos raros con sus valores? Nah, creo que a estas alturas lo sabe…lo sabe, verdad? Cuando tenga ese archivo guardado, salga de joe y escriba:

sudo postmap transport

y el comando creará un archivo legible por Postfix llamado transport.db. No me cree? Bueno, vaya y revise! Ahí está! Se lo estoy diciendo, es casi mágico!

Ahora necesitamos el archivo virtual . Éste contiene el mapeo de ciertas direcciones de email requeridas que realmente podrían no existir, ya que los mailboxes están en nuestro servidor de correo. Para algunos de ellos tendría sentido crearlos, otros estarían mejor siendo entregados en alguna otra parte - es su decisión. Así que, el mismo procedimiento del año pasado, Mrs. Sophie, cree un nuevo archivo /etc/postfix/virtual con el siguiente contenido (sí, TIENE que cambiar el contenido para que funcione para usted - si quiere que haga esa parte por usted también, tendrá que pagarme bastantes billetes!)

root       postmaster@monstroso.com
postmaster postmaster@monstroso.com
abuse      postmaster@monstroso.com
virus      virus@monstroso.com
spam       spam@monstroso.com

…y una vez más, guarde, salga y haga el archivo hash:

sudo postmap virtual

Realmente está verificando de nuevo si el archivo está allí??? No me cree, eh? Yo soy igual y más de una vez encontré que tenía un tybo error de tipografía y arruinaba algo, así que no lo culpo…al menos no aún…LO QUE SIGUE!

Ahora creemos el archivo /etc/postfix/client_access. Éste archivo básicamente le permite poner servidores en una lista blanca o una lista negra. Justo ahora el archivo está mayormente vacío, a menos que esté WL/BL (puesto en lista blanca o negra) desde otro sistema. La sintaxis es sencilla:

101.102.103.104 OK
104.103.102.101 REJECT

Capta la idea - hay más parámetros que puede usar aquí, podría revisar el Sitio Web de Postfix para encontrarlos! No olvide hacer un archivo hash de ello:

sudo postmap client_access

Hará eso por usted una vez más!

Hay algo más, así que aquí va en corto:

/etc/postfix/helo_access

monstroso.com           REJECT
100.100.100.100         REJECT
localhost               REJECT

Significa que rechazamos los helo's SMTP de nuestro propio dominio, ya que eso podría permitirle a alguien más fingir que es nosotros (no tengo idea de porque alguien querría eso, pero los spammers son gente chistosa!). También rechazamos los helo's desde nuestra propia IP pública, así como también desde el localhost. No olvide…

sudo postmap helo_access

para hacer el archivo hash!

/etc/postfix/sender_access

El mío esta actualmente vacío en este punto, pero usted podría aprobar la dirección de un remitente de email aún si está en una de las listas negras que está usando (name@sender.com OK) o rechazarla cuando no esté con REJECT. Porque lo especificamos en la configuración, sólo siga adelante y cree el archivo por ahora y guárdelo vacío.

El comando postmap:

sudo postmap sender_access

creará un archivo hash incluso desde un archivo de texto vacío.

/etc/postfix/recipient_access

Éste contiene una sola línea para mis propósitos, pero potencialmente podría contener múltiples dominios. Especifica los dominios para que emails son enviados para su subsecuente análisis por parte de ClamAV, SpamAssassin y así sucesivamente.

monstroso.com      OK

No olvide guardar y compilar el archivo hash con:

sudo postmap recipient_access

Hmmmmm…tengo esa sensación curiosa de que esto es todo!!! Podrá ser??? La configuración de Postfix por ahora está hecha, ya podemos inciar Postfix??? (Vaya y tome su sombrero más duro, sólo en caso de que sople mucho aire…)

Iniciando y Probando Postfix

Lanzando Postfix

Sé que no puede esperar para averiguar su finalmente logró quebrar su sistema…así que adelante…hágalo…no diga que no fue advertido!

postfix start

AGÁCHESE Y CÚBRASE!!!!!

Eh? De vuelta en la línea de comando? Que pasó??? Sin Errores????? Cómo lo hace???? Debió haber tenido una sensacional guía CÓMO que seguir!!! *g*

Probando la Transmisión

Vemos si podemos obtener algo de correo transmitido al servidor de email y con suerte, terminará en su mailbox (que por ahora todavía muestra una entrada para su nueva dirección de correo de @monstroso.com , cierto?).

No estoy seguro de que tan familiarizado esté con los comandos SMTP, pero éste es un buen modo de asegurarse de que lo básico está funcionando correctamente y que seremos capaces de ver cualquier mensaje de error de inmediato, en lugar de esperar a que nos sea regresado el correo. Así que conectémonos al nuevo servidor!

telnet crunchspam.monstroso.com 25

Naturalmente, reemplazamos el nombre del servidor con su IP o de otra manera, éste sería capaz de ser alcanzado en su red, o si así lo decide, desde afuera de él. El puerto 25 es sólo un puerto para ser usado por telnet, el cuál es un puerto estándar SMTP, pero eso ya lo sabe. Si todo marcha bien, podemos celebrar nuestro primer éxito si el servidor responde con:

220 crunchspam.monstroso.com ESMTP Postfix

Esto significaría que nuestro servidor está vivo y al menos en disposición de escuchar lo que sea que le queramos decir - o si es que en verdad le permite mandar correo, o incluso si le gusta su nombre para empezar, siempre es una historia completamente diferente. Así que veamos que tan lejos llegamos…

helo 192.168.10.99 (use su IP)

Básicamente sólo le estamos diciendo hola al servidor, diciéndole quién es - y no, no es un error tipográfico (typo), ÉSTE helo tiene una sola “l” ;-) Si todo marcha bien y su servidor tiene buenos modales, le responderá con:

250 crunchspam.monstroso.com

Dígale al servidor de quién proviene el email:

mail from: test@gmail.com (use alguna dirección de correo externo, probablemente tiene 10!)

Y le dejará saber si es que le gusta esa dirección…

250 Ok

Adónde desea enviar ese email:

rcpt to: you@monstroso.com

Y nuevamente el servidor le dirá su es que le gusta su comando contestándole:

250 Ok

Ahora que tenemos esto fuera del camino, creemos el correo real, escribiendo:

data

Hará responder al servidor:

354 End data with <CR><LF>.<CR><LF>

Nos deja saber que podemos crear nuestro email y que cuando hayamos terminado presionemos <ENTER> luego un punto seguido por otro <ENTER>

Así que creamos un email de la siguiente manera:

subject: Ésta es una prueba de transmisión de correo <-- o lo que quiera que sea el tema del correo.
PROBANDO...123 PROBANDO... <-- este es su cuerpo de texto
    <--Sólo presione <ENTER>
.   <--Teclee un punto
    <--y otro <ENTER> para hacerle saber al servidor que hemos finalizado!

El servidor deberá responder con:

250 Ok: queued as {aquí aparecerá un número aleatorio…}

Ahora salimos de nuestra sesión de SMTP con el servidor, escribiendo…puede adivinarlo…

quit

…y de parte de nuestro muy bien educado servidor recibiremos un amistoso:

221 Bye

A esta altura, si todo marcha bien, deberá tener una nuevo correo electrónico en su buzón! Si no es así… bueno, está por su cuenta, pues es todo lo que concierne a la información que le puedo dar en ésta guía CÓMO - pero hay TONELADAS de recursos en la red y sé lo bueno que es usted googleando toda clase de cosas ;-) Si tuviera problemas en éste punto, arréglelos, no necesita continuar su la funcionalidad básica no opera. Y tal vez quiera recordar los comandos SMTP arriba - pueden ser realmente útiles cuando necesita enviar un correo electrónico y no tiene nada más que una terminal que conoce telnet y una conexión a la red disponible ;-)

Si todo funciona, felicitaciones! No, no a usted! A mí!!! Después de todo este CÓMO parece estar escrito increíblemente bien y es súper sencillo de seguir ya que hasta usted fue capaz de hacerlo! Ok, ok, Me voy a regresar un poco. Tome otra taza de café y regrese por un momento, antes de que continuemos hacia amavisd-new.

Instalando amavisd-new

Instalación

Amavisd-new es una especie de pegamento que pone todas las piezas juntas - toma correo desde postfix, lo envía al asesino para “matar” cualquier spam, luego lo envía a clam(av) para asegurarse de que no hay bichos en los emails, un par de pasos más para asegurar que quede fuera todo el viagra y todas las demás bellas ofertas que ni siquiera llegarán a su buzón (a menos de que quiera que lo hagan, claro!) y entonces las entrega de vuelta a postfix para ser transmitidos a su servidor en nuestro caso.

Cómo a menudo en ésta guía CÓMO, éste es otro momento en que solamente puedo ser feliz de usar los repositorios de Ubuntu en #! - los paquetes son instalados y pre-configurados muy bien, así que después de instalar amavisd-new, no hay mucho que quede por hacer de nuestra parte. Pongámoslo en nuestro sistema corriendo:

sudo apt-get install amavisd-new

Configuración

Encontrará los archivos de configuración en /etc/amavis/conf.d

En la versión actual de amavisd-new los archivos de configuración están divididos en secciones. El arhivo /etc/amavis/conf.d/50-user puede ser usado para añadir configuraciones específicas y manda por encima de todos los demás archivos. Para nuestro propósito hacemos los siguientes ajustes (ok, usted los hace - yo ya los hice…):

Para activar la revisión en busca de spam y virus dentro de amavisd-new, necesitamos editar /etc/amavis/conf.d/15-content_filter_mode y asegurarnos de que dos líneas allí no estén comentadas:

use strict;

# Puede modificar este archivo para rehabilitar la revisión de SPAM a través de spamassassin
# y para rehabilitar la revisión antivirus.

#
# Modo de revisión antivirus predeterminado
# Quite los comentarios de las dos líneas debajo para rehabilitarlo
#

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


#
# Modo de revisión de SPAM predeterminado
# Quite los comentarios de las dos líneas debajo para rehabilitarlo
#

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return

Ahora nos movemos a /etc/amavis/conf.d/20-debian_defaults y nos aseguramos de decirle a amavisd_new que hacer con los emails que son spam o tienen alguna suciedad en ellos (éstas son mis configuraciones, usted querrá ajustar las suyas!):

$final_virus_destiny      = D_DISCARD;  # (data not lost, see virus quarantine)
$final_banned_destiny     = D_DISCARD;   # D_REJECT when front-end MTA
$final_spam_destiny       = D_DISCARD;
$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)

$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default

Postfix conoce a amavisd-new!

Una vez que ya recorrimos todos los archivos de configuración y modificamos todo lo que quisimos, es tiempo de asegurarnos de presentar a la linda amavisd-new con nuestro caballero Postfix. Para hacerlo, necesitamos hacer algunos cambios más a /etc/postfix/main.cf

Vaya al fondo del archivo y agregue las siguientes líneas:

smtp-amavis  unix    -    -    y    -    4    smtp
 -o smtp_data_done_timeout=1200
 -o smtp_send_xforward_command=yes
 -o disable_dns_lookups=yes

Aún más importante, esto le dirá a Postfix enviar todo el email vía smtp hacia amavisd-new, de manera que “ella” pueda hacer lo suyo (o mejores cosaS) a cada email entrante…usted sabe, Lysol y esas cosas…

El número “4” en la primera línea, especifica cuántos pequeños procesos de servidor serán iniciados para procesar el correo electrónico. Cuatro parece ser un muy buen balance entre desempeño y velocidad para la mayoría de las aplicaciones, a menos que esté en un entorno con 10,000 buzones - entonces quizá le gustaría volver a repasar eso.

Justo después de eso añadimos:

127.0.0.1:10025 inet    n    -    y    -    -    smtpd
 -o content_filter=
 -o local_recipient_maps=
 -o relay_recipient_maps=
 -o smtpd_restriction_classes=
 -o smtpd_helo_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks=127.0.0.0/8
 -o strict_rfc821_envelopes=yes
 -o smtpd_error_sleep_time=0
 -o smtpd_soft_error_limit=1001
 -o smtpd_hard_error_limit=1000
 -o receive_override_options=no_header_body_checks

Esto presenta a amavisd-new como un programa externo a Postfix y configura el Puerto 10025 para comunicarle de vuelta cualquier hallazgo. En lo que se refiere al resto de las configuraciones, siéntase libre de consultar el maravilloso sitio de Postfix, si es que quisiera hacer cambios o modificar la configuración a partir de la mía.

Un pequeño cambio más a /etc/postfix/main.cf y amavisd-new está bastante bien configurada para nuestro propósito:

content_filter = smtp-amavis:[localhost]:10024

Añada esta línea dónde sea en el archivo - le dice a Postfix usar el Puerto 10024 para hablarle a amavisd-new en la máquina local.

Y ahí lo tiene! Amavisd-new está configurada y lista para enviar nuestros emails a través de las rutas para asegurarse de que solo lo que realmente deseamos termine en nuestro buzón! Eso fue fácil! Nuestra confiable instalación del paquete de ubuntu también se aseguro de que amavisd-new inicie automágicamente al arranque de modo que pueda relajarse un poco ahora!

Instalando Spam Assassin

Instalando el Paquete

Listo para un rapidín? O mejor, rapidínes? Ummmmmm….no, no, que estaba ya su mente pensando de nuevo! Lo conozco! Mejor cuídese, porque el gato desde el tejado lo observa! Todo lo que quise decir es que poner todas las piezas juntas y configurar el resto de la caja de transmisión CrunchSpam es indoloro y rápido y nuevamente, la mayoría debido a que Ubuntu hace un buen trabajo con sus repositorios e instalación de scripts. Hagamos que SpamAssassin sea instalado con:

sudo apt-get install spamassassin

Una vez que haya sido hecho, necesitamos algunas cosas adicionales de Perl - Lo admito, no tengo pista de lo que estoy haciendo con esto, pero puedo googlear y seguir instrucciones muy bien *g*. Así que para hacer funcionar todo, corro:

perl -MCPAN -e shell

Básicamente tengo un montón de texto, advertencias de actualización y así sucesivamente, las respuestas predeterminadas al oprimir ENTER parecen haber tomado todas las decisiones correctas y en nada de tiempo, pude continuar para escribir y correr

install Digest::SHA1

tras lo cuál tiene que salir, escribiendo:

quit <enter>

Configurando Spam Assassin

Ya que SpamAssassin recibirá email desde internet, tenemos que añadir nuestra IP pública, que es la que recibe el email por su configuración. Esto se hace en /etc/spamassassin/local.cf, donde podrá agregar todas las IP's que aparezcan como confiables en sus registros MX, así como también las redes internas al agregar tantas líneas de estas como las necesite:

trusted_networks 101.102.103.104

internal_networks 101.102.103.104

Oh…sí, eso en sí es todo! Volveremos al archivo arriba y a algunos otros en el miso directorio cuando instalemos Razor y Pyzor, pero para SpamAssassin en si mismo, todo está listo y hecho!

Instalando Razor

Antes que nada, obtengámoslo desde los repositorios y en este punto, estoy seguro de que sabe lo que diré…

sudo apt-get install razor

Antes de que sigamos adelante, necesita asegurarse de que el puerto tcp 2703 esté abierto en su firewall para la transmisión en la CrunchSpam, de otro modo, el siguiente paso fallará. Razor necesita este puerto para comunicarse con sus servidores para poder identificar spam. Si no se siente cómodo con ello, el sistema trabajará sin Razor (o Pyzor en todo caso), lo cuál no es tan bueno. Una vez que se asegure de que puede comunicarse en ese puerto, checaremos si podemos conectarnos con los servidores de Razor y autoconfigurar:

razor-admin -d -create

Si todo marchó bien y configuró su firewall correctamente, recibirá razor-admin finished successfully para decirle que todo está listo y puede seguir adelante, escribiendo:

razor-admin -register

para registrar nuestra transmisión con la red Razor. Nuevamente, nuestro obediente esclavo del spam deberá contestar con su pequeña voz diciendo razor-admin finished successfully. Si alguno de estos pasos falla, revise su firewall, si todo está bien allí, sólo vuélvalo a correr, algunas veces sólo se trata de un problema temporal de conectividad.

Una vez que hayamos finalizado exitosamente, sigamos adelante para editar la configuración de Razor en el archivo /etc/razor/razor-agent.conf

Reemplace la línea

debuglevel             = 3

con

debuglevel             = 0

y añada al archivo:

razorhome = /etc/amavis/.razor

que le dice a Razor que sus archivos pueden ser encontrados en el directorio arriba señalado. Necesitamos continuar, moviendo los archivos que nuestro esclavo del spam Razor ya creó de manera predeterminada en el directorio root y moverlos a su nueva casa escribiendo

cp -r /root/.razor/ /etc/amavis/

Antes de disparar otro comando, de modo que Razor se re-configure a si mismo para usar la nueva ubicación:

razor-admin -d -create -home=/etc/amavis/.razor

Otra vez con su pequeña voz contestará razor-admin finished successfully para confirmar que la configuración fue exitosa.

Spamassassin tiene un archivo de configuración en /etc/spamassassin/v310.pre el cuál activa los complementos (plugins) a ser usados, pero debe tener ya una entrada en él sin comentario para:

loadplugin Mail::SpamAssassin::Plugin::Razor2

ya que esa sería la instalación predeterminada de Spamassassin desde los repo's - entonces de nuevo, no hace mal verificarlo sólo para estar seguros. También podría querer regresar a éste archivo cuando todo esté hecho para deshabilitar los complementos que no vayamos a usar. Con eso Razor está listo!

Instalando Pyzor

Instalar Pyzor es tan fácil como cualquier otro paquete que hayamos instalado hasta ahora. Pyzor es muy similar a Razor un servidor anti-spam y también necesita un puerto abierto para poder trabajar apropiadamente, esta vez es el Puerto UDP 24441. Una vez que esté listo y hecho, comencemos con:

sudo apt-get install pyzor

Para tener todo configurado en su sistema, corra:

pyzor discover

para conectarnos a los servidores de pyzor y para crear un archivo llamado servers en el directorio /root/.pyzor/ . Ya que Amavis necesitará tener acceso a este archivo también, lo copiaremos al directorio .pyzor que creamos primero.

mkdir /etc/amavis/.pyzor

Luego lo copiamos con:

cp /root/.pyzor/servers /etc/amavis/.pyzor/

Para revisar que todo esté funcionando bien, podemos escribir:

su amavis -c 'pyzor ping'

Que usará al usuario amavis para correr una revisión en la disposición y respuesta de los servidores Pyzor. Si Pyzor es tan obediente como Razor was responderá con su dirección IP seguida por (200, 'OK')

Esto concluye nuesta configuración para SpamAssassin y debido a que es tarde por hoy, no tenemos porque sentirnos mal si anhelamos una cerveza fría de nuestra elección u otra bebida alcohólica para celebrar una vez más - después de todo, siempre son las cinco en punto en algún lugar.

Instalando el Anti Virus ClamAV

Sí, Damas y Caballeros (si es que hay alguno y si aún sigue conmigo a estar alturas…), tenemos la línea final a la vista. Instalemos ClamAV para limpiar todos esos sucios bichillos fuera de nuestros correos electrónicos! Vamos, usted sabe lo que voy a decir, verdad?

sudo apt-get install clamav

Sí, así es, - una vez más, estamos valiéndonos de un maravillosamente pre-configurado paquete desde los repositorios!

Justo después de que podamos sumergirnos en algunas cuántas cosas que debemos hacer, hay que asegurarnos de que “clam” no sólo está en nuestra computadora y se vea realmente bien, sino que realmente haga algo por nosotros, pero para permitirle hacerlo, necesitamos asegurarnos de que el usuario clamav esté en el grupo amavis y viceversa:

sudo adduser clamav amavis
sudo adduser amavis clamav

Ahora usemos a nuestro nuevo amigo favorito Joe para editar la configuración del demonio ClamAV:

joe /etc/clamav/clamd.conf

Habrá una línea que tiene un Example (Ejemplo) en ella - puede comentarla o borrarla completamente, ya que clamd (el demonio clamav) ni siquiera correrá mientras eso esté ahí.. La línea AllowSupplementaryGroups true (PermitirGruposSuplementarios verdad) debe estar ahí y no debe ser comentado.
Sólo para asegurarnos de que amavisd-new vino pre-configurado de la manera que necesitamos (no se puede confiar en nadie estos días!), verifiquemos si es que está configurado para que enviarle email a ClamAV y recibir un certificado de salud abriendo /etc/amavisd/conf.d/15-av_scanners en nuestro editor de texto favorito (que estoy seguro que a estas alturas es Joe…) y asegurémonos de que la sección acerca de ClamAV luzca como esto:

 ### http://www.clamav.net/
 ['ClamAV-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
   qr/\bOK$/, qr/\bFOUND$/,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

Y sabe, esto es en sí todo en lo que respecta a ClamAV, antes de que avancemos hacia algunos cambios menores en la configuración.

Pasos Finales y Pruebas

 
howto/esp/email_con_filtro_de_spam_y_antivirus.txt · Last modified: 2012/05/24 07:44 by machinebacon
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported

Powered by DokuWiki. Hosted by Linode.
Copyright © 2010 CrunchBang Linux.
Proudly powered by Debian GNU/Linux.
Debian is a registered trademark of Software in the Public Interest, Inc.