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:
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.
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.
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 )
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.
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.
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.
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 |
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. |
(debera contener la direccíon de su servido de nombres y el nombre de su dominio.)
domain ctv.es nameserver 194.xxx.yyy.zzz
Fichero de firma
/\ /\ La calidad de LINUX no se discute. \\W// Su precio tampoco. Pero somos una _|0 0|_ minoria. Probemos a ser simpaticos. +-oOOO--(___o___)--OOOo--------------------------+ | .........U.U........ Antonio Castro Snurmacher | | http://slug.ctv.es/~acastro. acastro@ctv.es | +()()()----------()()()--------------------------+Es importante que las firmas no ocupen mucho.
| /usr/bin/procmailMas sobre procmail mas adelante.
Se configura desde pine. Yo tengo configurado el editor de mensajes para usar 'vi'. Y para vi tengo configurado .exrc
Para poder firmar y encriptar los mensajes usando una tecla de función.
El fichero .exrc queda como sigue a continuación.
:map [[A 1G!Gpgp -satf 2>/dev/tty :map [[B !'apgp -eatf 2>/dev/tty
Este fichero esta encriptado se inicializa solo la primera vez que un usuario utilice fetchost porque pregunta nombre de la máquina nombre del usuario, la password, y periodo de tiempo entre bajada y bajada de correo cuando esta como demonio)
Este filtro es solo un ejemplo. Si desea ver mas ejemplos y sacar mas partido a la potencia de procmail consulte la pagina man procmailex(5).
MAILDIR=$HOME/mail DEFAULT=$MAILDIR/varios VERBOSE=yes LOGFILE=$HOME/log/procmail.log :0: * ^Sender.*owner-l-linux@calvo.teleco.ulpgc.es l-linux ## Cuando dos reglas hacen blanco en el mismo mensage solo actuara la primera :0: * ^From:.*[Ll]uis.* luis :0: * (^From:|^To:|^Cc:).*[Mm]ajordomo.* majordomo :0: * (^To:|^Cc:).*acastro.* personal :0: * (^To:|^Cc:).*linux-admin@vger.rutgers.edu linux-admin :0: * (^To:|^Cc:).*@vger.rutgers.edu linux-mmm :0: * (^To:|^Cc:).*Linux-Announce@senator-bedfellow.MIT.EDU Linux-Announce :0: * (^To:|^Cc:).*linux-prog@compendium.com.ar.* linux-progPara usar procmail con fectchpop vease .forward
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) EnterFin traza> 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]#