Pré-Requisitos
Distribuição do Software
Instalação dos Programas
Instalação M4 (Processador de Macros)
Instalação Suporte ao formato NEWDB
Compilação Sendmail
Criação Arquivo sendmail.cf


PRÉ-REQUISITOS


A maioria dos sistemas Unix abertos (FreeBSD, Linux, OpenBSD e outros), por definição possuem todos os softwares necessários à instalação do sendmail. O próprio sendmail, na maior parte dos casos, não precisa ser compilado, bastando obter a versão pré-compilada para o seu sistema e instalá-la.

Para sistemas Linux RedHat, a versão mais recente do sendmail pode ser instalada com o comando:
 

# rpm -i sendmail-8.9.1a-5cl.i386.rpm


Caso não queiramos fazer das versões pré-compiladas, a compilação do sendmail se dá sem maiores problemas nestes sistemas, visto que todos os softwares necessários, listados a seguir, se encontram disponíveis no sistema.

Para a instalação do Sendmail são necessários os seguintes softwares:

  1. Compilador C
  1. Processador de macros M4
    1. O processador M4 pode ser entendido como um tradutor onde a partir de um arquivo simples de configuração é gerado o arquivo na linguagem nativa do sendmail (sendmail.cf).
      Recomenda-se a instalação do M4 distribuído pela Free Software Foundation (GNU), de nome. Este software possui um outro pré-requisito, o pacote texinfo.
  2. Formatador de textos (troff)
    1. Utilizado para formatar a documentação do sendmail. Pode ser utilizado,  caso não disponível no sistema, o pacote groff, também distribuído pela FSF. Sua utilização é opcional. A maioria dos sistemas Unix abertos possui este pacote pré-instalado. Em sistemas Unix comerciais, onde não é instalado pode ser mais conveniente realizar a instalação do sendmail sem utilizá-lo.
  3. Rotinas de acesso a banco de dados
    1. O sendmail pode trabalhar com dois tipos de software para acesso a seus bancos de dados (/etc/aliases, UserDB, etc). São eles newdb e ndbm. A implementação do formato NEWDB se dá através da instalação do pacote db, distribuído por Berkeley e o NDBM já vem instalado em algumas versões do Unix. Apenas a nova versão (NEWDB) é necessária. O suporte ao formato NDBM foi incluído apenas para suporte a bancos de dados antigos. Todos os bancos de dados que sejam reconstruídos assumirão o novo formato (desde que o sendmail tenha sido compilado com suporte ao formato NEWDB).  Estes softwares não são estritamente necessários, porém não se recomenda em absoluto que se instale o programa sendmail sem incluir o suporte a um destes dois tipos de acesso a bancos de dados.

Distribuição do Software
Todos os softwares listados acima, em suas versões mais recentes, podem ser encontrados em ftp://ftp.unicamp.br/pub/mail/sendmail. Os softwares distribuídos pela Free Software Foundation são copiados diariamente de ftp://prep.ai.mit.edu/pub/gnu para seu mirror no servidor de ftp anônimo da Unicamp, localizado em ftp://ftp.unicamp.br/pub/gnu. O programa sendmail e o pacote de acesso a bancos de dados no formato NEWDB, são distribuídos pelo servidor de ftp anônimo do Departamento de Ciência da Computação da Universidade de Berkeley (ftp.cs.berkeley.edu). A última versão do programa sendmail pode ser encontrada em ftp://ftp.cs.berkeley.edu/ucb/sendmail e o programa db e muitas informações úteis podem ser encontradas em http://www.bostic.com/db/index.html

Instalação dos Programas
Nos procedimentos de instalação de softwares que se seguem foram adotadas as seguintes convenções:

Instalação M4 (Processador de Macros)
O pacote de processamento de macros M4, na versão contida no servidor ftp anônimo da Unicamp, m4-1.4.tar.gz , ao ser expandido, criará o diretório m4-1.4.
Este software é facilmente portável para a maioria dos sistemas operacionais existentes e sua instalação consiste dos seguintes passos:
Verificar se o programa makeinfo está disponível. Caso não esteja instalar o programa texinfo.
Seguir então, como root, os seguintes passos:
# cd /usr/local/src/m4-1.4
# ./configure
# make
# make install

