E-mail sobre UUCP: A solução profissional para utilizadores dialup

ArticleCategory: [Do not translate this]

System Administration

AuthorImage:[Do not translate this]

[Photo of the Author]

TranslationInfo:[Do not translate this]

original in en Guido Socher

en to pt Bruno Sousa

AboutTheAuthor:[Translate the paragraph below]

O Guido tem utilizado o UUCP há já muitos anos e pensa que é o melhor meio de ligar o sistema de mail do seu computador à Internet.

Abstract:[Translate the paragraph below]

O UUCP é um dos velhos e bons protocolos da Internet. Em muitos casos é agora substituído por protocolos mais modernos mas continua a ser uma das melhores soluções para enviar e-Mail para e de sites dialup. Infelizmente muitas pessoas a ligarem-se de casa através de uma ligação dialup não têm conhecimento das grandes potencialidades do UUCP e não pedem este serviço. Como consequência, cada vez menos ISP's oferecem os serviços de UUCP nos dias de hoje.

ArticleIllustration:[Do not try to translate this]

[uucp]

ArticleBody:[Translate everything below]

Introdução

O UUCP é um protocolo muito velho e originalmente, era utilizado para copiar ficheiros entre sistemas Unix. Daí o nome: "Unix to Unix Copy". Estes primeiros computadores não estavam permanentemente ligados através de uma rede. Em vez disto utilizavam ligações de modem dialup para trocar dados em intervalos de tempo regulares.

Para copiar o ficheiro mynotes.txt para um sistema remoto chamado "mars" um deles utilizaria o comando:

uucp mynotes.txt mars!~/mynotes.txt
Neste momento isto copia os dados para um "directório de spool" e mais tarde quando uma ligação dialup é feita são copiados fisicamente os dados.

Hoje, este tipo de aplicação para o UUCP é raramente utilizado. Protocolos mais modernos como o TCP/IP e por exemplo o scp estão agora disponíveis para copiar ficheiros entre sistemas computacionais.

O UUCP podia fazer mais do que isto. Permitia a execução de um número limitado de comandos remotos. Para enviar os dados do comando "rnews" para o sistema remoto "mars" a partir da entrada padrão uma possível solução seria:
cat somedata.txt | uux - mars!rnews
Novamente o comando rnews não seria executado imediatamente no sistema remoto, mas somente quando uma ligação dialup para "mars" estivesse estabelecida. O comando ficaria "estacionado" no "directório local de spool".

Mas o que é que isto tem haver com o e-mail?
O E-mail é uma aplicação típica onde não importa se o envio dos dados é atrasado um pouco. Normalmente, você através do seu mail, escreve por exemplo mensagens de resposta a amigos e "enviam-nas". Contudo você não pretende que todas as janelas de resposta da sua aplicação de mail se abram ao mesmo tempo enquanto se liga novamente ao seu ISP. Quer antes enviar o mail e fechar a janela. Se é enviada imediatamente não é importante aqui desde que seja enviada mais tarde.

Este é o tipo de aplicação que facilmente pode confiar e implementar com o UUCP.

O seu próprio sistema de mail

O UUCP é flexível. Pode configurá-lo para ter um servidor de mail a funcionar na rede de computadores. O seu computador com Linux pode ser o servidor central de mail servindo o serviço de mail para todos os tipos de computadores e sistemas operativos na sua rede local LAN (Rede de área local):
[A private 
mail system connected via dialup]


Definir um servidor de mail deste modo pode ser conveniente para uma empresa familiar, pequena com custos reduzidos. Pode fornecer contas de e-mail para qualquer número de utilizadores enquanto que ao mesmo tempo só precisa de uma ligação de dialup ao seu ISP. A companhia fará uma ligação periódica (por exemplo a cada hora) e pessoas privadas podem fazer a ligação por variadas razões.

Para concluir: O E-mail sobre o UUCP não é nada velho e sujo. É um modo muito conveniente, barato e uma aplicação inteligente do UUCP.

Como é que funciona?

Utilizando o UUCP obterá do seu ISP o seu próprio domínio MX (MX=Mail Exchanger, nome do Domínio parte do endereço e-mail). Por exemplo se a página do seu ISP é www.my-friendly-isp.com então podem dar ao Joe Miller o domínio miller.my-friendly-isp.com. Todo o mail para aquele domínio será enviada para o servidor do Joe Miller através do UUCP. O Joe pode então configurar qualquer número de utilizadores: joe@miller.my-friendly-isp.com, diana@miller.my-friendly-isp.com, frank@miller.my-friendly-isp.com ... É com o Joe. Visto que obtém um servidor de mail grátis com o Linux este pode servir protocolos diferentes como o pop, imap, nfs ou caixa de correio directamente sobre o sistema de ficheiros local ... etc não há restrição para o tipo de sistema operativo ou clientes de e-mail utilizados para aceder ao respectivo mail.

