require(".zlconfig.php"); require("$webroot/cabecera.php") ?>
$graf_titulo="$base_grafs/bita_head.png"?> require("$webroot/titulos.php") ?>Subject: Fetchmail para varios usuarios mini-como (era Re: Cuestiones de correo) > Buenas al Grupo: > Tengo alguna cuestiones que esperon me puedan ayudar ya que me tienen > muy liado: > Lo primero es sobre fetchmail: > Tengo una red donde curro de 5 puestos y cada usuario tiene su cuenta de > correo usaurio@ctv.es, por lo que he configurado un servidor Linux para > temas de Comunicaciones lo de la proxy sendmail ect.. lo tengo espero > bien configurado, lo que quiero es que cuando se ejecute el fetchmail -v > lleve a cada directorio /home/usuario/mail/ sus correo procedientes de > su cuenta de ctv: > El tema es como puedo añadir mas cuentas de correo de los demas usuarios
Se puede hacer de varias maneras, y yo me sé una que no sé si es porque la haya "parido" yo, pero me parece que es lo mejor y ortodoxo que se puede hacer para solucionar el tema.
Para empezar, yo soy de la opinión de JAMAS root debe tener un ~/.fetchmailrc. Razones pueden ser que el usuario root no necesita recoger correo remoto de ningún sitio, y para "administrar" varias cuentas, no es en absoluto necesario, como explicaré a continuación.
El primer paso es crear un una cuenta local en Linux para cada usuario que tenga correo. Por motivos de seguridad, estas contrase=F1as no deben estar en blanco, y el usuario y contraseña puestas son las que habrá que poner en el cliente de correo que se use, siendo el servidor pop (y smtp, aunque esta parte no tiene que ver con la RECOGIDA de correo) la máquina linux. A continuación, se crea un fichero .fetchmailrc POR CADA USUARIO, situado obviamente en el directorio $HOME correspondiente y con los permisos adecuados; es decir, el propietario debe ser el usuario en cuestión, y el tema de los permisos se soluciona ejecutando chmod 600 con el .fetchmailrc. Por lo tanto, si un usuario entra por telnet con su cuenta de usuario y ejecuta fetchmail, pueda recoger su correo remoto con su ~/.fetchmailrc correctamente configurado (sea una o varias cuentas, eso depende de si un usuario tiene varias cuentas remotas, cosa un poco rara, pero posible).
defaults proto pop3 # Normalmente se usa pop3 con los servidores remotos set daemon 900 # Fetchmail comprobará el servidor cada 900 segundos # flush # Descomentar para borrar los mensajes # del servidor remoto keep # Lo contrario de flush. Comentar para borrar los # mensajes del servidor una vez comprobado el # funcionamiento. fetchall poll servidor.pop.es # servidor de correo # Las comillas en "usuario_remoto" y "contraseña" # no son imprescindibles siempre, pero no hace daño ponerlas, # porque hay casos en que SI son imprescindibles. user "usuario_remoto" # nombre de usuario REMOTO. Lo proporciona el ISP. pass "contrasenya" # contraseña de la cuenta de correo to usuario_local # cuenta de usuario local.
Con esto, ya tenemos el "esqueleto" para cada cuenta de usuario. Ahora ejecutamos el siguiente código al realizar la conexión a internet (en el /etc/ppp/ip-up o de cualquier otra manera válida):
#!/bin/sh for i in $(ls -d /home/*); do if [ -f $i/.fetchmailrc ]; then h=3D$(echo $i|cut -c 7-); echo "Recogiendo correo del usuario $h..." su $h -c "fetchmail;echo Recogido correo del usuario $h" & fi done
Por supuesto, este script se puede retocar al gusto de cada uno, sobre todo los "echo", y el "&". Si en un momento determinado no se desea que fetchmail se ejecute en modo daemon (es decir, que no compruebe si hay correo en el intervalo indicado en el .fetchmailrc), se puede hacer modificando la llamada a fetchmail con "fetchmail -d0" (no lo he probado, pero así lo pone en la página man), y si es sólo uno o varios usuarios en concreto, entonces la única opción es comentar la línea correspondiente al "set daemon x" en los usuarios que corresponda.
También se pueden no poner las líneas "set daemon xxx" y forzar el intervalo con "fetchmail --daemon xxx", donde xxx son los segundos. Si existiera algún fichero con una línea "set daemon xxx", está se sustituirá por lo indicado en la línea de comandos.
Cuando finalice la conexión, ejecutar el siguiente código (en el /etc/ppp/ip-down u otro script que se ejecute):
#!/bin/sh for i in $(ls -d /home/*); do if [ -f $i/.fetchmailrc ]; then h=3D$(echo $i|cut -c 7-); # Para matar todos los daemons de fetchmail su $h -c "fetchmail --quit" # podría valer también # su $h -c "fetchmail --quit 2>/dev/null" fi done
Y eso es todo.
- Ventajas:
- Desventajas:
Espero que le sirva a alguien.
http://counter.li.org registration info --------------------------------------- Linux user: 92390 - Linux machine: 39301 |--------------------------------------------| | Oscar Manuel Gómez Senovilla | | mailto:oscar@BORRARomgs.findhere.com | | mailto:oscar@BORRARsantandersupernet.com | | (quita "BORRAR" después de @) | | (remove "BORRAR" after @) | | Madrid (España) | |--------------------------------------------|