Sendmail
Instalação e Configuração
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
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:
-
Compilador C
-
Processador de
macros M4
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.
-
Formatador de
textos (troff)
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.
-
Rotinas de acesso
a banco de dados
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.
As versões do programa Sendmail de número
8.8.x, suportam apenas a versão 1.85 do programa DB. Da versão
8.9 em diante, pode ser instaladas as versões superiores a 2.0 do
programa DB.
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
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
-
Caso esta biblioteca não esteja instalada,
obter o software
e proceder à sua instalação seguindo os seguintes
passos:
# cd /usr/local/src
# ftp ftp.unicamp.br
Connected to obelix.unicamp.br.
Name (ftp.unicamp.br:root):
anonymous
331 Guest login ok, send
your complete e-mail address as password.
Password:
ftp> cd /pub/mail/db
250 "/pub/mail/db" is
new cwd.
ftp> bin
ftp> get db-2.7.5.tar.gz
150 Opening BINARY mode
data connection for db-2.7.5.tar.gz (1087904 bytes).
226 Transfer completed.
local: db-2.5.9.tar.gz
remote: db-2.7.5.tar.gz
ftp> quit
# gzip -dc db-2.7.5.tar.gz
| tar xvf -
# cd /usr/local/src/db-2.7.5
# cd build_unix
# ../dist/configure
# make
# make install
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:
-
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
-
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
-
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.
-
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.
-
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:
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.
-
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