Qmail e chkuser - fila de mensagens limpa

Muitos spammers enviam seu lixo para emails nome + @dominio, sendo que o nome é baseado em dicionário (de amanda a walace!). Esses e-mails enchem a fila (queue) e devoram o processador. Aprenda como evitar isso com um patch para qmail: chkuser.

[ Hits: 44.526 ]

Por: Patrick Brandao em 18/07/2006 | Blog: http://www.patrick.eti.br


Instalação do qmail e vpopmail



Esse capítulo normalmente seria maior, mas eu já fiz o serviço e resumi num script:

Qmail


URL: http://www.patrick.eti.br/software/qmail/qmail-install
Desc.: Instalará qmail, ucspi, daemon-tools, deixará os fontes em /usr/local/src.

Vpopmail


URL: http://www.patrick.eti.br/software/qmail/vpopmail-install
Desc.: Instalará o vpopmail em /home/mailhome, deixará os fontes em /usr/local/src.

Após ter instalado o qmail, baixe o script de controle do serviço da URL abaixo:
Mova-o para /var/qmail/bin e torne-o executável, crie um link simbólico em /usr/sbin.

Os comandos de execução dos passos acima estão ordenados abaixo:

# cd /usr/local/src
# wget www.patrick.eti.br/software/qmail/qmail-install
# sh qmail-install

# cd /usr/local/src
# wget www.patrick.eti.br/software/qmail/vpopmail-install
# sh vpopmail-install

# wget www.patrick.eti.br/software/qmail/qmailctl
# mv qmailctl /var/qmail/bin
# chmod +x /var/qmail/bin/qmailctl
# ln -s /var/qmail/bin/qmailctl /usr/sbin/


Pronto, se tudo foi executado corretamente, você já tem um servidor SMTP e POP3 instalado.

É necessário configurar o MySQL para o vpopmail, deixe o servidor MySQL em execução e configure o vpopmail para acessá-lo em /home/mailhome/etc/vpopmail.mysql.

Vamos adicionar um domínio e conta de teste:

# vadddomain teste.com.br Senha_do_postmaster
# vadduser suporte@teste.com.br senha


Levante o qmail/pop3:

# qmailctl start

Envie um e-mail para suporte@teste.com.br usando a porta 25 do próprio servidor:

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 quick mail at mail.teste.com.br ESMTP
helo mail
250 quick mail at mail.teste.com.br
mail from postmaster@teste.com.br
250 ok
rcpt to: suporte@teste.com.br
250 ok
data
354 go ahead
From: postmaster@teste.com
to: suporte@teste.com.br
Subject: teste


teste
.

250 ok 1150820385 qp 18685
quit
221 quick mail at router.smol.com.br
Connection closed by foreign host.

O e-mail foi enviado corretamente, se você, na linha:

rcpt to: suporte@teste.com.br

Digitasse:

rcpt to: bobesponja@teste.com.br

A mensagem seria aceita! É aqui que vamos atuar, se tudo deu certo, pule para o próximo capítulo.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação do qmail e vpopmail
   3. Instalando chkuser no qmail
   4. Testando qmail com chkuser
Outros artigos deste autor

NoCatAuth - Construindo um firewall/gateway autenticado

Ziproxy - Proxy de compactação e redução de imagens

Freeradius - servidor radius eficiente e completo

Acelerador de conexões dial-up para provedores de acesso

Gateway de email com Qmail - proteção antivírus e antispam

Leitura recomendada

Servidor de e-mail com anti-vírus: MailScanner + Exim + Clamav + Cpanel/WHM

MailScanner - Email Gateway Virus Scanner

Integrando o Postfix + SpamAssassin + Fetchmail + Procmail + MS Exchange

Servidor de email completo com Postfix

Hotwayd :: Conectando-se ao servidor POP3 do Hotmail

  
Comentários
[1] Comentário enviado por cioban em 26/07/2006 - 11:06h

Olá Patrick,
Muito Legal o seu artigo, eu tentei implementar isso um vae mas não deu certo, pois eu possuo servidores diferentes.
O esquema que eu uso é quase igual ao outro artigo que você publicou "Gateway de e-mails com Qmail", eu uso 2 servidores mas o primeiro aos invés de passar anti-spam e anti-vírus, realiza apenas a autenticação dos usuários SMTP através do Vpopmail+Mysql. O servidor 1 é SMTP e MX ao mesmo tempo e o segundo é anti-spam, anti-vírus e Vpopmail (Maildir).

Tem como utilizar o chkuser neste caso, com o MX em um server e o vpopmail em outro?

Desde já agradeço,
Sérgio Cioban Filho

[2] Comentário enviado por patrickbrandao em 26/07/2006 - 12:01h

Sim, basta instalar o vpopmail no gateway de e-mail, e configurá-lo para usar o banco de dados do servidor final. Para testes, o comando vuserinfo deve conseguir obter informações de qualquer conta. Depois é só instalar o chkuser no qmail.

[3] Comentário enviado por cioban em 14/08/2006 - 16:47h

Olá Patrick,
O esquema funcionou legal, mas agora estou com outra dúvida.
Tem como usar o CHKUSER junto com autenticação SMTP, eu tentei utilizar aqui, mas antes de pedir senha no SMTP o chkuser retorna erro.

Valeu,
Sérgio Cioban Filho