Instalação Suporte ao formato NEWDB


Verificar primeiramente se este software já se encontra instalado em seu sistema:

# find / -name libdb.a -print



Compilação Sendmail
Expanda o software em /usr/local/src:

# cd /usr/local/src
# gzip -dc sendmail-8.9.3.tar.gz | tar xvf -
# cd sendmail-8.9.3/src
# ./Build

Build é um shell script que realiza todas as tarefas necessárias à compilação do programa Sendmail. É possível, a partir de um mesmo diretório, realizar a compilação do sendmail para várias arquiteturas diferentes. Os binários de cada arquitetura são gravados em um arquivo iniciado por obj.* . Em sistemas Linux, este diretório chama-se obj.Linux.2.0.36.i486. O nome, como pode se ver, reflete, além do nome do sistema(Linux), a versão do kernel (2.0.36) e arquitetura de hardware (i486).

O processo de instalação do sendmail identifica automaticamente, através do comando uname, o tipo de sistema operacional para fazer a seleção adequada do arquivo makefile. Antes de realizar a instalação no sistema, recomenda-se efetuar um backup dos binários e arquivos de configuração originais. A localização destes arquivos irá depender da plataforma. Os comandos listados abaixo servem apenas como referência dos procedimentos a serem seguidos:

# mv /etc/sendmail.cf /etc/sendmail.cf.190497
# mv /usr/sbin/sendmail /usr/sbin/sendmail.190497
Após encerrada a compilação, a instalação definitiva é feita, a partir do mesmo diretório, digitando-se:
# ./Build install
Serão então instalados os binários em /usr/sbin e serão também criados os links /usr/sbin/newaliases e /usr/sbin/mailq apontando para /usr/sbin/sendmail. Serão também formatadas e instaladas as man pages
 


    Criação Arquivo sendmail.cf
As versões recente do programa sendmail oferecem a possibilidade de se gerar o arquivo de configuração (/etc/sendmail.cf) atráves do pacote m4. Esta possibilidade de se gerar o arquivo de configuração a partir do m4, tornou viável o aparecimento de vários sites na Web que oferecem o serviço de criação do arquivo de configuração automaticamente, após responder a algumas perguntas.

O arquivo de configuração é criado a partir da expansão das macros contidas em um arquivo de configuração mestre, cuja terminação é mc (master configuration). Este arquivo possui a seguinte estrutura:

       
      VERSIONID
      OSTYPE
      DOMAIN
      FEATURE
      LOCAL MACRO DEFINITIONS
      MAILER
      LOCAL_RULESET_*
VERSIONID
    É uma macro que grava informação sobre a versão do arquivo de configuração gerado. Este valor pode ser gerado pelo RCS ou SCCS.
OSTYPE
    Define o tipo de sistema operacional para que o sendmail crie as definições apropriadas para a localização de diversos arquivos. Os valores possíveis para OSTYPE podem ser encontrados no diretório /usr/local/src/sendmail-8.9.3/cf/ostype. Neste diretório existem vários arquivos terminados em m4. Para sistemas Linux, existe um arquivo chamado linux.m4. O valor correto para é OSTYPE(linux). Sempre remover a terminação m4.