O UUCP como tal é um protocolo só por si só e pode corrê-lo directamente ao nível do hardware (por exemplo uma linha do modem sem o protocolo ppp) contudo também o pode correr sobre o TCP/IP o que lhe oferece novas possibilidades:

Se possuir um ISP dedicado algures no mundo com uma ligação à rede muito boa (por exemplo Amsterdão) e você liga-se a um ISP qualquer, barato e com ligações locais. Desde que o UUCP corra no topo do TCP/IP o localização física do seu ISP de E-mail/UUCP já não importa mais. É acessível de qualquer local do mundo através da Internet.

Configurando-o

A Maioria das distribuições de Linux têm um pacote chamado uucp e normalmente, contém o Tailer UUCP. Se não está em nenhuns dos seus CDs, então pode obtê-lo em:
www.airs.com/ian

Além do pacote UUCP precisa também de um sistema de mail capaz de suportar o UUCP. Descreverei o Sendmail neste artigo, mas outros sistemas também suportam o UUCP. Um sistema de mail que suportam o UUCP terá um comando chamado rmail no pacote rpm ou deb.

O mail é enviado para o seu sistema através de um comando remoto, semelhante ao exemplo acima do uux/rnews. O rmail é o comando que recebe o mail através do "pipe" UUCP e integra-o no seu sistema de mail.

A informação que se segue é precisa ao seu ISP para configurar a conta:
Os dados que precisa do seu ISP:

Testando a conta passo a passo

O UUCP sobre o TCP/IP utiliza o porto TCP 540 e pode, assim testar facilmente a sua conta antes de entrar, propriamente na configuração do seu sistema UUCP. Assim assegura-se que o seu ISP não cometeu erros e que você possui os IDs e passwords correctos. Corra o comando:
telnet uucp.my-friendly-isp.com 540
Obterá algo do género:
Trying 1.2.3.42...
Connected to uucp.my-friendly-isp.com
Escape character is '^]'.
login:
Digite o nome de login e password:
Trying 1.2.3.42...
Connected to uucp.my-friendly-isp.com
Escape character is '^]'.
login: linux
Password: tux.1234
Shere=mfic
Depois de um login com sucesso o outro lado responde com "Shere" o que corresponde ao sistema seguido do nome do sistema remoto (verifique novamente os dados do seu ISP).
Para terminar a ligação use crtl-] e de seguida digite "q" na linha de comandos do telnet:
^]
telnet> q
Connection closed.
Agora sabe que a sua conta está configurado correctamente.

Configurando o seu sistema UUCP

Para receber (e finalmente, enviar) mail via UUCP você precisa de pôr os dados correctos nos ficheiros de configuração do UUCP. Estes ficheiros são encontrados normalmente em /etc/uucp. Precisa de criar/editar as linhas seguintes: Todos os ficheiros devem pertencer ao utilizador uucp e ao grupo uucp. O ficheiro não deve ser permissível de leitura (chmod 640 call). Os ficheiros de log, normalmente, são escritos em /var/log/uucp/ e /var/spool/uucp/ devendo conter um directório com o nome do sistema remoto. Certifique-se que ambos são permissíveis de escrita para o utilizador uucp.

call
# call file
# The format is just remote-system-name login-name password.
mfic linux tux.1234

port
# port file
# No need to change this
type tcp
port tcp
service 540

sys
# sys file
# defines information about the remote system
# system name of your ISP:
system mfic
# the server of your ISP:
address uucp.my-friendly-isp.com
# do not change the next 3 lines, see documentation of Tailer UUCP
# for details
time Any 2
port tcp
chat-timeout 60
# allowed commands:
commands rmail
# take the password and user name from the call file:
call-login *
call-password *
# do not change the next line:
chat ogin: \L assword: \P
#

config
# The config file just defines the path names
# of the other files and directories as well as your
# system name.
# Your system name:
nodename oblelix
# max number of request from other systems to execute in parallel:
max-uuxqts 2
# The UUCP spool directory
spool /var/spool/uucp
# The other fields are usually already compiled into
# as defaults:
# pubdir /var/spool/uucppublic
# logfile /var/log/uucp/Log
# statfile /var/log/uucp/Stats
# debugfile /var/log/uucp/Debug
# callfile /etc/uucp/call
# ....

