EL otro d�a, Tue, Mar 14, 2000 at 07:41:35PM -0500, ADnoctum dijo:
> Para navegar uso lynx, para irc bitchx, y para ftp lftp. Pero el correo si
> me ha quedado grande. Leyendo y leyendo, entend�(m�s o menos) que necesito
> un MTA(exim)  un MDA(procmail) y un MUA(mutt).
Tengo un texto que escribi que te va que ni pintado es justo tu caso...
mira:
----mail.lnx-----

Como Poner a punto el env�o recepci�n de correo E en Linux
----------------------------------------------------------

A ver, pues, primero, hace falta instalar un MTA (Mail Transfer Agent) que en
este caso, adem�s, vamos a usar como MDA (Mail Delivery Agent). Tambi�n
podemos usar un programa de procesado de correo, Procmail. Y para recoger el
correo el Fetchmail.

MTA: Elegimos el Exim. �Por qu�?... Por que es peque�ito, es compatible con
sendmail (que llevan como predefinido muchas aplicaciones *nix), e incorpora
un sistema de procesado de correo tan potente como Procmail.

De todas formas tambi�n te voy a poner y explicar la configuraci�n del
Procmail por si eliges otro MTA que te gusta m�s, como por ejemplo qmail (que
tienes que compilarte t� para poder usarlo por motivos de licencia --mola--),
el smail, el sendmail original, etc... (casi todos son modificaciones sobre el
c�digo original del sendmail).

1. Configuraci�n del Exim:
--------------------------
--------------------------

Primero: si usas Debian, lo tienes MUY f�cil (�como que no usas debian!), pues
trae un script de instalaci�n que se llama con la �rden 'eximconfig' como
root. En �l, has de elegir la 2� opci�n de las 5 que te presenta al principio.
Luego te ir� pidiendo una serie de cosas:
        Dominio visible:
                El nombre de tu m�quina. Da igual cual, pues luego
                reescribiremos el campo From: de tus mensajes con el cliente
                de correo (mutt, Pine, ... etc) aunque tb se puede con el exim
                En mi caso 'gaia'
        Otros nombres de Dominio V�lidos:
                *NB* Aqu�, por algo que veremos luego, has de poner
                'localhost' (aunque luego veremos como se puede obviar esto)
        login a quien mandar el correo de root:
                Debian Policy,... pues eso. i.e. pablo con lo que se lo
                mandar� a '[EMAIL PROTECTED]'
        Filtros Spam:
                mejor no... luego veremos como filtrar el spam con el
                procmail. Aunque, si te bombardean a spam, pues igual.
        SMTP:
                Servidor saliente por el cual enviar el correo. Es decir, el
                SMTP que te suministra tu proveedor (o Jazztel..., por ejemplo)
                B�sicamente has de tener el mismo login y passwd en el SMTP
                que para conectarte a INET.
        Relay   
                Dominios para los que recogemos correo (en principio NO)
        etc...
                Creo que ya, pero por si acaso... De todas formas, el script
                viene muy explicado y el archivo de configuraci�n que te
                genera /etc/exim.conf, est� FUERTEMENTE comentado.

MI /etc/exim.conf (sin los comentarios ni espacios)
-----------------
qualify_domain = gaia
local_domains = gaia.casa:localhost:gaia
local_domains_include_host = true
local_domains_include_host_literals = true
never_users = root
host_lookup_nets = 0.0.0.0/0
sender_host_reject_relay = *
trusted_users = mail
smtp_verify = false
gecos_pattern = ^([^,:]*)
gecos_name = $1
received_header_text = "Received: \
          ${if def:sender_fullhost {from ${sender_fullhost} \
          ${if def:sender_ident {(${sender_ident})}}\n\t}\
          {${if def:sender_ident {from ${sender_ident} }}}}\
          by ${primary_hostname} \
          ${if def:received_protocol {with ${received_protocol}}} \
          (Exim ${version_number} #${compile_number} (Debian))\n\t\
          id ${message_id}"
end
local_delivery:
  driver = appendfile
  group = mail
  mode = 0660
  mode_fail_narrower = false
  file = /var/spool/mail/${local_part}
address_pipe:
  driver = pipe
  return_output
address_file:
  driver = appendfile
