On Fri, 11 May 2001, Mauro Ferreira wrote:

> Gostaria de configurar meu sendmail para n�o aceitar spams
> O meu sendmail � o sendmail 8.9.3-24cl, e gostaria que apenas os usu�rios
> permitidos ou dos dominios permitidos pudessem mandar e-mail usando o smtp
> desse sendmail, mas que o servidor conseguisse mandar e-mail para qualquer
> dom�nio.


Voc� perguntou!  Preparado? ;)


Primeiro: atualize o sendmail para o 8.11.3.

Use o access_db.

Use "M4 Configuration" para configurar e customizar o sendmail.

Existe muito material e links em www.sendmail.org, e muita coisa
acha-se com via google.com.

Anti-spam � algo que exige dedica��o.

Comecei a me empenhar em bloquear spam e tenho obtido resultados
incr�veis com pouco esfor�o.  Os spammers brasileiros s�o na maioria
muito fraquinhos... :))

Use MAPS e ORBS para conter spam, funcionam de forma excelente!!!

Roteiro para compilar e instalar seu pr�prio sendmail:

- Pegue os fontes em www.sendmail.org, ou alguma outra fonte
  confi�vel.  Confirme a assinatura MD5!

- expanda o sendmail: tar xzf sendmail.8.11.3.tar.gz

