Caso: Correo por cada actualización
Aprovechando la capacidad de CVS de ejecutar un script cuando actualiza la bitácora y el script
syncmail, es posible configurar CVS para que por cada actualización (
commit) envíe un correo a una dirección electrónica. Para esto haga
checkout del directorio
CVSROOT de su repositorio :
cvs co CVSROOT
En ese directorio copie el archivo syncmail que podrá descargar de: http://cvs-syncmail.sourceforge.net y después ejecute:
chmod +x syncmail
cvs add syncmail
Después agregue al archivo
checkoutlist la línea:
syncmail
actualice:
cvs commit -m "Ahora usa syncmail"
y finalmente edite y actualice el archivo
loginfo, agregando líneas como la siguiente:
^mimodulo $CVSROOT/CVSROOT/syncmail %{sVv} pablo@micolegio.edu.co que indican que toda actualización al módulo
mimodulo, debe generar un correo indicando el cambio a pablo@micolegio.edu.co. La primera parte de la línea (
^mimodulo) es una expresión regular que se aplicará al módulo o puede ser
DEFAULT para indicar cualquier módulo.
Servicio de correo
Nombre del protocolo para transmisión de correo electrónico en Internet.
Sigla para el tipo de programas que pueden transmitir un correo (por ejemplo exim y sendmail).
Sigla para el tipo de programas que un usuario puede emplear para redactar y leer correos (por ejemplo mail y mutt).
El servicio de correo empleado en Internet y en una red TCP/IP se basa en el protocolo SMTP (
Simple Mail Transfer Protocol) descrito especialmente en los RFCs 821 y 1123, funcionando sobre TCP/IP. En una situación típica en la que un usuario juan@primaria2.micolegio.edu.co envía un mensaje al usuario pablo@bachillerato3.micolegio.edu.co sin computadores intermediarios, se requiere:
- Que haya conexión física y a nivel de TCP/IP entre ambos computadores.
- Que ambos computadores tengan un programa que permita enviar y recibir correo usando el protocolo SMTP, como por ejemplo exim, sendmail o postfix (a tal programa se le llama MTA - Mail Transport Agent).
- Que ambos usuarios tengan un programa con el que puedan leer y redactar correos, como por ejemplo mail, mutt, elm, balsa, pine, evolution (a ese programa se le llamará MUA - Mail User Agent[11]).
Si tanto Juan como Pablo emplean como MUA
mail, y ambos computadores tiene como MTA exim, el proceso sería:
- Juan emplea mail en su computador primaria2 para redactar el mensaje cuyo destinatario es pablo.
- En primaria2, el programa mail ejecuta exim para enviar el mensaje. exim deja el mensaje en una cola de mensajes por enviar. Esa cola de mensajes es actualizada por exim a medida que envía o intenta enviar mensajes (si un mensaje no puede ser enviado exim puede reintentar el envio cierto número de veces, haciendo pausas entre un intento y otro).
Enviar un mensaje significa crear una conexión TCP con el MTA destino o con otro MTA que actúe de intermediario, típicamente en el puerto TCP 25, y transmitir el mensaje siguiendo las reglas del protocolo SMTP [12]. Para establecer el computador con el cual conectarse exim revisa con el resolvedor DNS, registros MX asociados con el dominio de la dirección, si los hay intenta enviar a cada uno en orden de prioridad --los registros MX con menor número tienen mayor prioridad (ver Servicio DNS).
- En bachillerato3 debe estar corriendo un proceso que acepte la conexión en el puerto 25. Puede ser exim mismo o puede ser inetd que una vez realizada la conexión ejecuta a exim (ver Configuración de servicios básicos). Después exim recibirá el mensaje siguiendo el protocolo SMTP.
- exim agrega el mensaje que recibe en el archivo tipo texto /var/mail/pablo.
Archivo donde exim deja los correos destinados al usuario pablo.
- Cuando Pablo lo desee, podrá emplear mail para leer los correos que se hayan acumulado en /var/mail/pablo
a medida que los lea saldrán de ese archivo para quedar en ~/mbox.
Este es el esquema básico, aunque hay muchas otras situaciones en las que se emplean otras posibilidades de SMTP, protocolos auxiliares y programas[13]. Como parte de nuestra plataforma de referencia, sugerimos este esquema:
- Emplear un MUA que pueda leer directamente los correos que están en /var/mail o /var/spool/mail y configurarlo para esto, (en Debian el primero es el preferido, y /var/spool/mail es un enlace a /var/mail) y que emplee un MTA para enviar correos (ejemplos de MUAs con estás características son: mail, mutt, elm, balsa, evolution).
- script para configurar el mta exim.
Emplear exim como MTA en todos los clientes. Una ventaja de exim sobre otros MTA (como sendmail) es la facilidad con la que se configura en el archivo
/etc/exim/exim.conf o aún más sencillo en Debian para muchas situaciones con el script
eximconfig. Los computadores clientes se configuran como MTA satélites con el servidor como compuerta de correo (o
smart host)
es decir se configura en los clientes sin capacidad de recibir correos sino sólo de enviar todo correo a un computador (al servidor). El MTA del servidor funciona como un MTA completo que pueda recibir y enviar correo usando SMTP.
- Emplear NFS para compartir el directorio /var/mail del servidor en todos los clientes. De forma que exista un único sitio físico donde estén todos los correos, pero que desde todos los computadores cada usuario pueda acceder a su archivo de correos.
Para configurar este esquema se requiere:
- Instalar en todos los computadores los MUAs que habrá disponibles (mínimo mail disponible en el paquete mailx).
- Instalar en todos los computadores el MTA exim (paquete exim). En los clientes configurarlo como sistema satélite. Como nombre de sistema emplee el dominio de su institución, como computador del cual leerán los correos y como smart host use el servidor. Para hacer un cambio en la configuración después de instalar puede emplear eximconfig, o con más práctica /etc/exim.conf. Algunas líneas que ese archivo debe tener en el caso de clientes, para enviar siempre por el servidor son:
qualify_domain = micolegio.edu.co
local_domains = micolegio.edu.co:localhost
smart:
driver = smartuser
new_address = ${local_part}@servidor.micolegio.edu.co
end
smarthost:
driver = domainlist
transport = remote_smtp
route_list = "* servidor.micolegio.edu.co bydns_a"
end
También puede incluir reglas para reescribir direcciones de forma que parezcan provenir de servidor.micolegio.edu.co:
^(?i)(root|postmaster|mailer-daemon)@micolegio.edu.co ${1}@in.limbo Ffr
*@micolegio.edu.co ${1}@servidor.micolegio.edu.co Ffr
^(?i)(root|postmaster|mailer-daemon)@localhost ${1}@in.limbo Ffr
*@localhost ${1}@servidor.micolegio.edu.co Ffr
*@in.limbo root@servidor.micolegio.edu.co Ffr
y esta para agregar direcciones que deben cambiarse para ciertos usuarios en el archivo
/etc/email-adresses [14]:
*@micolegio.edu.co ${lookup{$1}lsearch{/etc/email-addresses}\
{$value}fail} bcfrF
- El servidor puede configurarlo como si fuera sitio de Internet usando eximconfig y agregando registros MX al servidor DNS. Configure como nombre del sistema el dominio de su institución, excluya de los controles de relaying su red interna (e.g 192.168.1.0/24). De editar manualmente /etc/exim/exim.conf, entre las líneas que eximconfig incluye están las siguientes que configuran procmail (ver mutt y procmail):
procmail:
driver = localuser
transport = procmail_pipe
require_files =
${local_part}:+${home}:+${home}/.procmailrc:+/usr/bin/procmail
no_verify
Con las siguientes permite redireccionamiento con el archivo
.forward. Tenga en cuenta cambiar la configuración por defecto que deja eximconfig para esto (porque permite que
.forward pueda ser escrito por el grupo):
userforward:
driver = forwardfile
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
no_verify
check_ancestor
file = .forward
filter
Las siguientes indican emplear el sistema de correo local para usuarios locales, hacer consultas DNS antes de iniciar conexiones SMTP y emplear direcciones IP explícitas.
localuser:
driver = localuser
transport = local_delivery
lookuphost:
driver = lookuphost
transport = remote_smtp
literal:
driver = ipliteral
La configuración de DNS debería tener en cuenta emplear servidor.micolegio.edu.co como intercambiador de correo para el dominio micolegio.edu.co y también como intercambiador de correo para cada cliente (es decir que todo correo que vaya a uno de los clientes se redirija al servidor). Retomando el ejemplo de la zona de DNS (ver Servicio DNS), el archivo
/etc/bind/db.micolegio.edu.co tendría dos nuevas líneas (con registros tipo MX):
@ IN SOA servidor.micolegio.edu.co. root.localhost. (
1 ; Serial
10800 ; Refresco cada 3 horas
3600 ; Reintento cada hora
2419200 ; Expiracion después de un mes
259200 ) ; TTL 3 dias
@ NS servidor
servidor.micolegio.edu.co A 192.168.1.1
www A 192.168.1.1
mail A 192.168.1.1
micolegio.edu.co. MX 5 mail
*.micolegio.edu.co. MX 5 mail
bachillerato1 A 192.168.1.2
bachillerato2 A 192.168.1.3
bachillerato3 A 192.168.1.4
bachillerato4 A 192.168.1.5
secretaria A 192.168.1.100
profesores A 192.168.1.200
Una vez haga cambios a la configuración de exim podrá realizar algunas pruebas para verificar la forma de enrutamiento:
exim -bV
exim -v -bt root@localhost
exim -v -bt root@servidor.micolegio.edu.co
exim -v -bt root@purpura.micolegio.edu.co
Servicio FTP
En este modo de operación de FTP, el cliente espera del servidor la especificación de la dirección y el puerto del canal de datos.
El protocolo FTP (que se describe en los RFC 1123 y en el RFC 959) permite transmitir archivos de un computador a otro de forma robusta y eficiente. Este protocolo requiere una conexión por la que se transmiten comandos y respuestas a comandos (normalmente por el puerto 21) y otra por la que se transmiten datos (el puerto es escogido por el cliente o el servidor). Pueden realizarse conexiones en modo activo o pasivo, en el primero el cliente establece la dirección y el puerto para el canal de datos, en el segundo es el servidor el que los establece. Al conectarse desde una red con direcciones privadas a un servidor FTP fuera de la red privada es necesario usar modo pasivo.[15]
Sugerimos emplear FTP para establecer un servidor FTP anónimo, pero no para brindar transmisión de archivos a usuarios del sistema (que pueden hacerlo con
scp de ssh).
||
Aviso ||
|| Las claves transmitidas en sesiones de FTP viajan por la red sin encripción alguna. ||
Archivo de configuración de
proftpd.
Como servidor FTP sugerimos proftp (paquete
proftpd). La configuración por defecto queda en
/etc/proftpd.conf que permite a todos los usuarios emplear ftp, permite ftp anónimo empleando los archivos del directorio
/var/ftp. El directorio empleado puede tener una estructura arbitraria. proftpd deja errores y mensajes de error en
/var/log/syslog.
Para limitar el servicio a ftp anónimo (los usuarios pueden emplear scp para realizar copias), puede agregar en la sección general del archivo de configuración limitación de acceso para todos los usuarios (con
LimitLOGIN) y en la sección de ftp anónimo permitir acceso para todos los usuarios. El archivo
/etc/proftpd.conf sería algo como:
ServerName "servidor"
ServerType standalone
DeferWelcome off
ShowSymlinks on
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayFirstChdir .message
LsDefaultOptions "-l"
Port 21
Umask 022 022
MaxInstances 30
User nobody
Group nogroup
<Limit LOGIN>
DenyAll
</Limit>
<Directory /*>
AllowOverwrite on
</Directory>
<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell off
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message
<Limit LOGIN>
AllowAll
</Limit>
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>