próximo acima anterior sumário índice
Próximo: C. COMO FAZER - Acima: Guia do Administador de Anterior: A. Cabo Nulo Para   Sumário   Índice


B. Exemplo de Arquivos de Configuração do smail

Esta seção apresenta diversos arquivos de configuração para um site folha UUCP em uma rede local. Eles são baseados nos arquivos de exemplos incluídos na distribuição do programa smail-3.1.28. Apesar de todo o conteúdo do capítulo referente ao smail, é fortemente sugerida a leitura das páginas de manual do programa smail(8), a qual descreve estes arquivos detalhadamente. Uma vez que se tenha entendido a idéia básica por trás dos arquivos de configuração smail, será uma leitura valiosa. O primeiro arquivo abaixo mostra o conteúdo de routers, o qual descreve um conjunto de roteadores para smail. Quando smail tem que entregar uma mensagem para um determinado endereço, ele envia o endereço para todos os roteadores, até que um indique que possa lidar com ele, ou seja que pode encontrar uma máquina de destino em sua base de dados, seja no arquivo paths, no /etc/hosts, ou qualquer mecanismo de roteamento com o qual o roteador interaja.

Entradas nos arquivos de configuração do smail sempre começam com um único nome identificando o roteador, transporte ou diretor. Eles são seguidos por uma lista de atributos que definem o seu comportamento. Esta lista consiste da configuração de uma série de atributos globais, como por exemplo o programa de controle de dispositivo usado e de atributos privados que serão somente entendidos por programas específicos. Atributos são separados por vírgulas, enquanto os valores dos atributos globais e privados são separados por ponto e vírgula.

Para tornar estas distinções claras, assumiremos que se deseje manter dois arquivos separados de nomes alternativos de caminhos, um contendo as informações de roteamento do domínio e o segundo contendo informações de roteamento global, provavelmente geradas a partir de mapas UUCP. No programa smail, pode-se especificar dois roteadores no arquivo routers, ambos usando o programa de controle de dispositivos especificado no arquivo de caminhos alternativos. Este procurará os nomes das máquinas em uma base de dados. O nome do arquivo é esperado como sendo um atributo privado.



O segundo atributo global fornecido para cada um dos dois roteadores acima define o transporte que deve ser usado, caso o roteador encontre o endereço. Neste caso, a mensagem será entregue utilizando-se o transporte uux. Transportes são definidos no arquivo transports, o qual é explicado a seguir.

Pode-se ainda refinar a definição de qual transporte a mensagem utilizará ao se especificar um arquivo de método ao invés de um atributo de transporte. Arquivos de métodos contém um mapa de máquinas de destinos e transportes associados.

Os arquivos routers a seguir, definem roteadores para uma rede local que efetuam pesquisas em uma biblioteca resolvedora. Em uma máquina Internet, por outro lado, pode-se utilizar um roteador que lide com registros MX. Deve-se de qualquer forma retirar-se o comentário do roteador alternativo inet_bind que usa o driver pré-construído em smail.

Em um ambiente que misture UUCP e TCP/IP, pode-se ter alguns problemas em se ter máquinas listadas no arquivo /etc/hosts que tem conexões SLIP ou PPP de forma ocasional. Normalmente será desejável enviar mensagens via UUCP. Para prevenir que o programa inet_hosts associe estas máquinas à uma conexão permanente, elas devem ser informadas no arquivo paths/force. Trata-se de outro arquivo no mesmo estilo do arquivo de caminhos alternativos e é consultado antes que smail consulte o resolvedor.




Para lidar com mensagens para endereços locais é configurado o arquivo directors. Ele é constituído da mesma forma que o arquivo routers, com uma lista de entradas que definem uma forma de pesquisa cada uma delas. Estas entradas não definem a entrega da mensagem, mas sim o redirecionamento possível, por exemplo através de nomes alternativos, servidores de reenvio e assim por diante.

Ao entregar uma mensagem para um endereço local, como , smail passa o nome do usuário para todos os diretores, um a cada vez. Caso o nome seja localizado, o transporte especificado para o diretor será utilizado e a mensagem deverá ser entregue (por exemplo, no arquivo da caixa postal do usuário), ou será gerado um novo endereço (por exemplo, após o exame de um nome alternativo).

Devido aos aspectos de segurança envolvidos, diretores normalmente fazem uma série de checagens para verificarem se os arquivos utilizados podem estar com algum problema. Endereços obtidos de alguma forma dúbia (como a partir de um arquivo aliases que pode ser gravado por qualquer usuário) são assinalados como inseguros. Alguns programas de transporte poderão não utilizar estes endereços, por exemplo para entregar uma mensagem para um arquivo.

Além disso, smail também associa um usuário a cada endereço. Toda a operação de gravação e leitura é executada como se fosse realizada pelo usuário. Para entrega, por exemplo, na caixa postal de janete, o endereço é obviamente associado com o usuário janete. Outros endereços como aqueles obtidos a partir do arquivo aliases, tem outros usuários associados a eles, como por exemplo o usuário nobody.

Para maiores detalhes sobre estas funcionalidades, por favor visite a página de manual do programa smail(8).





Após rotear com sucesso ou direcionar uma mensagem, smail envia a mensagem para o transporte especificado pelo roteador ou diretor que coincidiu com as características de destino da mensagem. Estes transportes são definidos no arquivo transports. Novamente, um transporte é definido por opções globais ou privadas.