Depois de guardar os ficheiros de configuração corra o comando "uuchk". Que se encontra, provavelmente na sbin: /usr/sbin/uuchk

A saída é um resumo da sua configuração incluindo alguns valores por omissão que não definiu. O nome da máquina do seu servidor ISP, uucp.my-friendly-isp.com no nosso exemplo, aparece como "phone number":

Phone number uucp.my-friendly-isp.com
Isto parece estranho mas está correcto para o UUCP sobre o TCP/IP. Verifique, especialmente que todos os directórios, ficheiros de log, ficheiros de debug etc estão a apontar para o sítio correcto e pertencem ao utilizador uucp.

Por agora, devia ser capaz de receber mail via UUCP, mas o seu agente de transporte de mail local (MTA=mail transport agent) precisa ainda saber de que está permitido a suportar o mail para o domínio registado perante o ISP. No nosso caso o domínio é miller.my-friendly-isp.com. A configuração deste domínio depende do seu MTA. No sendmail precisa de escrever o miller.my-friendly-isp.com numa só linha no ficheiro /etc/sendmail.cw:

# sendmail.cw define the domains for which we handle mail
miller.my-friendly-isp.com
Agora está preparado para testar a recepção de mail através de UUCP. O envio de mails não funcionará porque o sendmail ainda não está totalmente configurado.
Corra
/usr/sbin/uucico -x 11 -S mfic
o mfic representa o nome do sistema UUCP do my-friendly-isp.com.

Com uma segunda janela de terminal e observe o resultado com o comando "tail -f /var/log/uucp/Debug".
O "-x 11" especifica o nível mais alto de debug e só deveria ser usado em testes. Verá todos os detalhes do protocolo UUCP. Verifique se existem erros. Se no fim obtiver algo do tipo
uucico mfic - (2001-06-22 20:20:57.73 1020) Call complete (31 seconds 42835 bytes 1381 bps)
então tudo correu bem. Felicitações!

Corra o comando "uulog". Este imprimirá um resumo mais compresso acerca dos mails recebidos através de UUCP/rmail.

Configurando o sendmail para enviar e-mail através do UUCP

O Sendmail utiliza um pré-processador m4 com base na configuração do sistema. Outros sistemas de mail, como o postfix utilizam ficheiros de configuração de fácil leitura o que não constitui problema para a sua edição. Eu estou a utilizar o sendmail, daí que descreva a minha experiência com o mesmo. É bem-vinda a adição de informação acerca de um MTA diferente na página de respostas abaixo. Constatei que o postfix só requer a edição do ficheiro transport/transport.db e de uma definição do uucp no ficheiro master.cf, parece-me que é só isto contudo não tenho muita experiência com o postfix.

A configuração do sistema m4 pode não vir incluída nos mesmos pacotes que o próprio sendmail. Verifique os CDs da sua distribuição, pois pode precisar de instalar um pacote com o nome de "sendmail-cf".

Crie um novo ficheiro sendmail-uucp.mc no directório de configuração do sendmail (talvez /usr/lib/sendmail-cf/cf):