address_directory:
  driver = appendfile
  no_from_hack
  prefix = ""
  suffix = ""
# maildir_format
address_reply:
  driver = autoreply
remote_smtp:
  driver = smtp
end
real_local:
  prefix = real-
  driver = localuser
  transport = local_delivery
system_aliases:
  driver = aliasfile
  file = /etc/aliases
  search_type = lsearch
userforward:
  driver = forwardfile
  no_verify
  check_ancestor
  file = .forward
  modemask = 002
  filter
localuser:
  driver = localuser
  transport = local_delivery
end
smarthost:
  driver = domainlist
  transport = remote_smtp
  route_list = "* smtp.iddeo.es bydns_a"
end
*                      *           F,2h,15m; G,16h,2h,1.5; F,4d,8h
end
--------------------------
Fin de mi /etc/exim.conf
--------------------------

Arranque autom�tico del exim
-----------------------------
        En principio, el exim no est� corriendo siempre. El servidor no est�
atento siempre. Sin embargo, para nuestros prop�sitos, nos interesa. Esto se
puede hacer de dos formas:
        1. Mediante el script de /etc/init.d
                se edita /etc/init.d/exim y se comenta la linea que pone 
                'exit 0'. Se arranca con "./exim start" estando en /etc/init.d
        2. Desde inetd, con la consiguiente mejora de seguridad y carga
                se descomenta la l�nea del /etc/inetd.conf siguiente:

        smtp            stream  tcp     nowait  mail    /usr/sbin/exim exim -bs

        Desde mi punto de vista (y as� lo tengo) es mejor la segunda opci�n.
De esa forma, dispones de un TCP Wrapper para proteger la conexi�n al puerto
SMTP en Inet (el puerto 25), mediante los archivos /etc/hosts.allow y
/etc/hosts.deny. 

Salida de correo
----------------
Con esta configuraci�n, el correo saliente se queda en cola hasta que te
conectes a inet, que se limpia la cola, mandando tus mensajes a tu SMTP. Esto
se hace autom�ticamente mediante el script que se te instala en
/etc/ppp/ip-up.d/exim

2. Configuraci�n y Automatizaci�n del Fetchmail
-----------------------------------------------
-----------------------------------------------
        
        La parte de filtrado/procesado de mensajes mediante el exim la dejar�
para m�s adelante. Aqu� voy a explicar como configurar el fetchmail para
recoger tu correo de todas las cuentas que tengas por Inet, y hacerlo de
formas autom�tica cada vez que te conectes a Inet.
        Primero necesitas el fetchmail, claro. Trae un programa para las X
para configurarlo. Recomiendo verlo, por lo menos. De todas formas, voy a
explicar lo m�nimo. Este es un archivo de configuraci�n base, donde omito mis
login y passwd y los reemplazo con XXXX:
        Esta configuraci�n le pasa todos los mensajes al MTA que tengas.
Tambi�n puedes pas�rselo directamente a otro MDA, como por ejemplo procmail,
con una l�nea del tipo:
        mda "/usr/bin/procmail -d %s"
despu�s de la opci�n fetchall en el archivo de configuraci�n.
        

~/.fetchmailrc
--------------
# Configuraci�n del Fetchmail 4.6.4
# Daniel Payno. <[EMAIL PROTECTED]>

set postmaster "postmaster"
set syslog
defaults
        timeout 450
        protocol POP3
        pass8bits
#       mimedecode
#       keep
        flush
        fetchall

poll  alumnos.uc3m.es with proto IMAP
       user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll pop.iddeo.es
        user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll pop.mail.yahoo.com 
       user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll gul.aig.uc3m.es
        user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll rax.uax.es 
        user "XXXXXXX" there with password "XXXXXXX" is daniel here
----------------------
Fin de ~/.fetchmailrc
----------------------

Con este archivo, una vez que estes conectado, ejecutas fetchmail, y te
bajar�s el correo. Para probar, hasta que veas que funciona, descomenta lo de
keep, y no te borrar� los mensajes del servidor.
Ahora bien, queremos la soluci�n general, as� que
escribimos un archivo de configuraci�n similar, pero para recoger el correo de
otro usuario de la m�quina, por ejemplo un hermano, y lo guardamos como
/etc/fetchmailrc