- acrescente suporte � REGEX:

  cat >sendmail-8.11.3/devtools/Site/site.config.m4
  APPENDDEF(`confENVDEF',`-DMAP_REGEX')
  ^D

- Compile:

  cd sendmail-8.11.3
  ./Build 2>&1 | tee log
  # tem que aparecer "-DMAP_REGEX" nas linhas de compila��o!
  # n�o deve aparecer erro nem warnnig

- Instale:

  ./Build install-strip 2>&1 | tee -a log

- Gere o Manual de Opera��o:

  cd doc/op
  pic op.me | eqn -Tascii | nroff -me -Tascii | gzip -9nc >opme.gz

- Copie-o para o cf:

  cd ../..
  cp doc/op/opme.gz cf

- Copie o cf para /etc/mail, assim voc� n�o depende mais dos fontes:

  mv cf /etc/mail/cf

- Documenta��es b�sicas para configura��o:

  cd /etc/mail
  less     cf/README
  zless -s cf/opme.gz

- prepara diret�rio mqueue para futuros testes

  cd /etc/mail
  mkdir -m 700 mqueue


Pronto, agora � s� gerar o sendmail.cf e testar.

Arquivo .mc "inicial", para come�ar... :

dnl wks 23/05/2001
dnl
VERSIONID(`linux setup')dnl
OSTYPE(linux)
dnl ------------------------------------------------------------
define(`confPRIVACY_FLAGS',`goaway,nobodyreturn')dnl
dnl ------------------------------------------------------------
FEATURE(always_add_domain)dnl
FEATURE(`no_default_msa')dnl   nao responde a porta 587
FEATURE(local_procmail)dnl
dnl ------------------------------------------------------------
dnl                          ANTI-SPAM
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
FEATURE(`dnsbl')dnl
FEATURE(`dnsbl',`inputs.orbs.org')dnl
dnl ------------------------------------------------------------
MAILER(local)dnl
MAILER(smtp)dnl
dnl ------------------------------------------------------------
dnl
dnl  m4 cf/m4/cf.m4 inicial.mc | diff /etc/mail/sendmail.cf - 
dnl
dnl  m4 cf/m4/cf.m4 new.mc | tee new.cf | diff sendmail.cf - 
dnl  m4 cf/m4/cf.m4 new.mc >      new.cf 
dnl  m4 cf/m4/cf.m4 new.mc | diff new.cf - 
dnl  sendmail -bs -Cnew.cf -OQueueDirectory=/etc/mail/mqueue
dnl
dnl end of file


- Para compilar e criar o sendmail.cf inicial:

  cd /etc/mail
  m4 cf/m4/cf.m4 new.mc > sendmail.cf


Este � o "ponto de partida". As linhas "m4" que aparecem acima
funcionam para:

    m4 cf/m4/cf.m4 inicial.mc | diff sendmail.cf -

Usado para pequenas altera��es no .mc, e verifica��o das altera��es
que ser�o feitas no sendmail.cf.

Para altera��es mais complexas, eu copio o inicial.mc para "new.mc",
a�, a linha

   m4 cf/m4/cf.m4 new.mc | tee new.cf | diff sendmail.cf - 

Gera o new.cf e mostra as diferen�as com sendmail.cf

   m4 cf/m4/cf.m4 new.mc | diff new.cf - 

O mesmo, mas sem estragar o new.cf anteriormente gerado.

   sendmail -bs -Cnew.cf -OQueueDirectory=/etc/mail/mqueue

Esse comando realiza:

     -bs   executa no modo SMTP, usando stdin/stdout
     -C    define o arquivo de configura��o a ser usado
     -OQueueDirectory  Define o diret�rio de fila de email,
                       evita usar o diret�rio /var/spool/mqueue
                       usado pelo sendmail em opera��o

Para testar com o -bs � preciso conhecer o b�sico do protoloco SMTP.
No exemplo abaixo, as linhas com ">>" s�o do sendmail:

   sendmail -bs -Cnew.cf -OQueueDirectory=/etc/mail/mqueue
>> 220 servidor.dominio.com.br ESMTP Sendmail 8.11.3/8.11.3; Wed, 23 May 2001 23:36:39 
>-0300
   helo test
>> 250 servidor.dominio.com.br Hello root@localhost, pleased to meet you
   mail from:[EMAIL PROTECTED]
>> 501 5.1.8 [EMAIL PROTECTED] Domain of sender address [EMAIL PROTECTED] does not 
>exist
   mail from:<>
>> 250 2.1.0 <>... Sender ok
   rcpt to:root
>> 250 2.1.5 root... Recipient ok
   data
>> 354 Enter mail, end with "."on a line by itself
   Subject: teste1

   Este � apenas um teste...

   .
>> 250 2.0.0 f4O2coX20662 Message accepted for delivery
   quit
>> 221 2.0.0 servidor.dominio.com.br closing connection


Depois do comando "data", primeiro vem os headers, depois uma linha em
branco, e em seguida o corpo da mensagem.

Para instalar o novo .mc e .cf:

  cd /etc/mail
  mv -v inicial.mc `date +%Y-%m-%d`-inicial.mc
  mv -v new.cf inicial.cf
  mv -v new.mc inicial.mc

  /etc/rc.d/init.d/sendmail stop
  /etc/rc.d/init.d/sendmail start

ou

  kill -HUP `head -n1 /var/run/sendmail.pid`
  tail /var/log/messages
ou
  tail /var/log/maillog


E se quiser testar novamente:

  telnet 0 25


� preciso criar e administrar o arquivo access.db, que � criado com o
makemap a partir de um aquivo texto, normalmente chamado de "access":

Arquivo access de exemplo:

127.0.0.                RELAY
# IP da sua rede
123.45.78.              RELAY
dominio.com.br          RELAY
virtual.com.br          RELAY

smap.domain.xx          REJECT
from:[EMAIL PROTECTED]  ERROR:5.7.1:"530 Caia fora, spammer!"
canaldevendas.com.br    ERROR:5.7.1:"530 Dominio bloqueado, contacte 
[EMAIL PROTECTED] para sanar o problema"

#end of file


- E gere o access.db com:

  makemap hash access <access

n�o � preciso reiniciar o sendmail quando se faz uma altera��o no
access e se gera um novo access.db, entretanto como o sistema � multi
task, a qualquer monento o sendmail pode estar querendo acessar o
access.db.  Para evitar problemas durante a cria��o de um novo
access.db:

  cd /etc/mail
  makemap hash newaccess <access && mv -v newaccess.db access.db

O comando "mv" � garantidamente "at�mico".  Isto significa que n�o h�
possibilidade de uma task estar querendo acessar este arquivo durante
a munda�a, de forma que ou as tasks est�o acessando o accesss.db
antigo, ou v�o acessar o access.db novo.


N�o esqueca de criar o usuario "abuse", ou um alias, e de responder
adequadamente a este endere�o.

Para conter SPAM tamb�m � preciso conhecer como denunciar o spammer
aos administradores do dom�nio que serve ao spammer.  Comentei isso em
outro email.  Sites anti-spam:

      http://www.abuse.net
      http://mail-abuse.org   MAPS, usado com FEATURE(`dnsbl')
      http://www.orbs.org     ORBS, usado com FEATURE(`dnsbl',`inputs.orbs.org')

O ORBS � excelente, combatendo muitos spammers e bloqueando servidores
"largados" pela Internet, que ningu�m cuida, e que permitem "open relay".

Com essas dicas, e muita leitura, e muitos testes, � poss�vel come�ar
a mexer no sendmail de forma segura e produtiva.

Mais fontes:

     http://www.dicas-l.unicamp.br/dicas-l/Treinamentos/
     http://www.gamk.com.br/artigos.php3?file=sendmail.txt
     http://www.sendmail.org/
     http://www.sendmail.org/faq/
     http://www.sendmail.org/other-sendmail-links.html

     http://google.com  ;)

E o Bat Book:

     sendmail
     Bryan Costales with Eric Allman
     2nd Edition
     O'Reilly & Associates (www.ora.com)
     ISBN: 1-56592-222-0


--- Wagner                      [EMAIL PROTECTED]


Assinantes em 24/05/2001: 2288
Mensagens recebidas desde 07/01/1999: 114792
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista: 
            mailto:[EMAIL PROTECTED]

Responder a