On Tue, 31 Aug 2004 16:26:13 -0000, Martin Augusto
<[EMAIL PROTECTED]> wrote:
> Ola amigos,
> 
> Tenho um cliente que precisa restringir o envio de mensagens de maneira
> particular. Por exemplo, o usuario local [EMAIL PROTECTED] soh poderia enviar
> mensagens para [EMAIL PROTECTED] Jah os demais usuarios poderiam mandar emails
> livremente.
> 
> Estou usando os patches spamcontrol no qmail e poderia habilitar essa
> funcionalidade adicionando "[EMAIL PROTECTED]" em qmail/control/badrcptto. Porem,
> isso seria aplicado a todos os usuarios, e nao apenas para o usuario em
> questao.
> 
> Alguem sabe como eu poderia resolver isso?

Bom, tenho essa solu��o implementada aqui na empresa, e j� postei uma
solu��o na lista, pore�m, como fui melhorando, acho que n�o custa
postar novamente a solu��o atualizada. ;-)

Para funcionar isso estou usando qmail + SpamControl, vpopmail,
courier-imap, daemontools, qmail-scanner.

O primeiro passo � separar o qmail-smtpd pra rede interna e externa,
ou seja, tenho dois diret�rios no /var/service, o smtpd-internal e o
smtpd-external, as diferen�as entre eles s�o as seguintes:

smtpd-internal:
- Usa pop-before-smtp
- Usa uma vers�o alterada do qmail-scanner
(qmail-scanner-queue-internal.pl) onde eu removi o SpamAssassin, com
isso n�o perco tempo e nem processamento, j� que os mails s�o internos
- N�o faz nenhum tipo de checagem de DNS, nem de reverso

smtpd-external:
- Usa autentica��o atrav�s do vchkpw
- Faz checagens de DNS (LOCALMFCHECK, MFDNSCHECK)
- Usa uma vers�o alterada do REQUIREAUTH que n�o permite que entrem
mails com o from @seu-dominio sem estar autenticado

Feito isso, fa�o o controle de envio/recebimento de determinados
usu�rios que s� podem ser locais, fiz um script que altera o usu�rio,
chamei de so_mail_interno.sh, aqui vai ele

-------------------------------------------------
#!/bin/sh

if [ "$1" = ""  -o "$2" = "" ]; then
  echo "Sintaxe: $0 conta dominio [on|off]"
  exit 1
fi

CONTA=$1
DOMAIN=$2
ON_OFF=$3

VMODUSER="/usr/local/vpopmail/bin/vmoduser"

if [ ! -d /var/domains/$DOMAIN ]; then
  echo "Dominio invalido"
  exit 1
fi

if [ ! -d /var/domains/$DOMAIN/$CONTA ]; then
  echo "Conta invalida"
  exit 1
fi

case $ON_OFF in
[oO][nN])
  [ ! -e /var/domains/$DOMAIN/$CONTA/.qmail ] && \
   cd /var/domains/$DOMAIN/$CONTA && \
   cat /var/domains/dot-qmail-internal | sed "s/\|conta\|/$CONTA/g" > \
   ./.qmail && chown vpopmail ./.qmail
  ${VMODUSER} -x -u -w -i -r -q 1048576 [EMAIL PROTECTED]
  ;;
[Oo][Ff][Ff])
  [ -e /var/domains/$DOMAIN/$CONTA/.qmail ] && \
    rm -f /var/domains/$DOMAIN/$CONTA /.qmail
  ${VMODUSER} -x -u -q 10485760 [EMAIL PROTECTED]
  ;;
*)
  echo "Sintaxe: $0 conta dominio [on|off]"
  exit 1
esac

exit 0
-------------------------------------------------

Esse script poe alguns "flags" no usu�rio, um deles � para n�o
permitir relay, isso s� funciona se voc� usar pop-before-smtp, pois
ele n�o adiciona esses usu�rios na lista de open-relay quando eles
acessam o pop.

Como voc� vai notar, esse script copia um arquivo
/var/domains/dot-qmail-internal, para o .qmail na home do usu�rio (eu
uso /var/domains, porque tenho mais espaco no /var, mas o padr�o �
/usr/local/bpopmail/domains)

Aqui vai tamb�m o conte�do desse arquivo

-------------------------------------------------
|condredirect [EMAIL PROTECTED] /var/qmail/bin/mail_interno.pl
/var/domains/galle.com.br/|conta|/Maildir/
-------------------------------------------------

Como voc� pode ver tamb�m, esse .qmail chama um script em perl, o
/var/qmail/bin/mail_interno.pl, e o conte�do dele est� aqui tamb�m:

-------------------------------------------------
#!/usr/local/bin/perl

exit (($ENV{'SENDER'} =~ /^[^\@ [EMAIL PROTECTED] ]*\.?gall?[eiy]\.com\.br$/i) ? 2 : 
0);
-------------------------------------------------

Esse script verifica se o SENDER � de um dos meus dom�nios locais, se
for, deixa passar, sen�o desvia para uma outra conta chamada internos.

Como eu alterei a fun��o REQUIREAUTH do spamcontrol para que exija
autentica��o apenas se o from for de um dom�nio local, quem mandar de
fora, n�o conseguir� mandar pra um desses usu�rios nem se tentar
forjar o from.

Espero n�o ter esquecido de nada, essa solu��o funciona perfeitamente
aqui, mas, como voc� pode ver, n�o � t�o simples... =)

[]�s
-- 
Renato Botelho
ICQ: 54596223
AIM: RBGargaBR
_______________________________________________________________
Para enviar um novo email para a lista: [EMAIL PROTECTED]
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/

Responder a