Sendmail - User Database
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 18 de Junho de 1999
O sendmail é um programa de entrega de mensagens que oferece inúmeras
opções de configuração. Uma delas é a facilidade de se realizar alterações
no campo de endereço das mensagens. Os endereços dos recipientes ou
destinatários das mensagens podem ser alterados de acordo com
especificações fornecidas pelo administrador de redes. Estas definições
são armazenadas em um banco de dados externo que é consultado
pelo sendmail sempre que processar uma mensagem.
Normalmente, os endereços são consultados no arquivo /etc/aliases.
Se não forem encontrados lá, é então consultado o arquivo
chamado .forward, no diretório pessoal do usuário. Se o
banco de dados dos usuários (userdb) estiver habilitado, as
definições deste banco de dados serão consultadas após a consulta
ao arquivo /etc/aliases e antes da consulta ao arquivo .forward.
O userdb é compilado automaticamente quando o sendmail é compilado
com suporte ao NEWDB ou HESIOD. Para verificar se o seu programa
sendmail provê este suporte, emitir o comando:
# sendmail -d0.1 -bt < /dev/null
Version 8.9.3
Compiled with: LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND NETINET
NETUNIX NEWDB QUEUE SCANF SMTP USERDB XDEBUG
^^
Como podemos ver, a versão do sendmail é 8.9.3 e o suporte ao
USERDB está habilitado.
Precisamos agora sinalizar ao sendmail onde se encontra este banco
de dados. Precisamos incluir no arquivo /etc/sendmail.cf a definição:
O UserDatabaseSpec=/etc/userdb.db
Caso o arquivo /etc/sendmail.cf seja criado a partir do m4, incluir
no arquivo mc correspondente a seguinte linha:
define(`confUSERDB_SPEC',/etc/userdb.db)
O passo seguinte é criar o banco de dados de usuários. Isto
é feito usando-se o comando makemap:
# makemap btree /etc/userdb.db < /etc/userdb
O banco de dados, ou mapa, será criado tomando por base o arquivo
no formato texto que se encontra em /etc/userdb.
O arquivo /etc/userdb consiste de entradas contendo dois
valores: uma chave e seu valor correspondente. A chave é
a identificação de um usuário (username), seguido de ":" e
um de dois valores possíveis: maildrop ou mailname. A
palavra chave utilizada determina a natureza do campo seguinte.
Por exemplo:
root:maildrop queiroz@ccuec.unicamp.br,joao@unicamp.br
No exemplo acima, mensagens endereçadas para o usuário
root são direcionadas para os usuários <queiroz (a) ccuec unicamp br>
e <joao (a) unicamp br>. Os endereços para onde as mensagens
são redirecionadas devem ser separados por vírgulas. É também
possível incluir-se um endereço por linha, como abaixo:
root:maildrop queiroz@ccuec.unicamp.br
root:maildrop joao@unicamp.br
Neste segundo caso, o comando makemap deve ser invocado
com a opção "-i".
A outra possibilidade é a utilização da palavra
chave mailname:
queiroz:mailname queiroz@dicas-l.com.br
joao:mailname joao@acme.com.br
maria:mailname maria@netroad.com
Os valores acima fazem com que mensagens enviadas
pelo usuário queiroz saiam identificadas como se
tivessem sido enviadas por <queiroz (a) dicas-l com br>.
As mensagens enviadas pelo joao sairão como se tivessem
sido enviadas por <joao (a) acme com br>.
Esta configuração é bastante útil para provedores de
acesso, que possuem vários clientes, cada um dos quais
com um domínio diferente. Desta forma cada um dos
clientes poderá enviar mensagens e sua identificação
corresponderá ao domínio de sua empresa.
Veja o trecho do cabeçalho de uma mensagem:
From queiroz Thu Jun 3 08:01:37 1999
Return-Path: <queiroz@dicas-l.com.br>
Received: (from queiroz@localhost)
by galaxy.ccuec.unicamp.br (8.9.3/8.9.1) id IAA05608
for queiroz; Thu, 3 Jun 1999 08:00:21 -0300
Como se pode ver, o valor do caminhao de retorno
é <queiroz (a) dicas-l com br>.
O Unix limita o nome dos usuários em oito caracteres.
Desta forma não é possível ser muito criativo na forma
como os nomes dos usuários são definidos. A facilidade
userdb nos permite também um maior grau de flexibilidade
neste aspecto. Veja o exemplo:
queiroz:mailname Rubens.Queiroz
Rubens.Queiroz:maildrop queiroz
Não esquecer que neste caso, onde o recipiente das
mensagens é alterado, as entradas mailname e maildrop devem
ocorrer em pares. Isto para que quando alguém responder
a <Rubens Queiroz (a) ccuec unicamp br> a mensagem possa ser entregue
corretamente ao usuário Unix chamado queiroz.