/etc/fetchmailrc
----------------
# Configuraci�n del Fetchmail 4.6.4
# Daniel Payno. <[EMAIL PROTECTED]>
# configuraci�n para llamar al fetchmail en un script sysV
# /etc/fetchmailrc
set postmaster "postmaster"
set invisible
#set properties ""
set daemon 300
set syslog
defaults
        interface ppp0/62.0.0.0/255.0.0.0
        monitor ppp0 
        timeout 450
        protocol POP3
        pass8bits
#       mimedecode
#       keep
        flush
        fetchall
#Isabel
poll pop1.nettaxi.com 
         user "XXXXXXX" there with password "XXXXXXX" is isabel here
poll pop.iddeo.es
######  Yo ... [EMAIL PROTECTED]
        user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll pop.mail.yahoo.com  
       user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll alumnos.uc3m.es 
       user "XXXXXXX" there with password "XXXXXXX" is daniel here
poll rax.uax.es 
        user "XXXXXXX" there with password "XXXXXXX" is daniel here
------------------------
Fin de /etc/fetchmailrc
------------------------

Aqu� hay tres l�neas totalmente nuevas. Primero, la que dice que se ejecute
como demonio. Segundo, dos opciones para regular ese demonio y que realmente
no busque al servidor m�s que cuando estemos conectados a Inet. Mi proveedor
me asigna din�micamente una IP del tipo 62.x.x.x cada vez que me conecto. Con
las l�neas interface y monitor, si no est� el ppp0 arriba y con esa IP
asignada, el fetchmail no inicica la recogida.
Ahora queremos que este demonio se inicie en el arranque siempre. Pues bien,
hacemos un script en /etc/init.d y le creamos un enlace para el runlevel por
defecto (en debian, el 2)

/etc/init.d/fetchmail:
---------------------
#!/bin/bash
#/etc/init.d/fetchmail
#
# Este script arranca el fetchmail al inicio del sistema
# Para ello usa la configuraci�n contenida en /etc/fetchmailrc
# lanzando un demonio..
#
# Daniel Payno <[EMAIL PROTECTED]>

echo -n "Arrancando el fetchmail en modo demonio."
fetchmail -v -f /etc/Fetchmailrc
echo "..hecho"

----------------------------
Fin de /etc/init.d/fetchmail
----------------------------

Y el enlace en /etc/rc2.d:
---ls -l /etc/rc2.d ----
sh-2.01$ ls -l /etc/rc2.d/S21f*
lrwxrwxrwx   1 root     root           21 jul 31  1999 /etc/rc2.d/S21fetchmail
-> /etc/init.d/fetchmail 
------------------------

Por si quieres asegurarte de que se ejecute cuando te conectas a Inet, le
puedes 'dar un toque' para que se despierte, guardando el siguiente script
(chmod +x) en /etc/ppp/ip-up.d

/etc/ppp/ip-up.d/fetchmail
----------------------------
#!/bin/sh
if [ -f /etc/fetchmailrc ]; then
        fetchmail 
fi
-----------------------------

Para ver la salida del fetchmail, lo puedes ver en la xconsole.


3. Filtrado y Procesado de Correo
---------------------------------
---------------------------------

1. Mediante el Exim
-------------------
El exim dispone de un tipo especial de archivo ~/.forward, con una sintaxis
determinada, que filtra el correo. Existe un tutorial sobre dicha sintaxis en
la direcci�n http://www.exim.org

Por ejemplo, este es mi archivo .forward: (en mi caso es bastante largo)

~/.forward
------------
# Exim Filter
####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####
#### Archivo de Filtros de Exim para procesar el Correo y repartirlo    #####
#### entre distintos buzones locales de correo                          #####
####                                                                    #####
#### Daniel Payno, [EMAIL PROTECTED]                                    #####
####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####

if error_message then finish endif

logfile /home/daniel/exim.log

if $header_subject: contains "Daily E-Mail Activity Report"
then 
        save $home/correo/eximlogs

        
elif $header_subject: contains "Calendar"
then 
        save $home/correo/fechas

elif $header_X-Mailer: contains "Aureate Group Mail Free Edition" or
     $header_X-Mailer: contains "Ellipse Bulk Emailer" or
     $header_X-Mailer: contains "Multimailer" or
then
        save $home/correo/spam
        #seen finish ## esto se lo carga directamente > /dev/null

elif $header_to: contains "root@"
then 
        save $home/correo/root


elif $header_to: contains "edison_survive" or
     $header_cc: contains "edison_survive" or
     $header_bcc: contains "edison_survive"
then 
        save $home/correo/edison_survive


elif $header_to: contains "edison_tecnicos" or
     $header_cc: contains "edison_tecnicos" or
     $header_bcc: contains "edison_tecnicos" 
then 
        save $home/correo/edison_tecnicos


elif $header_to: contains "edison_linux" or
     $header_cc: contains "edison_linux" or
     $header_bcc: contains "edison_linux"
then 
        save $home/correo/edison_linux


elif $header_to: contains "[EMAIL PROTECTED]" or 
     $header_cc: contains "[EMAIL PROTECTED]"
then 
        save $home/correo/gul


elif $header_to: contains "rax@" or 
     $header_cc: contains "rax@" or
     $header_from: contains "rax@" or
     $header_reply-to: contains "rax@"
then 
        save $home/correo/rax


elif $header_to: contains "raxi@" or 
     $header_to: contains "[EMAIL PROTECTED]" 
then 
        save $home/correo/RAXi


elif $header_to: contains "raxe@" or 
     $header_cc: contains "raxe@"
then 
        save $home/correo/RAXe


elif $header_to: contains "raxu@" or 
     $header_cc: contains "raxu@"
then 
        save $home/correo/RAXu


elif $header_from: contains "[EMAIL PROTECTED]"
then
        save $home/correo/listbot_Info


elif $header_to: contains "@abcnet.es" or 
     $header_from: contains "@abcnet.es" 
then 
        save $home/correo/abc-linux


elif $header_to: contains "hopgoblins@"
then 
        save $home/correo/hopgoblins


elif $header_from: contains "@hispasec.com"
then 
        save $home/correo/hispasec


elif $header_to: contains "[EMAIL PROTECTED]" or 
     $header_cc: contains "[EMAIL PROTECTED]"
then
        save $home/correo/SoBre


elif $header_to: contains "@lists.debian" or 
     $header_cc: contains "@lists.debian"
then
        save $home/correo/debian

else
        save $home/correo/entrada
endif
------------------
Fin de ~/.forward
------------------

Con esto, el correo que el fetchmail le pasa al MTA se distribuye localmente
en los archivos de $home/correo. Es importante que el archivo empieze
exactamente con la primera l�nea, para que el Exim sepa que lleva reglas de
procesado.

2. Mediante el procmail
-----------------------
Si no usas exim, puedes hacer lo mismo con el procmail. En ese caso, el
.forward deber� contener la siguiente l�nea

----~/.forward------
"|exec /usr/bin/procmail"
----~/.forward------

A no ser que llames al procmail directamente desde el archivo de configuraci�n
del fetchmail, como hemos visto antes. El procmail guarda las normas de
filtrado en un archivo llamado ~/.procmailrc. 

~/.procmailrc 
-------------
# Archivo de Configuraci�n del Procmail para procesar el correo
# Daniel Payno, <[EMAIL PROTECTED]>

PATH=/usr/bin:/home/daniel/bin:/bin:/usr/local/bin:.
MAILDIR=/var/spool/mail
DEFAULT=/home/daniel/correo/entrada
LOGFILE=$HOME/procmail.log
LOCKFILE=$HOME/.lockmail
VERBOSE=NO

:0
*(^From|^To|^Cc|^Reply-To).*([EMAIL PROTECTED]|[EMAIL PROTECTED])
/home/daniel/correo/rax           #El correo del Rax a su carpeta

:0
*(^To|^Cc).*(gul)+
/home/daniel/correo/gul         

:0
*^(To|Cc|Bcc|From):.*edison_survive.*
/home/daniel/correo/edison_survive

:0
*^(To|Cc|Bcc|From):.*edison_tecnicos.*
/home/daniel/correo/edison_tecnicos

:0
*(^To|^From)[EMAIL PROTECTED]
/home/daniel/correo/abc-linux      

:0
*^To.*(hopgoblins@(yahoo.com|geocities.com))
/home/daniel/correo/hopgoblins

