Visite também: BR-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]

Tutoriais/sendmail-qmail-postfix/configurando-sendmail

De UnderLinux Wiki

Imagem:qmail.png

Configurando o Sendmail



Tabela de conteúdo

Introdução

Sendmail é o servidor de e-mails (MTA) mais usado em toda internet, porém também um dos mais complexos e "difíceis" de serem configurados.

O sendmail tem uma variedade de "features" muito utéis e outras talvez nem tanto para o que você irá precisar. Portanto, iremos neste pequeno artigo usar a ferramenta M4 que vem junto com o sendmail para podermos "configurar" o nosso sendmail.cf da forma mais adequada.

Algumas pessoas dizem que não se considera um verdadeiro administrador de redes quem não varou noites e noites tentando fazer alguma configuração no sendmail direto nas complicadas rules (regras) do arquivo sendmail.cf. Com M4, tudo isso se torna muito mais fácil...


Instalação

Primeiramente verifique a versão do seu SendMail, e faca download do source correspondente da sua versão no site http://www.sendmail.org .

Iremos tomar como exemplo a versão 8.11.2. Descompactando o source dela veremos que tem um diretório chamado "cf". É neste diretório que iremos trabalhar.

Vamos a descrição do conteúdo dos principais diretórios:

--|
|
cf--|
|
cf <- arquivos de configuração para geração do .cf (arquivos .mc)
|
featues <- features disponíveis
|
m4 <- possui os arquivos de configuração do
m4
|
mailer <- configuração das featues de mailer
|
ostype <- algumas configurações especificas de alguns Sistemas Operacionais

Estes são os mais usados, porém existem outros diretórios como sitesconfig (uucp), sh (para configurar as info para o cf) e etc ...

Primeiramente entre no diretório cf, então iremos criar o nosso arquivo .mc:

  • gamk.mc