#divert(-1)
# `This is config sends outgoing mail via uucp using /usr/bin/uux
#
# to generate a sendmail.cf out of this .mc file use the sendmail sources
# and run m4 thisfile.mc > sendmail.cf.'
divert(0)
include(`../m4/cf.m4')
VERSIONID(`UUCP, Jan 28 2001, without DNS')
undefine(`BITNET_RELAY')
undefine(`DECNET_RELAY')
undefine(`UUCP_RELAY')
OSTYPE(`linux')
MASQUERADE_AS(miller.my-friendly-isp.com)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
# ` add any local hostnames here:'
MASQUERADE_DOMAIN(philosophus)
# ` needed if you use an internal domain that does not exist: '
FEATURE(`masquerade_envelope')
FEATURE(always_add_domain)
# ` read allowed domains from cw file: '
FEATURE(use_cw_file)
FEATURE(local_procmail)
# `important for uucp:'
FEATURE(accept_unresolvable_domains)dnl
# `the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:'
define(`confDEF_USER_ID',``8:12'')
define(`confSAFE_QUEUE',`True')
define(`confDELIVERY_MODE',`background')dnl
# 'replace mfic by the UUCP system name of your ISP:'
define(`SMART_HOST',uucp-uudom:mfic)dnl
define(`confSERVICE_SWITCH_FILE',/etc/service.switch)dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
define(`UUCP_MAILER_MAX',1024000)dnl
MAILER(procmail)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl
Adapte o ficheiro à sua situação e compile-o com o comando:
m4 sendmail-uucp.mc > sendmail.cf
Copie o ficheiro sendmail.cf para /etc e reinicie o sendmail com
/etc/rc.d/init.d/sendmail restart
O caminho da script de arranque diz respeito às distribuições redhat e mandrake, sendo diferente para a SuSE, Debian etc...

No ficheiro /etc/service.switch devia usar:
hosts   files
aliases files
Agora envie um E-mail a alguém. Pode fazer isto com o seu programa de mail favorito ou directamente no unix através do comando:
echo "hello john, just testing..." | Mail john@somewhere.org
Este mail não é enviado directamente para fora. Em vez disso ficará na fila de espera do sistema UUCP. Deve conseguir vê-la se correr:
uustat -a
o uustat apresentará:
mfic.CRJjd4uAAAPs mfic joe 07-24 20:19 Executing rmail john@somewhere.org
(sending 50 bytes)
A seguir corra
/usr/sbin/uucico -x 11 -S mfic
o mfic é de novo o nome do sistema UUCP do my-friendly-isp.com. Pode observar o ficheiro de Debug e ver que o mail está a ser enviado.

Automatizando

Crie a seguinte script /usr/bin/uumail:
#!/bin/sh
hostn=uucp.my-friendly-isp.com
# first check that the server of my ISP is reachable.
# This requires a more recent version of ping where you can
# specify the timeout:
if ping -w 3 -qn -c 1 $hostn > /dev/null ; then
  /usr/sbin/uucico -S mfic
  #sleep 1
  #uulog -s mfic -5
else
  echo "ERROR: $hostn is down"
  exit 1
fi
Torne a script executável com "chmod 755 /usr/bin/uumail" e corra-a manualmente para verificar se funciona.

Para trocar os e-mails automaticamente sempre que estiver online adicione a linha /usr/bin/uumail ao ficheiro /etc/ppp/ip-up.

Ok, e é isto. O seu sistema de mail está activo e a correr.

Coisas a fazer

O sistema de mail está totalmente configurado. Todos os utilizadores (/etc/passwd, comando adduser) poderão de uma forma automática enviar e receber mail. O mail será arquivado nos directórios de spool tradicionais, sobre /var/spool/mail e pode ser lido localmente. Se quiser que o utilizador seja capaz de ler o mail através dos protocolos pop3 ou imap, precisa de instalar um pacote com o nome de "imap" e arrancar com os demónios /usr/sbin/imapd e /usr/sbin/ipop3d
No ficheiro /etc/inetd.conf descomente as seguintes linhas, para os iniciar:
pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop3d
imap    stream  tcp     nowait  root    /usr/sbin/tcpd  imapd
Se tiver o xinetd então precisa de criar ficheiros apropriados para este serviço (veja também a LinuxFocus artigo 175 acerca desta matéria). Lembre-se de conceder acesso no ficheiro /etc/hosts.allow se o utilizador acede ao mail através de outra máquina na sua rede local (LAN):
# hosts.allow , tcp wrapper config file
# anybody can get access to imap:
imapd: ALL
# pop3 is only allowed from 2 hosts:
ipop3d: 10.0.0.1, 10.0.0.2, 127.0.0.1

Encontrando um ISP

Encontrar um bom e confiante Internet Service Provider para o UUCP é, por vezes difícil visto que a maioria dos ISP de destino são Mr. Noclue Windowspreinstalled.

Conheço 2 ISPs bons na Alemanha que oferecem E-mail sobre o UUCP:

Ambos são organizações e você basicamente junta-se à organização para utilizar este serviço. Os Preços estão entre os 11 e 20 Euros por Mês.

Na LinuxFocus.org também fornecemos e-mail sobre o UUCP para um número limitado de fãs amigos do Linux, se se juntar à nossa organização e nos suportar financeiramente e/ou se trabalhar connosco regularmente. Contacte-me se estiver interessado.

Uma boa maneira de encontrar um ISP razoável no seu país pode ser através de uma pesquisa no Google ou outros motores de pesquisa. Quanto com menos clientes os ISPs contarem maior será a probabilidade de oferecerem e-mail sobre o UUCP como um produto.

Referências