DOMAIN
    Indica um diretório onde se encontram todas as modificações necessárias para uma instalação.  DOMAIN(ccuec.unicamp.br) indica que o sendmail levará em conta, durante a criação do arquivo sendmail.cf, os valores definidos no arquivo ccuec.unicamp.br.m4 contido em /usr/local/src/sendmail-8.9.3/cf/domain/. Na distribuição do sendmail temos o seguinte exemplo (arquivo Berkeley.EDU.m4):
     
      divert(0)
      VERSIONID(`@(#)Berkeley.EDU.m4  8.14 (Berkeley) 5/19/1998')
      DOMAIN(berkeley-only)dnl
      define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
      define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
      define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
      define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
      define(`confDONT_INIT_GROUPS', True)dnl
      FEATURE(redirect)dnl
      FEATURE(use_cw_file)dnl
      FEATURE(stickyhost)dnl
FEATURE
    Representa opções especiais que podem ser configuradas. A seguir são listadas algumas opções de maior interesse:
     
      FEATURE(`allmasquerade')
      FEATURE(`access_db')
      FEATURE(`always_add_domain')
      FEATURE(`blacklist_recipients')
      FEATURE(`local_procmail')
      FEATURE(`masquerade_entire_domain')
      FEATURE(`masquerade_envelope')
      FEATURE(`nullclient´,`servidor smtp')
      FEATURE(`relay_entire_domain')
      FEATURE(`relay_local_from´)
      FEATURE(`redirect')
      FEATURE(`smrsh')
      FEATURE(`use_cw_file')
      FEATURE(`virtusertable')
DEFINIÇÃO DE MACROS
    Algumas das macros podem ser definidas por meio da diretiva "define" do m4. A seguir listamos algumas opções mais utilizadas:
     
      define(`confDELIVERY_MODE',`[background][queueonly][deferred][interactive]´)
      define(`confHOST_STATUS_DIRECTORY',`/var/spool/mqueue/hoststatus')
      define(`confMAX_DAEMON_CHILDREN',`10')
      define(`confMAX_MESSAGE_SIZE',`1024')
      define(`confTO_QUEUERETURN',`5d')
      define(`confTO_QUEUEWARN',`4h')
      define(`MAIL_HUB',`mailhub.unicamp.br')
      define(`confUSERDBSPEC',`/etc/userdb.db')
      EXPOSED_USER(usuario)
        LOCAL_CONFIG
        CE usuario
          ou ainda
        LOCAL_CONFIG
        FE/etc/mail/visible.users
      LOCAL_CONFIG
      LOCAL_RULE_1
      LOCAL_RULE_2
      LOCAL_RULE_3
      LOCAL_RULESETS
      LOCAL_NET_CONFIG
      MASQUERADE_AS(`nome do domínio')
MAILER
    Define os agentes de entrega de mensagens que o seu sistema irá utilizar:
       
      MAILER(`smtp')
      MAILER(`uucp')
      MAILER(`procmail')
    Recomenda-se a criação de um diretório separado para abrigar todos os arquivos do diretório cf (/usr/local/src/sendmail-8.9.3/cf), como por exemplo, /etc/mail. O diretório /etc/mail, a partir da versão 8.8 do sendmail é utilizado como um diretório padrão para o armazenamento de arquivos de configuração.
     
      # mkdir /etc/mail
      # cd /usr/local/src/sendmail-8.9.3
      # cp -r cf /etc/mail


    Desta forma, sempre que se quiser alterar os arquivos de configuração basta digitar

      # cd /etc/mail/cf


    Para quem usa C/Tcsh, basta acrescentar ao arquivo .cshrc a diretiva cdpath=(/etc/mail). Isto permite que se chegue ao diretório /etc/mail/cf, de qualquer lugar no sistema, digitando apenas cd cf.

    Criar em seguida um diretório para abrigar a configuração de máquinas específicas de sua rede:
     

      # cd /etc/mail/cf
      # mkdir -p Host/RCS


    Finalmente, copiar uma configuração já existente chamando-a de host.mc. A terminação .mc significa Master Configuration.
     

      # cp cf/tcpproto.mc Host/host.mc
      # cd Host


    O processo de criação do arquivo do sendmail.cf pode ser automatizado utilizando-se makefiles. O arquivo Makefile pode ser utilizado para  automatizar as tarefas necessárias a criação do arquivo sendmail.cf (edição arquivos de configuração, encerramento e inicialização do sendmail, controle de versões, etc.) ao mesmo tempo em que reinicializa o programa sendmail para que as alterações entrem imediatamente em vigor.

    O passo seguinte é editar o arquivo localizado em /etc/mail/cf/Host/host.mc. Para fazer esta edição deve-se primeiramente determinar o tipo de função que a máquina irá desempenhar. Basicamente, os hosts podem ser divididos em duas categorias: clientes e mailhubs. Os clientes enviam todas as mensagens que recebem para que um outro computador as processe. Já o mailhub é o computador que faz todo o processamento de mensagens para um determinado domínio ou domínios.
    Caso queiramos configurar um cliente, basta copiar o arquivo /etc/mail/cf/clientproto.mc e realizar algumas alterações:



    clientproto.mc original (comentários não estão incluídos)

      divert(0)dnl
      VERSIONID(`@(#)clientproto.mc 8.7 (Berkeley) 3/23/96')
      OSTYPE(unknown)
      FEATURE(nullclient, mailhost.$m)


    clientproto.mc adaptado

      divert(0)dnl
      include(../m4/cf.m4)
      VERSIONID(`$Header$')
      OSTYPE(linux)
      FEATURE(`nullclient', `mailhost.unicamp.br')


    Basta definir a diretiva OSTYPE e a diretiva FEATURE, especificando qual máquina será a responsável pelo processamento de mensagens deste cliente. Recomenda-se até mesmo que máquinas com esta configuração não rodem o sendmail em modo daemon. O sendmail seria então executado em horários pré-determinados para processamento de mensagens remanescentes.

    Já o mailhub pode ser configurado criando-se um arquivo de configuração mestre (.mc) contendo as seguintes linhas:
     

      divert(0)dnl
      include(../m4/cf.m4)
      VERSIONID(`$Header$')
      OSTYPE(linux)
      FEATURE(nouucp)
      FEATURE(use_cw_file)
      FEATURE(`local_procmail',`/usr/bin/procmail')
      MASQUERADE_AS(unicamp.br)
      MAILER(local)
      MAILER(smtp)


    Foram feitas as seguintes mudanças:

  1. A diretiva include foi adicionada para inserir o arquivo de configuração do m4 que é necessário para a criação de um arquivo sendmail.cf
  2. A diretiva VERSIONID foi alterada para acomodar o caminho até o arquivo fonte do RCS juntamente com o número de sua versão, que é atualizada todas vezes que o arquivo é salvo dentro do RCS
  3. A diretiva OSTYPE foi alterada para informar ao m4 qual arquivo fonte utilizar de modo a refletir as peculiaridades do sistema operacional. Estes arquivos de configuração se encontram em /etc/mail/cf/ostype. Escolha o seu sistema operacional a partir dos arquivos que lá se encontram. Não inclua a terminação .m4.
  4. A diretiva MASQUERADE_AS(unicamp.br) serve para indicar que todas as mensagens que sairem deste computador receberão a identificação username@unicamp.br, não importa o nome que tenha na realidade.
  5. A diretiva FEATURE(use_cw_file) é muito importante e não deve ser esquecida. Quando especificada ela indica que a máquina irá aceitar mensagens para os domínios especificados no arquivo /etc/sendmail.cw. Caso o seu servidor DNS aponte o seu mailhost como servidor de vários domínios e estes domínios não estiverem especificados neste arquivo, as mensagens serão devolvidas para o remetente com o erro:

  6. config error: mail loops back to myself
    Para resolver este problema basta editar o arquivo /etc/sendmail.cw e incluir o nome do domínio em questão.
  7. Uma das maiores vantagens de se incluir o programa procmail como mailer local é a facilidade oferecida a usuários e administradores de filtrar as mensagens. O administrador pode filtrar as mensagens em nível de sistema e o usuário pode criar filtros para suas mensagens. Bastante útil para filtrar mensagens não solicitadas (junk email ou spam).

divert(0)dnl
include(../m4/cf.m4)
VERSIONID(`$Header$')
OSTYPE(linux)
FEATURE(nouucp)
MASQUERADE_AS(unicamp.br)dnl
FEATURE(masquerade_envelope)dnl
define(`SMART_HOST', smtp:mail.unicamp.br)
MAILER(local)
MAILER(smtp)
No arquivo de configuração acima, a máquina está se abrigando sob o nome unicamp.br MASQUERADE_AS(unicamp.br) e a linha FEATURE(masquerade_envelope) faz com que as linhas "From:" geradas também saiam identificadas como sendo do domínio unicamp.br. A definição SMART_HOST envia todas as mensagens não locais para serem processadas pela máquina mail.unicamp.br, que realiza a entrega final.


| Anterior | | Próxima | | Sumário | | Notas |

SENDMAIL
Página 19