divert(-1)
divert(0)dnl
VERSIONID(`$Id: gamk.mc,v 8.1 2001/02/12 09:48:05 [gamk@gamk.com.br] Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl

Este é um arquivo mc básico, mas podemos melhorá-lo adicionando algumas features:

divert(-1)
divert(0)dnl
VERSIONID(`$Id: gamk.mc,v 8.1 2001/02/12 09:48:05 [gamk@gamk.com.br] Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
FEATURE('redirect')
FEATURE('virtusertable')
FEATURE('access_db')
FEATURE('use_cw_file')

Agora já ficou mais interessante, temos suporte a tabela de acesso (evitar SPAM), virtuasertable (usado para criar dominios virtuais), use_cw_file (para podermos listar num arquivo os domínios que o sendmail vai responder).

Existem muitas features que podemos adicionar, para uma lista completa digite:

# ls ../features

Feito isto basta digitar o seguinte comando:

# m4 ../m4/cf.m4 gamk.mc
sendmail.cf

E Pronto!!! foi gerado o nosso sendmail.cf com as features que escolhemos.


Configuração

Vamos a configuração do sendmail.

Edite o arquivo /etc/mail/local-host-names e coloque a lista (um por linha) dos domínios do o sendmail.

Exemplo:

# cat /etc/mail/local-host-names
gamk.com.br
linuxsecurity.com.br
meu_dominio.com

Iremos configurar as nossas "aliases" para isto edite o arquivo "aliases".

# cat /etc/mail/aliases
MAILER-DAEMON: root
webmaster: gamk
linke: linke@bol.com.br
clientes: :include:/usr/local/clientes.txt

OBS: Quando alterar este arquivo digite sempre "newaliases" para atualizar as databases.

Perceba que todos os e-mail que chegarem para o usuário MAILER-DAEMON, eles serão redirecionados para o usuário root, o webmaster - gamk o linke para linke@bol.com.br e o clientes para todos os e-mail (um por linha) presentes no arquivo /usr/local/clientes.txt

Agora partiremos para a configuração do virtusertable.

Ele serve para você ter no mesmo servidor os e-mails (gamk@gamk.com.br e gamk@linuxsecurity.com.br).

Bem vamos a um exemplo prático:

# cat /etc/mail/virtusertable
gamk@gamk.com.br gamk
@gamk.com.br diego
gamk@linuxsecurity.com.br renato
@meu_dominio.com %1@bol.com.br

Explicando: Todos os e-mails que chegarem para o domínio gamk.com.br irão para o usuário (local na máquina) chamado "diego" com excessão do e-mail gamk@gamk.com.br que irá para o usuário "gamk".

Os e-mails que chegarem para gamk@linuxsecurity.com.br irão para o usuário local na máquina "renato".

Qualquer e-mail que chegar no domínio, meu_dominio.com, será redirecionado para o domínio bol.com.br mantendo o nome do usuário.

Feito isso digite:

# makemap hash virtusertable < virtusertable

para criar o virtusertable.db.

Agora iremos configurar o controle de acesso.

# cat /etc/mail/access
200.150.59 RELAY
hackers.lab 550 Nao permetimos Hackers
gamk.com.br REJECT
diego.gamk.com.br OK

Nesta configuração foi permetido o RELAY da rede 200.150.59.0/24, foi também rejeitado e-mails de gamk.com.br menos os vindo da máquina diego.gamk.com.br.

Foi também rejeitado (550 = REJECT) e-mails vindo de hackers.lab enviando a mensagem de erro como "Nao permtimos Hackers".

Depois de fazer a sua configuração basta digitar:

# makemap hash access < access

Pronto o seu sendmail está configurado e já pode ser usado normalmente...

# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2;
Sat, 10 Mar 2001 20:23:04 -0300
expn gamk
250 2.1.5 GAMK
vrfy diegolinke
250 2.1.5 Diego Linke

Perceberam que o SendMail acabou de entregar através dos comandos "expn" e "vrfy" dois usuário válidos na máquina ?

Vamos desabilitar esta função para que isto não aconteça.

Edite o arquivo sendmail.cf e procure pela linha:

O PrivacyOptions=authwarnings

Substitua por esta:

O PrivacyOptions=authwarnings,noexpn,novrfy

Restart e sendmail e pronto!!!

# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2; Sat, 10 Mar 2001 20:23:04 -0300
expn gamk
502 5.7.0 Sorry, we do not allow this operation
vrfy diegolinke
252 2.5.2 Cannot VRFY user; try RCPT to attempt delivery (or try finger)

Que tal não revelarmos o número da versão do nosso sendmail ?

Vamos lá, edite o arquivo sendmail.cf e procure pela linha:

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

Substitua por:

O SmtpGreetingMessage= GAMK Mail Server [smtp.gamk.com.br]

Pronto, agora você acaba de mudar a mensagem de Welcome!

# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 GAMK ESMTP Mail Server [smtp.gamk.com.br]

Se você quiser, pode mudar o conteúdo do help (comando help), basta alterar o arquivo /etc/mail/helpfile.

# cat /etc/mail/helpfile
smtp ********************************************************
smtp * Sys/Admin: Diego Linke *
smtp ********************************************************

Pronto, restart o sendmail.

Agora quando o usuário digitar "help" ao invés desaparecer o help do sendmail irá aparecer esta mensagem:

********************************************************

* Sys/Admin: Diego Linke *

********************************************************

Obs.: para startar o sendmail use: "sendmail -bd -q15m"


Mais informação

  • Man Pages:
  • man sendmail
  • man m4
  • man aliases
  • man mail.local


Epílogo

Espero ter ajudado... Boa Sorte :D

Diego Linke

http://www.gamk.com.br


Créditos

  • Este tutorial foi desenvolvido por Diego Linke e editado no wiki por Duca.

Imagem:Avatar olhos spawn 2.jpg --Duca 13:23, 12 Janeiro 2006 (BRDT)