[4] Comentário enviado por lord_roxton em 15/08/2006 - 15:02h

Caro Patrick como é feita esta configuração no vpopmail para usar o banco de usuários de outra máquina! Estou usando um gateawy de e-mail para filtrar spam e virus, porém apliquei o patch chkuser nele, aí recusa todas as mensagens!

[5] Comentário enviado por patrickbrandao em 16/08/2006 - 14:11h

Configure o vpopmail para usar o banco de dados em ~vpopmail/etc/vpopmail.mysql. Teste os usuários no gateway com o comando vuserinfo

[6] Comentário enviado por antenor.morais em 25/09/2006 - 15:08h

Patrick, o uso do chkuser bloqueia a autenticação externa do smtp? Na minha configuração anterior eu aplicava o seguinte patch:

cp /usr/local/src/qmail-smtpd-auth-0.31/README.auth .
cp /usr/local/src/qmail-smtpd-auth-0.31/base.* .
patch -p0 < ../qmail-smtpd-auth-0.31/auth.patch

com o chkuser essa etapa não é possível pois dá erro na aplicação do patch.

tem como usar o chkuser + autenticação de smtp?

Abraços

[7] Comentário enviado por renatolpimenta em 04/04/2007 - 15:22h

opa, alguém aí sabe como usar o chkuser junto com o procmail apagando os email's marcados como spam de forma transparente??? já que o chkuser não funciona com o .qmail-default mandando os spams pra saprocmail

[8] Comentário enviado por eltonrauh em 30/08/2007 - 12:09h

Minha dúvida é outra...
Por exemplo eu tenho uma aplicação que manda 20000 msg simultaneas, ai uma delas o email do destinatário é inválido, logo, o qmail retorna para aplicação a msg de erro, no entanto era para aplicação continuar enviando mas infelizmente ela para pq não um reipiente válido para receber está msg de erro. Por uma acaso alguem sabe como fazer com que essa msg de erro não retorne para o destinatário e mande para uma outra caixa postal válida não causando a interrupção no sistema??

Abraços

Elton Rauh

[9] Comentário enviado por luiscarlos em 11/01/2008 - 23:46h

Ola Patrick, gostei muito do seu artigo, mas estou com o seguinte problema o qual acredito que vc possa me ajudar.

Tenho qmail com vpopmail funcionando perfeitamente, apliquei o patch qmail-smtpd-auth-0.31 para fazer autenticação e compilei sem problemas o qmail, ele esta recebendo e enviando email numa boa, no outlook configurei a conta e tentei enviar email e APARENTEMENTE funcionou, ele pediu autenticação para o envio dos emails e, caso eu digitasse a senha incorreta ele me retornava pedindo a senha novamente, apos colocar a senha ele enviava numa boa, entao acreditei que estava funcionando.

Sendo assim, fui para mais teste, tentei enviar um email usando o comando mail na console e para minha supresa, o email chegou ate mim, e eu nem tive que digitar meu usuario e senha, tente dar um telnet no meu smtp e para minha surpresa ele aceitou que eu enviasse email sem autenticação.

Entao busquei outro patch para aplicar no meu email, tentei usar o qmail-auth-20010105 e tambem o qmail-authentication-067 mas nenhum dos patches funcionou, aconteceu exatamente igual.

Verificando algumas documentacoes entrei o seguinte

---------------------------------------------------------------

qmail-smtpd must
be invoked with three arguments: hostname, checkprogram, and
subprogram

hostname is simply used to form the CRAM-MD5 challenge. qmail-smtpd
invokes checkprogram, feeding it the username and password, in the
case of LOGIN or PLAIN, or the username, challenge, and response, in
the case of CRAM-MD5. If the user checks out, checkprogram invokes
subprogram, which just has to exit with a status of 0 for the user to
be authenticated. Otherwise, checkprogram exits with a non-zero
status. subprogram can usually be /usr/bin/true (or /bin/true,
depending on your flavor of OS).

---------------------------------------------------------------

meu ingles nao eh muito bom mas pelo que entendi nessa parte

If the user checks out, checkprogram invokes
subprogram, which just has to exit with a status of 0 for the user to
be authenticated. Otherwise, checkprogram exits with a non-zero
status. subprogram can usually be /usr/bin/true

se o usuario NAO for autenticado o checkprogram chama um subprograma que deve retornar 0 (zero) para que o usuario seja autenticado, sendo assim, concluí todos os usuarios serao autenticados, entao no meu raciocinio logico alterei a linha do meu qmail-smtp/run que esta assim

-------------------------------------------
exec /usr/local/bin/softlimit -m 30000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qmail-smtpd dominio.organizacao.pais \
/var/vpopmail/bin/vchkpw /usr/bin/true 2>&1

--------------------------------------------
para assim

--------------------------------------------
exec /usr/local/bin/softlimit -m 30000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qmail-smtpd dominio.organizacao.pais \
/var/vpopmail/bin/vchkpw /usr/bin/false 2>&1

--------------------------------------------

veja a diferença no final do script onde mudou de /bin/true para /bin/false
reiniciei meu qmail e fiz alguns testes, pelo outlook foi solicitada minha senha do smtp
mas nao logava nem com a senha correta com o comando mail pela console ainda conseguia enviar emails...


POR QUE? como faço para autenticar meus usuarios?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts