Faq general de Slug Contenidos

3.2 Conexión a Internet desde Linux (con o sin infovía)
y configuracion del correo en Linux



INTRODUCCION

Esta FAQ esta realizada por Antonio Castro en base a su propia configuración, lo cual puede no ser igual de util para todo el mundo, pero permite exponer un caso concreto en detalle.

No soy un experto en la materia pero con los procedimientos que en su día publico Luis Colorado para conectarse a traves de infovía http://slug.ctv.es/cont/infovia/linux-cpi.html conseguí conectarme enseguida y luego he ido tocando cosillas.
Particularmente he llegado a configurar mi equipo de una manera bastante aceptable que me permite una comoda gestion del correo.

Una sesión tipica con el correo puede ser la siguiente:

  1. Me conecto a mi centro proveedor.
  2. El correo se distribuye en carpetas gracias a un filtro procmail.
    El procedimiento de carga del correo me muestra las carpetas que han cambiado.
  3. Atiendo en primer lugar los mensajes personales, y contesto inmediatamente lo que sea necesario.
  4. Como no he cortado la conexión lo que envío sale inmediatamente, por la linea.
  5. Corto la comunicación.
  6. Continuo leyendo los demas mensajes fuera de linea.
  7. Los mensajes que decido contestar quedaran esta vez encolados automaticamente al no existir ya conexión.
  8. Por último me conecto nuevamente con el fin de enviar los mensajes acumulados en el buzón de salida.

Como este comportamiento parece razonable expongo en detalle todos los ficheros Es una solución particular, en concreto la mia y estoy seguro sera de gran ayuda para todo aquel que ande mas despistado que yo. :-)

Quizas alguien se pregunte porque se trata conjuntamente el tema de la conexión y el tema del correo. En primer lugar ambos temas son bastante delicados y muy necesarios. Y en segundo lugar porque estan parcialmente relacionados.


INDICE

Con todo lo que viene a continuación se dará respuesta a unas cuantas preguntas relacionadas con estos temas:

La presente propuesta se resume en una serie de ficheros. Algunos son ficheros de configuración del sistema ppp otros son de configuración del usuario de correo y otros son shells que deberan ser ejecutadas desde root o desde el usuario de correo.


OTROS DOCUMENTOS

Además puede consultar otros documentos como los man relativos a los comandos que vamos a usar aqui.

Para conectarme a internet y para gestionar el correo uso lo siguiente:

/
ppp
pppd(8)
(Point to Point Protocol)
procmail(1)
procmailex(5)
Para filtar el correo y procesarlo.
(Por ejemplo separarlo en carpetas )
fetchpop(1L) Para bajar el correo borrandolo en el servidor y
clasificarlo usando procmail
pine(1) Para gestion del correo y de las News
pgp -h
pgp -k
(Private Good Privacy)
Criptografia de clave publica.
sendmail(8) Para el transporte de correo.

Algunos documentos relativos a este tema ya han sido traducidos al Español.

INSFLUG (Traduce documentos breves como Howtos y Faqs)
LuCas (Traduce libros, y guias )

Enlaces interesantes

Traducciones de Faqs y Howtos realizadas por el grupo INSFLUG
Entre estas ultimas estan Noticias-Como, PPP-Como, Infovia-Como.

Esta ultima merece una referencia especial.

Guia rapida de conexión (con y sin infovía usando ppp)
Por Francisco Jose Montilla (pacopepe@nova.es)

La parte de conexión directa (sin infovia) la he sacado entera de aqui y no la he podido probara siquiera, porque mi centro proveedor solo es accesible atraves de invofía. En cambio para la parte de conexión a infovía he utilizado los procedimientos que en su dia publico Luis Colorado para conectarse a traves de infovía. http://slug.ctv.es/cont/infovia/linux-cpi.html
Para preguntas complicadas sobre estos temas creo que es mejor que recurrais a Luis Colorado trabaja en Telefónica de sistemas y fué la primera persona de la que yo tuve noticia que había conseguido este tipo de conexión. Yo soy un aprendiz.

Entre los Manuales de LuCAS Tenemos la versión alpha de la traducción de Linux'Network Administration Guide Coordinada por Juan Jose Amor.


REQUISITOS

El kernel debe estar compilado con soporte para ppp, y TCT/IP.

Como orientación para una persona que empieza que solo quiere usar cosas normalitas para acceder a internet para su uso personal puede usar lo siguiente:

Networking support (CONFIG_NET) [y] y
TCP/IP networking (CONFIG_INET) [y] y
IP forwarding/gatewaying (CONFIG_IP_FORWARD) [n] n
IP multicasting (CONFIG_IP_MULTICAST) [n] n
IP firewalling (CONFIG_IP_FIREWALL) [n] n
IP accounting (CONFIG_IP_ACCT) [n] n
PC/TCP compatibility mode (CONFIG_INET_PCTCP) [n] n
Reverse ARP (CONFIG_INET_RARP) [n] n
Assume subnets are local (CONFIG_INET_SNARL) [y] y
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n] n
The IPX protocol (CONFIG_IPX) [n] n
Network device support? (CONFIG_NETDEVICES) [y] y
Dummy net driver support (CONFIG_DUMMY) [n] n
SLIP (serial line) support (CONFIG_SLIP) [y] n
CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [y] y
16 channels instead of 4 (SL_SLIP_LOTS) [n] n
PPP (point-to-point) support (CONFIG_PPP) [y] y
PLIP (parallel port) support (CONFIG_PLIP) [n] n

La compilacion de un kernel se sale un poco de este tratado. Crear un kernel nuevo es muy facil pero recuerde que SIEMPRE debe permitir arrancar con el kernel antiguo por si algo sale mal.


UN CASO REAL

Puesto que todo esta basado en mi propio caso particular hay que tomarlo como un ejemplo donde cada cual tendrá que realizar sus pequeñas adaptaciones:

Donde vea 'acastro' sustituya por su nombre de usuario. Deberá tener una cuenta en susistema que coincida con el nombre de usuario de correo. Nunca use el correo desde root, porque la respuesta podría llegar a un root que no es usted.
Donde vea 'ctv' ponga el nombre de su centro proveedor internet.
Donde vea 'ctv.es' ponga el nombre y dominio de su centro proveedor internet.
Donde vea 'midas' ponga el nombre de su máquina.
Donde vea 'sandra' ponga el nombre de su servidor de correo.
Donde vea 'password' ponga su palabra clave para el correo.


COMANDOS A EJECUTAR DESDE ROOT

Los comandos que proponemos usar a continuación deben ejecutarse siempre desde la cuenta de root.

/usr/local/bin/ctv Permite conectar con CTV (mi CPI)
atraves de infovía
/usr/local/bin/upcremote Permite conexion directa con un CPI sin infovía.
(Yo no lo he probado). Vease la
Guía rápida de conexión de pacopepe@nova.es
/usr/local/bin/killppp Para desconectar


COMANDOS A EJECUTAR DESDE EL USUARIO

Correo en Linux

Desde la cuenta de usuario personal se propone el uso de los siguientes comandos.

/usr/local/bin/traecorreo Traer el correo usando procmail y borrando los mensajes
recibidos en el servidor remoto (Usa fetchpop -pr)
mailq Consultar la cola de salida de correo.
sendmail -q Forzar el envío de correo pendiente
(vaciar la cola de salida de correo)
pine Gestor de correo.
pgp (Private Good Privacy)
Sistema de criptografía de clave pública.


CONTENIDO DE LOS DIFERENTES FICHEROS


PERSONALIZACION DEL ENTORNO (/home/acastro/.*)


TRANSPORTE DEL CORREO CON SENDMAIL.


Estas modificaciones en sendmail.cf me las facilito Luis Colorado. Las pongo porque a muchos les puede servir para su propio caso.
Tengo las siguientes direcciones de correo:
acastro@midas.ctv.es En la máquina de mi casa.
acastro@sandra.ctv.es En el servidor de correo de mi CPI.
acastro@sag.es En el trabajo.
acastro@slug.ctv.es En Slug.


/etc/sendmail.cf

Este fichero tiene una estructura muy complicada, que no es facil entender. Solo se muestran tres cambios efectuados en el fichero original de sendmail.cf (generalmente las distribuciones proporcionan un fichero sendmail.cf que funciona. Solo hay que tocarlo un poco).
Concretamente Cwlocalhost, DS, y DM

Cwlocalhost midas midas.ctv.es

# "Smart" relay host (may be null)
DSsandra.ctv.es

# who I masquerade as (null for no masquerading) (see also $=M)
DMctv.es

