SPAM e vírus são os maiores problemas para quem usa o email como ferramenta de trabalho e comunicação diária. Usando qmail você pode construir um servidor que filtra todo o lixo digital e entrega somente mensagens legítimas, e o mais importante: pode vender o serviço para outras empresas.
Instalar:
A primeira vez que se usa o módulo perl CPAN, algumas perguntas são feitas, você pode ignorá-las respondendo "n" na primeira ou preencher todas.
Alguns módulos são recomendados antes de iniciar, basta entrar no:
# perl -MCPAN
e digitar:
cpan> install nomedomodulo
Recomendado:
ExtUtils::MakeMaker
File::Spec
Pod::Usage
HTML::Parser
Sys::Syslog
DB_File
Net::DNS # responda 'n' para os testes
Mail::Audit
Mail::Internet
Net::SMTP
Digest::SHA1
Net::Ident
# perl -MCPAN -e shell
cpan> install Mail::SpamAssassin
O módulo CPAN automaticamente resolve pendências para você, basta responder as perguntas no decorrer da instalação positivamente.
Se o SpamAssassin for instalado com sucesso, você pode testá-lo assim:
To: test@test.com
From: eu@test.com
Subject: teste
X-Spam-Checker-Version: SpamAssassin 2.64 (2004-08-08) on
mailgateway.empresa.esa.br
X-Spam-Level: **
X-Spam-Status: No,hits=2.7 required=5.0 tests=DATE_MISSING,DNS_FROM_RFCI_DSN,
NO_REAL_NAME autolearn=no version=2.64
OI MAMÃE!
Se esta foi a saída, spamassassin instalado com sucesso, senão, verifique tudo novamente em busca da falha. Talvez reinstalar usando o pacote com os fontes seja necessário.
# tar -xvzf pacotecommoduloperl.tar.gz
# cd pacotecommoduloperl
# perl Makefile.PL
# make
# make install
Criar /etc/rc.d/rc.spamd:
Vá no diretório /etc/rc.d e crie o arquivo rc.spamd, preencha-o com o seguinte conteúdo:
[2] Comentário enviado por gustavo_marcon em 28/09/2004 - 18:29h
Olá. parabéns, ótimo artigo e realmente excelente solução para empresas. Sei que foge um pouco do seu artigo, mas saberia me dizer o q tenho q configurar no /etc/procmailrc pra usar junto ao spamassassin?
[3] Comentário enviado por patrickbrandao em 28/09/2004 - 21:42h
Gustavo,
eu ja use spamassassin via procmail num servidor que tinha:
qmail + vpopmail + procmail + spamassassin.
Veja como fiz:
a pasta do dominio era /home/vpopmail/domains/dominio.com/
dentro dela, como em todas as pastas de dominio do qmail, ha um arquivo chamado .qmail-default, o conteudo dele é:
o script acima, passa todas as mensagens menores que 100k no spamc, voce pode usar o comando spamassassin se nao tiver o spamd na memoria. se mensagem for marcada como spam, ela vai para /dev/null (buraco negro) e ja era, caso ela passe, o vdelivermail cuida dela.
existem muitos macetes para tratar mensagens com o procmail, essa é apenas uma palinha,
[4] Comentário enviado por cioban em 02/11/2004 - 01:43h
Ola Patrick, parabéns pelo seu artigo muido bom.
Estou com o seguinte problema, eu já tenho o qmail+vpopmail+courier-imap+qmail-scanner+spamassassin funcionando quase legal, o qmailscaner passa as mensagens pelo spamasassin que remarca o assunto, o que eu quero fazer é integrar o qmail com o procmail para que todas as mensagens que forem spam , fossem direcionadas para uma pasta "SPAM" dentro do Maildir de cada usuário, por favor me ajude.
# caso o usuario nao exista (spammer tentando adivinhar), lixo, isso
# ajuda a diminuir a queue do qmail, mas burla a rfc (retire se quiser)
:0w
* ? test "$EXITV" = "255"
/dev/null
# 2 - caso a mensagem seja classificada como spam
# ----------------------------------------------------------------
:0w
* ^Subject:.*SPAM
$SPAMDIR
:0w
* ^X-Spam-Status: Yes
$SPAMDIR
# 3 - caso contrario, entrega normal
# ----------------------------------------------------------------
:0w
|/vpopmaildir/bin/vdelivermail '' bounce-no-mailbox
#----------------------- fim /etc/procmail/tospamdir
bom, vale lembra: a pasta que estiver dentro da variavel $SPAMDIR tem que existir, senao a mensagem já era! Para que o procmail entregue em maildir, o caminho tem que terminar com / (barra)
A pasta de spam só pode ser vista pelo protocolo IMAP pois o POP3 nao suporta pastas, assim, se voce usa squirrelmail como webmail, isso vai ser legal. voce pode criar efeitos independentes, leia:
[6] Comentário enviado por cioban em 09/11/2004 - 08:05h
Patrick,
Funcionou muito bem esse esquema do procmail, só não funcionaou a questão de se o endereço não existir manda para /dev/null , mas tá bom demais, muito obrigado.
O que eu quero agora é bloquear as mensagens que chegam sem assunto, mas o servidor teria que enviar uma mensagem avisando que bloqueou, será que o qmail-scanner ou o procmail bloqueia isso??
[7] Comentário enviado por patrickbrandao em 09/11/2004 - 08:57h
Vc vai ter que usar expressoes regulares para detectar o final da linha apos a string "Subject: ", passe para um script que vai mandar a mensagem de aviso, adicione ao inicio do script procmail:
#--------------------------- inicio script procmail
MYMAIL="$EXT@$HOST"
:0w
* ^Subject: $
/vpopmail/scripts/aviso.sh $MYMAIL
#------------------------- fim
Obs: nao estou muito certo acerca da regex "* ^Subject: $"
[9] Comentário enviado por seruas em 21/02/2005 - 17:54h
Oi Patrick
Usei seu procedimento passo a passo mas nao consigo fazer telnet a porta 25 tentei dar um Netstat -na mas nada scutando na porta 25 e tambem tenho um erro que eh: readproctitle service errors: ... `If [ -z "$QMAILDUID" -o -z "$NOFIL , nao acredito que seja isso o qmail esta funcionando bem , se puder me ajudar agradeco, ou entao como faco configuracao parecida no senmail?? tou usando RedHat Enterprise Edition AS versao 4 tudo atualizado. Obrigado
Sergio
[10] Comentário enviado por patrickbrandao em 22/02/2005 - 00:25h
Sergio,
isso é um erro no arquivo /var/qmail/supervise/qmail-smtpd/run
Edite e procure onde ta errado... no site lifewithqmail.org tem uma parte ensinando a sintaxe deste script.
(reinicie o qmail depois de arrumar)
Patrick Brandao
[11] Comentário enviado por lanvargas em 31/03/2005 - 17:09h
Olá Patrick,
fiquei muito entusiasmado com o seu artigo, porém acho que não resolve o meu problema, tenho um servidor de domínios, portanto vários domínios hospedados, e uma quantidade enorme de contas de e-mail, que se alteram constantemente dada a natureza do serviço prestado. Venho tendo grandes problemas com o meu serviço graças a ação de spammers e também a falha na aplicação do meu servidor que é um apliancce do Gruponet, empresa de Limeira-SP. Como eles não resolvem o meu problema, começei a pesquisar na internet uma solução para isso. Será que você poderia me indicar uma ?
o que o gateway_smtp faz e' receber os e-mails em nome do dominio, limpar e repassar para o servidor_email, ele trata apenas os e-mails do domino e nao a conta, ou seja, se voce programar o rcpthost para aceitar e-mails do dominio exemplo.com, ele vai receber
nomedaconta@exemplo.com e enviar para o servidor_email, nao se importando o que possa ser "nomedaconta", que vem antes do @
Assim, nao importa qual software vc usa em servidor_email. Se voce quer hoje adicionar uma conta nova, o gateway_smtp nao se importa se ela existe ou nao, ele vai retirar virus e spam e entregar para o servidor_email. A solucao que usei nesse artigo traz algo novo para o mercado, o FILTRO SMTP TRANSPARENTE. A conexao com destino ao servidor real pode ser redirecionada com iptables para o gateway de e-mail, que limpara o e-mail (independente de quem seja o destinatario) e entregara' para o servidor oficial (postfix, exchange, etc...), se a conta existe ou nao, se tem quota ou nao, isso quem vai tratar e o servidor oficial.
[13] Comentário enviado por mayconsan em 07/05/2005 - 14:17h
Meu procmail ta gerando o seguinte log:
procmail: Non-zero exitcode (1) from " test "$EXITV" = "255""
procmail: No match on " test "$EXITV" = "255""
procmail: No match on "^Subject:.*SPAM"
procmail: No match on "^X-Spam-Status: Yes"
procmail: Executing "vpopmail/bin/vdelivermail,,bounce-no-mailbox"
procmail: Program failure (100) of "vpopmail/bin/vdelivermail"
procmail: Assigning "LASTFOLDER=/vpopmail/bin/vdelivermail bounce-no-mailbox"
From suporte@meudominio.com.br Sat May 07 17:14:01 2005
Subject: Re: teste
Folder: **Bounced**
Ele não envia a mensagem pra lugar nenhum se ela nào for Spam.
Oque poderia estar acontecendo?
[14] Comentário enviado por angelocwn em 17/05/2005 - 21:18h
Boa noite! Prezado, por favor caso saiba como resolvo o problema que vou relatar mande e-mail para angelocwn@veloxmail.com.br, obrigado!
Segue problema: Estou com um servidor rodando RedHat Fedora, Qmail, Qmail-Scaner e quando qualquer usuário tenta responder confirmação de leitura de um e-mail não aparece nenhum erro de envio, porém a confirmação fica barrada como spam. E um outro problema é que preciso fazer com que toda mensagem enviada por um determinado usuário vá também uma cópia para seu superior.
[16] Comentário enviado por zanja em 27/04/2006 - 15:43h
Olá, trabalho em um provedor e estou com o seguinte problema.
Em um de nossos dominios recebemos uma quantidade muito grande de Spam que são filtrados atoa, gostaria de saber como configurar no rcpthosts os e-mails válidos do dominio <login@dominio.com.br> e não apenas o dominio.
[17] Comentário enviado por patrickbrandao em 27/04/2006 - 16:45h
Olá Zanja,
apos instalar o qmail e o vpopmail, descompacte novamente os fontes do netqmail, baixe o patch chkuser (google it!), aplique-o aos fontes do qmail, se seu diretorio do vpopmail for diferente de /home/vpopmail, edite o patch e altere o caminho (2 ocorrencias). Recompile o qmail e mude o uid e gid do processo qmail-smtpd para vpopmail e vchkpw respectivamente.
A partir desse momento, o qmail nao aceitará mensagens enviadas para caixas inexistentes (nem mesmo via smtp, a mensagem será rejeitada logo no inicio da conexao e nao entrará na fila)
[18] Comentário enviado por zanja em 02/05/2006 - 18:44h
Oie Patrick,
Já tenho este Patch aplicado, pois utilizo um big patch do netqmail.
Essa máquina funcina com um gateway, o usuários não são local nela, no rcphosts adicionamos apenas o dominio completo, e não as contas, existe algum outro lugar pra configurar isto?
[19] Comentário enviado por zekaos em 27/09/2006 - 17:06h
Ola Patrick,
Estou precisando de uma solução como esta. Segui os passos descritos aqui e fiz alguns testes, porem nao obtive resultados. Eu fiz a instalação em uma maquina com fc5, e Nat dos pacotes para ela ( vindos da Internet e passando pelo firewall ), o servidor de e-mail é um Lotus Notes. Os pacotes instaldos foram as ultimas versões. Sabe o que poderia estar errado?
[20] Comentário enviado por ubiratamuniz em 05/10/2006 - 09:10h
Prezado Patrick,
Agradeço imensamente pela tremenda boa vontade em fazer esse artigo. Esta solução é exatamente o que eu procurava :-)
Porém, apanhei de alguns detalhes, os quais descobri se tratarem de errinhos de digitação.
Exemplo: no arquivo run do supervise/qmail-smtpd, o primeiro "if" está como "If" (com "I" maiúsculo).
Outro: no /var/qmail/rc, o comando "exec env" está separado do "qmail-start" quando deveria estar na mesma linha. Faltou alguma sinalização ali (acho que é a barra invertida, certo?) para indicar no final da linha que a mesma continua na linha a seguir. Demorei uns dois dias para descobrir esse detalhe... :-)
Só encontrei essas duas falhas, mas que são importantíssimas para a turma que usa "control C e control V" para agilizar as instalações baseadas no seu tutorial. Corrigindo essas duas falhas, tudo funciona 100%.
(já resolvi a dúvida, comi mosca mesmo, desculpe... :-) )
No mais, agradeço novamente e desejo muito sucesso,
[22] Comentário enviado por uelitonl em 26/03/2008 - 10:28h
Amigos, apesar de saber que este artigo ainda seja de 2004, e que existem coisas muito mais novas agora, eu resolvi implementá-lo e funcionou perfeitamente bem. Tenho duas dúvidas que agradeceria muito se pudessem me explicar. Para onde os emails considerados SPAM estão sendo enviados? Como analiso tudo o que foi enviado para quarentena? Abraço a todos e obrigado.
[23] Comentário enviado por hthumbo em 24/04/2008 - 04:20h
Oi Brandão,
Na parte final do artigo você disse "Não esqueça de configurar o qmail para abrir relay para sua rede,".
Pretendo saber como configurar o Qmail para abrir relay da minha rede?
A segunda dúvida é a seguinte:
Supondo que a minha rede funciona da seguinte maneira:
- ISP cria MX record
- Na rede local tenho uma firewall (Isa Server) com 2 placas de rede, uma com ip publico e outra com ip privado que constitue o gateway da minha rede interna.
Na firewall está publicado o servidor de email
- Na rede tenho um domain server com o exchange instalado, DNS Server interno, WINS, DHCP
Pretendo saber como implementar o gateway para o cenário que tenho, visto que o meu DNS é interno?
[24] Comentário enviado por lucos66 em 25/08/2008 - 15:10h
olá amigo, tenho uma questao na qual estou quebrando a cabeca a mais de uma semana, será que voce poderia me dar uma sugestao ?
meu cenario é o seguinte : tenho um RHL3 com meu servidor de emails e nele tenho o SPAMC desviando os emails para um outro
servidor RHEL5, no qual esta instalado o spamassassin completo. o que ocorre é que nao sei como configurar o desvio corretamente
como pegar o retorno do spamassassin e checar para ver se naquele email tinha ou nao spam......
na verdade o que eu preciso fazer é o seguinte. primeiro de tudo, fazer uma copia do email em disco, para que se o spamd o perder
nao haja problemas... segundo, desviar este email que chegou para o spamassassin no outro servidor e ao retornar, se for spam
jogar em um folder chamado SPAM, se nao, encaminhar ao usuario...
veja meu procmailrc como está :
SHELL=/bin/bash
LOGABSTRACT=all
MAILDIR=/var/mail
LOGFILE=/dump/maillog
VERBOSE=on
SPAMDIR="/var/mail/SPAM"
[25] Comentário enviado por infortecpfz em 17/09/2009 - 14:08h
Parabéns pelo Artigo!
Me esclareça uma dúvida por favor! Eu preciso configurar um grupo de e-mail para meu domínio,
semelhante aos grupos do Yahoo! e Google Grupos, para quando eu enviar um e-mail para
@meudominio.com.br todos que tiveram conta cadastrada neste domínio receba a mesma
mensagem, poderia me auxiliar no mesmo por favor? Muito obrigado :wq