:0
*^From:[EMAIL PROTECTED]
/home/daniel/correo/hispasec

:0
*^To.*([EMAIL PROTECTED]|[EMAIL PROTECTED])+
/home/daniel/correo/RAXi

:0
[EMAIL PROTECTED]
/home/daniel/correo/RAXe

:0
[EMAIL PROTECTED]
/home/daniel/correo/RAXu

:0
*^(To|Cc)[EMAIL PROTECTED]
/home/daniel/correo/SoBre

:0
[EMAIL PROTECTED]
/home/daniel/correo/listbot_Info

:0
*^Subject.*Daily E-Mail Activity Report
/home/daniel/correo/eximlogs

:0
*^From.*(Reminder Service)
/home/daniel/correo/fechas

:0
*(^To|^Cc).*debian.org
/home/daniel/correo/debian           #Cosas de Debian

:0
*(^To|^Cc).*(mutt)+
/home/daniel/correo/mutt           #Lista de usuarios de Mutt y anuncios


### Anti-SPAM
:0:
* ^X-Mailer.*MultiMailer
/dev/null
       
:0:
* ^X-Mailer:.\Aureate\ Group\ Mail\ Free\ Edition.*$
/dev/null

:0:
* X-Mailer:.\Ellipse\ Bulk\ Emailer\ v2.0.*$
/dev/null
       
# Anything that has not been delivered by now will go to $DEFAULT
# using LOCKFILE=$DEFAULT$LOCKEXT

---------------------
Fin de ~/.procmailrc 
---------------------

Como v�is, se puede hacer exactamente lo mismo con el exim que con el
procmail.

4. MUA. El Cliente de Correo y tu direcci�n de correo verdadera
----------------------------------------------------------------
----------------------------------------------------------------
        Como es normal, tu direcci�n de correo no tendr� nada que ver con tu
[EMAIL PROTECTED] de tu casa. Pero claro, tu quieres que tus mensajes lleguen,
�n�?... Bueno entonces necesitas: a) un cliente que te permita definir tu
campo From: (cualquiera decente: pine, mutt (��este!!), netscape, kmail...)
b) reescribir las cabeceras en el MTA (se puede con el exim)
        Aqu� comento la primera opci�n. En clientes como netscape, kmail,
etc... esto ya lo haces cuando configuras el programa. En el Pine, has de
buscarlo dentro del archivo de configuraci�n que se lanza con la tecla 'C'.
        En el mutt has de incluir algo as� en tu archivo .muttrc de
configuraci�n. Aprovecho para recomendar el mutt como cliente de correo por su
potencia, colorines, soporte para hilos de conversaci�n (muy �til si est�s
suscrito a alguna lista de correo, como la del gul), integraci�n MIME (te
llama a los programas necesarios para ver los adjuntos --fotos .jpg, por
ejemplo-- seg�n la entrada del /etc/mailcap --te permite ver mensajes en html
llamando din�micamente al lynx--), integraci�n PGP/GPG... etc...

$/.muttrc
---------
[....]
set hdrs
# Cabeceras definidas por el usuario

my_hdr From: Daniel Payno <[EMAIL PROTECTED]>
my_hdr Reply-to: Daniel Payno <[EMAIL PROTECTED]>
my_hdr X-Editor: Vim 5.3
my_hdr X-DSA/ElGamal-KeyID: 0xEC1EBDC6
my_hdr X-Operating-System: `uname -a`
[....]
Fin de $/.muttrc
----------------

Como v�is, pod�is reescribir muchas cabeceras del mensaje.


Bueno, y esto es todo. Si ten�is alguna duda, o quer�is mi configuraci�n del
mutt, por ejemplo, no ten�is m�s que enviar un mensaje, a m� o a la lista del
gul....

Espero que os sea �til, y me perdon�is lo largo del mensaje.

-- 
             _
            |_)_.              [EMAIL PROTECTED]
            | (_|\/            [EMAIL PROTECTED]
                 /

...Linux Powered!


----mail.lnx-----


-- 
73's
        Daniel Payno
        [EMAIL PROTECTED]

        Visita nuestro FTP ftp://ftp.gul.uc3m.es (en pruebas)

Responder a