Ojo para la máquina de casa 'midas' hemos tenido la precaucion de usar un dominio que existe, porque sino no se podria mandar por un dominio inexistente.
No se envía al destino sino a Sandra porque así no se bloquea el pine. Si estamos conectados lo enviará online, y si no lo deja encolado. Sandra no reconocera la máquina 'midas' por lo que dejará el correo allí por un tiempo y seremos nostros los que nos conectaremos para traernos ese correo.
Dado que la máquina midas.ctv.es no existe enmascaramos ctv.es
La filosofía general del correo es que un mensaje es un objeto que se desplaza por si mismo. Si el dominio al que va dirigido es conocido viajará hasta allí, si dentro de ese dominio la máquina es conocida viajará hasta ella, pero en caso contrario quedara por un tiempo esperando que alguien lo recoja.
Para el ejemplo vamos a suponer que intercambio correspondencia con un amigo que esta dado de alta en el mismo centro proveedor que yo. Curiosamente se llama Angel Castro pero yo llegue primero y a el le negaron el nombre de 'acastro' su nombre para el correo es 'angel' y su máquina tiene un nombre proporcionado por CTV por ejemplo 'x5555' Esto es asi porque el solicito una cuenta especial con direccion IP fija mas cara.
Asi pues cuando le escribo mando los mensajes a 'angel@x5555.ctv.es'.
En un mismo dominio no deberia existir dos usuarios con el mismo nombre si no tienen nombre de máquina valida en internet, lo cual supone tener direccion IP fija.
De la forma que tengo configurado mi sendmail mis mensajes salen con el campo from correcto porque CTV no tiene un usuario acastro que no sea yo. (He usado el mismo nombre de usuario acastro en todas las máquinas donde uso correo). Supongamos que mi mujer tiene cuenta en mi máquina (pilar@midas.ctv.es) y que envía un mensaje por internet. Dado que la única cuenta que tengo en CTV es la de acastro, su mensaje no podría salir como de pilar@ctv.es. Para eso tendría que haber reservado el nombre de pilar como cuenta de ctv. Tampoco puede salir como pilar@midas.ctv.es, porque midas.ctv.es no es una máquina oficial de internet.
Mi amigo Angel tiene un ordenador en su casa de Madrid y una cuenta en CTV pero su situación es distinta ya que tiene asignada una dirección IP fija, por ello su mujer si podría enviar correo con una cuenta creada en la máquina de Angel porque el nombre de la máquina de Angel no es algo ficticio.
Si yo pido a mi amigo Angel que me habra una cuenta en su máquina y envío desde ella un mensaje como acastro@ctv.es, la respuesta me llegara a mi cuenta de ctv, pero si lo hago como acastro@x5555.ctv.es, la respuesta, llegará a mi cuenta en el ordenador de Angel.
Si mi amigo Angel tuviera una cuenta normalita en CTV del mismo tipo que yo. Cada vez que se conectara tendría una dirección IP distinta y por lo tanto el nombre de su máquina no sería un nombre valido en internet y podría ser cualquiera. Por ejemplo angelix.ctv.es.
En esta otra situación si yo enviara desde ella un mensaje como acastro@ctv.es o como acastro@angelix.ctv.es llegaría en ambos casos a CTV y allí al ser correo para acastro de una máquina desconocida en el dominio ctv.es sería recogida por mi máquina midas@ctv.es.
Esta es la diferencia en cuanto a correo de tener una dirección internet válida (y fija) o no.
Hay que observar que en el caso de máquinas como 'midas' o 'angelix' que cada vez que se conectan tienen una direccion IP distinta el correo viaja hasta el servidor de correo de CTV 'sandra' porque alli ya no sabe continuar y por eso hay que solicitarlo. Pero en el caso de una direccion IP fija el nombre de máquina es un nombre de máquina valido en internet y el correo viajara solito hasta su destino.
Usaremos sendmail como un demonio (opcion -bd), pondremos que gestione la cola de salida cada 2 minutos. (opcion -q2m). Cuando queramos que envie el correo inmediatamente podemos hacer 'sendmail -q' aunque este arrancado como demonio. Esto vacia la cola de mensajes enviando el correo pendiente.

El sendmail tiene un modo debug "sendmail -bt"
Ponemos el resultado de unas cuantas para ver como funciona, el disfraz de 'ctv.es' (enmascaramiento sonaba muy feo :-) ).