A mais importante definição de cada entrada é o programa que administra o transporte, por exemplo um programa conector de comandos, o qual aciona o comando específico através do atributo cmd. Além disso, há uma série de comandos que o transporte pode usar, que executam diversas transformações no cabeçalho da mensagem. O atributo return_path, por exemplo, faz com que o transporte insira uma campo de caminho_retorno na mensagem. O atributo unix_from_hack faz com que toda ocorrência da palavra From no início de uma linha seja precedido pelo caracter >.


# Um exemplo de arquivo /usr/lib/smail/transports

# local - entrega de mensagens para usuários locais 
local:
        driver=appendfile,        # anexa a mensagem a um arquivo 
        return_path,              # inclui o campo Return-Path: 
        from,                     # fornece uma linha From_  ao envelope
        unix_from_hack,           # insere > antes de  From 
        local;                    # usa as formas locais de entrega

        file=/var/spool/mail/${lc:user}, # localização dos arquivos de caixas 
                                         # postais 
        group=mail,               # grupo dono do arquivo para System V
        mode=0660,                # grupo mail pode acessar
        suffix="\n",              # adiciona uma nova linha

# pipe - entrega de mensagens para comandos
pipe: 
        driver=pipe,              # envia a mensagem para outro programa 
        return_path,              # inclui o campo Return-Path: 
        from,                     # fornece uma linha From_  ao envelope
        unix_from_hack,           # insere > antes de  From 
        local;                    # usa as formas locais de entrega

        cmd="/bin/sh -c $user",   # envia endereço para o  Bourne Shell
        parent_env,               # informação de ambiente do endereço pai 
        pipe_as_user,             # usa identificação de usuário associada com o         
                                  # endereço 
        ignore_status,            # ignora um código de finalização diferente de
                                  # zero
        ignore_write_errors,      # ignora erros de gravação        
        umask=0022,               # umask para processo filhos
        -log_output,              # não gera mensagens na saída padrão

# file - entrega mensagens para um arquivo
file: 
        driver=appendfile,
        return_path,              # inclui o campo Return-Path: 
        from,                     # fornece uma linha From_  ao envelope
        unix_from_hack,           # insere > antes de  From 
        local;                    # usa as formas locais de entrega

        file=$user,               # arquivo é obtido de um endereço 
        append_as_user,           # usa identificação de usuário associada com o         
                                  # endereço 
        expand_user,              # expande ~ e $ nos endereços
        suffix="\n",              # adiciona uma linha extra final 
        mode=0600,                # configura permissões para 600

# uux - entrega mensagens via programa rmail em um site UUCP remoto 
uux:    driver=pipe,
        uucp,                     # usa endereços no formato UUCP 
        from,                     # suprime a linha de envelope From_       
        max_addrs=5,              # no máximo 5 endereços a cada acionamento
        max_chars=200;            # no máximo 200 caracteres por endereço
        cmd="/usr/bin/uux - -r -a$sender -g$grade $host!rmail $(($user)$)",
        pipe_as_sender,           # mantém o remetente nos registros UUCP 
        log_output,               # salva as mensagens de erro de mensagens 
                                  # devolvidas
#       defer_child_errors,       # tenta novamente se uux retorna algum erro 

# demand - entrega para um programa rmail remoto, pesquisando imediatamente 
        uucp,                     # usa endereços no formato UUCP 
        from,                     # suprime a linha de envelope From_       
        max_addrs=5,              # no máximo 5 endereços a cada acionamento
        max_chars=200;            # no máximo 200 caracteres por endereço
        cmd="/usr/bin/uux - -a$sender -g$grade $host!rmail $(($user)$)",
        pipe_as_sender,           # mantém o remetente nos registros UUCP 
        log_output,               # salva as mensagens de erro de mensagens 
                                  # devolvidas
#       defer_child_errors,       # tenta novamente se uux retorna algum erro 

# hbsmtp - usa lotes BSMTP. O arquivo de saída deve ser processado regularmente 
#          e enviado via UUCP
hbsmtp: 
        driver=appendfile,
        inet,                     # usa endereçamento RFC-822
        hbsmtp,                   # SMTP em lotes sem HELO e QUIT
        -max_addrs, -max_chars;   # sem limite no número de endereços 

        file="/var/spool/smail/hbsmtp/$host",
        user=root,                # arquivo pertence ao superusuário 
        mode=0600,                # somente pode ser lido ou gravado pelo
                                  # superusuário

# smtp - entrega utilizando SMTP sobre TCP/IP
smtp:   
        driver=tcpsmtp,
        inet,
        -max_addrs, -max_chars;         # sem limite de número de endereços
        short_timeout=5m,               # tempo de espera para operações curtas 
        long_timeout=2h,                # tempo de espera para operações longas             
        service=smtp,                   # conectar a esta porta
# Para uso na Internet retirar os comentários das linhas abaixo
#       use_bind,                       # resolver MX e múltiplos registros A 
#       defnames,                       # usar pesquisa padrão de nomes de
#                                       # domínios 
#       defer_no_connect,               # tentar novamente se o servidor de 
#                                       # nomes não estiver respondendo
#       -local_mx_okay,                 # falhar no MX para a máquina local


próximo acima anterior sumário índice
Próximo: C. COMO FAZER - Acima: Guia do Administador de Anterior: A. Cabo Nulo Para   Sumário   Índice
www.conectiva.com