Comienzo ejemplo de traza
[root@midas /root]# sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter  
> 3,0 acastro rewrite: ruleset 3 input: acastro rewrite: ruleset 96 input: acastro rewrite: ruleset 96 returns: acastro rewrite: ruleset 3 returns: acastro rewrite: ruleset 0 input: acastro rewrite: ruleset 98 input: acastro rewrite: ruleset 98 returns: acastro rewrite: ruleset 0 returns: $# local $: acastro > 3,0 acastro@ctv.es rewrite: ruleset 3 input: acastro @ ctv . es rewrite: ruleset 96 input: acastro < @ ctv . es > ctv.es: Name server timeout rewrite: ruleset 96 returns: acastro < @ ctv . es > rewrite: ruleset 3 returns: acastro < @ ctv . es > == Ruleset 3,0 (3) status 75 rewrite: ruleset 0 input: acastro < @ ctv . es > rewrite: ruleset 98 input: acastro < @ ctv . es > rewrite: ruleset 98 returns: acastro < @ ctv . es > rewrite: ruleset 95 input: < sandra . ctv . es > acastro < @ ctv . es > rewrite: ruleset 95 returns: $# relay $@ sandra . ctv . es $: acastro < @ ctv . es > rewrite: ruleset 0 returns: $# relay $@ sandra . ctv . es $: acastro < @ ctv . es > > 3,0 acastro@midas.ctv.es rewrite: ruleset 3 input: acastro @ midas . ctv . es rewrite: ruleset 96 input: acastro < @ midas . ctv . es > rewrite: ruleset 96 returns: acastro < @ localhost . ctv . es . > rewrite: ruleset 3 returns: acastro < @ localhost . ctv . es . > rewrite: ruleset 0 input: acastro < @ localhost . ctv . es . > rewrite: ruleset 98 input: acastro < @ localhost . ctv . es . > rewrite: ruleset 98 returns: acastro < @ localhost . ctv . es . > rewrite: ruleset 95 input: < sandra . ctv . es > acastro < @ localhost . ctv . es . > rewrite: ruleset 95 returns: $# relay $@ sandra . ctv . es $: acastro < @ localhost . ctv . es . > rewrite: ruleset 0 returns: $# relay $@ sandra . ctv . es $: acastro < @ localhost . ctv . es . > > 3,0 acastro@slug.ctv.es rewrite: ruleset 3 input: acastro @ slug . ctv . es rewrite: ruleset 96 input: acastro < @ slug . ctv . es > rewrite: ruleset 96 returns: acastro < @ slug . ctv . es . > rewrite: ruleset 3 returns: acastro < @ slug . ctv . es . > rewrite: ruleset 0 input: acastro < @ slug . ctv . es . > rewrite: ruleset 98 input: acastro < @ slug . ctv . es . > rewrite: ruleset 98 returns: acastro < @ slug . ctv . es . > rewrite: ruleset 95 input: < sandra . ctv . es > acastro < @ slug . ctv . es . > rewrite: ruleset 95 returns: $# relay $@ sandra . ctv . es $: acastro < @ slug . ctv . es . > rewrite: ruleset 0 returns: $# relay $@ sandra . ctv . es $: acastro < @ slug . ctv . es . > > 3,0 acastro@sag.es rewrite: ruleset 3 input: acastro @ sag . es rewrite: ruleset 96 input: acastro < @ sag . es > sag.es: Name server timeout rewrite: ruleset 96 returns: acastro < @ sag . es > rewrite: ruleset 3 returns: acastro < @ sag . es > == Ruleset 3,0 (3) status 75 rewrite: ruleset 0 input: acastro < @ sag . es > rewrite: ruleset 98 input: acastro < @ sag . es > rewrite: ruleset 98 returns: acastro < @ sag . es > rewrite: ruleset 95 input: < sandra . ctv . es > acastro < @ sag . es > rewrite: ruleset 95 returns: $# relay $@ sandra . ctv . es $: acastro < @ sag . es > rewrite: ruleset 0 returns: $# relay $@ sandra . ctv . es $: acastro < @ sag . es > > 3,1,11,4 acastro rewrite: ruleset 3 input: acastro rewrite: ruleset 96 input: acastro rewrite: ruleset 96 returns: acastro rewrite: ruleset 3 returns: acastro rewrite: ruleset 1 input: acastro rewrite: ruleset 1 returns: acastro rewrite: ruleset 11 input: acastro rewrite: ruleset 51 input: acastro rewrite: ruleset 51 returns: acastro rewrite: ruleset 61 input: acastro rewrite: ruleset 61 returns: acastro < @ *LOCAL* > rewrite: ruleset 94 input: acastro < @ *LOCAL* > rewrite: ruleset 94 returns: acastro < @ midas . ctv . es . > rewrite: ruleset 11 returns: acastro < @ midas . ctv . es . > rewrite: ruleset 4 input: acastro < @ midas . ctv . es . > rewrite: ruleset 4 returns: acastro @ midas . ctv . es > [root@midas /root]#
Fin traza

Faq general de Slug Contenidos