Configurando um servidor de email com Postfix, MySQL, SASL, MailScanner e MailWatch no CentOS 4.2

Este artigo descreve bem detalhadamente a configuração de um servidor de email no CentOS. Precisei fazer isso e não obtive muita informação referente a uma instalação de um servidor de email mais robusto no CentOS, visto que é uma distribuição mais recente. Então depois de ralar bastante, segue minha contribuição ao pessoal do VOL e a alguém que venha precisar!

[ Hits: 140.783 ]

Por: Farley em 19/06/2007


Instalando MailScanner e SpamAssassin



1. Instalando Mailscanner

1.1. Alterando local onde os RPMS irão ficar:

# vi /root/.rpmmacros

e deixe esta linha desta forma:

%_topdir /usr/src/redhat

1.2. Instalando o Mailscanner

# wget http://www.mailscanner.info/files/4/rpm/\
MailScanner-4.58.9-1.rpm.tar.gz

# tar -xvzf MailScanner-4.58.9-1.rpm.tar.gz
# cd MailScanner-4.58.9-1
# export LANG=C
# vi
# ./install.sh


Configurando:

# vi /etc/MailScanner/MailScanner.conf

e modifique as linhas:

%org-name% = mycompany.hosting
%org-long-name% = MyCompany Hosting
%web-site% = www.mycompany.com
%report-dir% = /etc/MailScanner/reports/pt_br

Run As User = postfix
Run As Group = postfix
MTA = postfix

Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming

File Timeout = 120
Maximum Archive Depth = 20
Virus Scanners = clamavmodule
Monitors for ClamAV Updates = /var/lib/clamav/*.cvd
Use SpamAssassin = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

Spam List = ORDB-RBL SBL+XBL SORBS-DNSBL CBL RSL DSBL spamcop
Allow IFrame Tags = yes
Allow Script Tags = yes
Allow Object Codebase Tags = yes
Convert Dangerous HTML To Text = no
Minimum Stars If On Spam List = 3
Spam Lists To Reach High Score = 3
Sign Clean Messages = yes
Spam Actions = deliver
High Scoring Spam Actions = deliver

# vi /etc/postfix/main.cf

e descomente a linha:

header_checks = regexp:/etc/postfix/header_checks

# vi /etc/postfix/header_check

e adicione esta linha no final do arquivo:

/^Received:/ HOLD

# mkdir /var/spool/MailScanner/spamassassin
# chown postfix.postfix /var/spool/MailScanner/spamassassin
# chown postfix.postfix /var/spool/MailScanner/incoming
# chown postfix.postfix /var/spool/MailScanner/quarantine

# vi /etc/MailScanner/virus.scanners.conf


e altere a seguinte linha pra ficar assim:

clamav /usr/lib/MailScanner/clamav-wrapper /usr

# vi /etc/MailScanner/filename.rules.conf

e altere as linhas abaixo pra ficarem assim:

allow .[a-z][a-z0-9]{2,3}s*.[a-z0-9]{3}$ Found possible filename hiding
allow s{10,0} Filename contains lots of white space
allow {[a-hA-H0-9-]{25,}} Filename trying to hide its real type
allow .exe$ Windows/DOS Executable
allow .bmp$ Windows bitmap file security vulnerability

# vi /etc/MailScanner/filetype.rules.conf

e altere as linhas abaixo pra ficarem assim:

allow self-extract - -
allow ELF - -
allow executable - -


chkconfig --levels 235 postfix off
chkconfig --levels 2345 MailScanner on

Algumas configurações do MailScanner

Max Children = 1 -> quantas instâncias do MailScanner estaremos executando por vez, útil para acelerar o escaneamento de emails, mas acarreta uma maior carga no servidor.

Filename Rules = %etc-dir%/filename.rules.conf -> lista com as regras de processamento de anexos, edite este arquivo e configure conforme sua necessidade.

Quarantine Infections = no -> armazena uma cópia da mensagem infectada no servidor, aconselho a colocar "no".

Deleted Bad Content Message Report = %report-dir%/deleted.content.message.txt -> mensagem enviada ao usuário caso a mensagem apresente conteúdo perigoso, personalize este arquivo conforme sua necessidade.

Deleted Bad Filename Message Report = %report-dir%/deleted.filename.message.txt -> mensagem enviada para o usuário notificando-o sobre o anexo infectado, personalize a mensagem conforme sua necessidade.

Deleted Virus Message Report = %report-dir%/deleted.virus.message.txt -> mensagem enviada notificando sobre vírus, personalize a mensagem conforme sua necessidade.

Stored Bad Content Message Report = %report-dir%/stored.content.message.txt -> mensagem enviada para o usuário notificando que o email está em quarentena, personalize conforme sua necessidade.

Stored Bad Filename Message Report = %report-dir%/stored.filename.message.txt -> mensagem enviada ao usuário notificando que o anexo está em quarentena, personalize conforme sua necessidade.

Stored Virus Message Report = %report-dir%/stored.virus.message.txt -> email enviado ao usuário notificado-sobre a mensagem que está em quarentena, personalize conforme sua necessidade.

Disinfected Report = %report-dir%/disinfected.report.txt -> mensagem enviada ao usuário notificando que o email foi desinfectado, personalize conforme sua necessidade.

Inline HTML Warning = %report-dir%/inline.warning.html -> mensagem adicionada ao corpo do email dizendo que este foi escaneado.

Inline Text Warning = %report-dir%/inline.warning.txt -> mensagem adicionada ao corpo do email dizendo que este foi escaneado.

Sender Content Report = %report-dir%/sender.content.report.txt -> mensagem de resposta notificando o usuário que ele está enviando um vírus.

Sender Error Report = %report-dir%/sender.error.report.txt-> mensagem de resposta notificando o usuário que ele está enviando um vírus.

Sender Bad Filename Report = %report-dir%/sender.filename.report.txt-> mensagem de resposta notificando o usuário que ele está enviando um vírus.

Sender Virus Report = %report-dir%/sender.virus.report.txt-> mensagem de resposta notificando o usuário que ele está enviando um vírus.

Local Postmaster = email@dominio.com.br -> Local postmaster que irá receber as notificações de tudo o que está acontecendo em seu MailScanner.

Travar por email

No arquivo MailScanner.conf existe uma linha assim:

Filename Rules = %etc-dir%/filename.rules.conf
Filetype Rules = %etc-dir%/filetype.rules.conf

A propriedade "Filename Rules" aponta para um arquivo que contém um conjunto de regras visando aceitar ou negar um nome de arquivo, por exemplo, arquivos com extensão .exe, com muitos espaços entre uma letra e outra e com extensões repetidas são fortes candidatos a serem negados.

A propriedade "Filetype Rules" é parecida com Filename, mas trata de tipos de arquivos baseados em sua extensão, .zip, .exe, .mp3.

Substitua estas linhas por:

Filename Rules = %etc-dir%/filename.rules
Filetype Rules = %etc-dir%/filetype.rules

O arquivo configurado poderá ter qualquer nome, desde que o mesmo termine com .rules. É assim que o mailscanner identifica se um arquivo é uma regra ou um conjunto de regras.

Crie os arquivos filename.rules e filetype.rules.

É necessário criar os arquivos para que o MailScanner identifique qual arquivo de regras utilizar.

A sintaxe do arquivo é:

From ou To ou FromOrTO: <email> <arquivo da regra a ser utilizado>

Um exemplo de arquivo filename.rules:

From: wberbert@sermap.com.br %etc-dir%/filename.allow.exe.rules.conf
FromOrTo: default %etc-dir%/filename.rules.conf

Isto significa que se o email vier de wberbert@sermap.com.br, o MailScanner utilizará o arquivo filename.allow.exe.rules.conf para validar os anexos, caso venha de outro email, utilizará filename.rules.conf.

A mesma sintaxe para filetype.rules:

From: wberbert@sermap.com.br %etc-dir%/filetype.allow.exe.rules.conf
FromOrTo: default %etc-dir%/filetype.rules.conf

Não esqueça de mudar o nome do arquivo que será apontado filename é diferente de filetype.

Página anterior     Próxima página

Páginas do artigo
   1. Configurações iniciais
   2. Instalar MySQL
   3. Criando o banco do Postfix no MySQL
   4. Configurar Postfix para se conectar no MySQL
   5. Configurar SASLauthd
   6. Utilizando o Postfix
   7. Instalando MailScanner e SpamAssassin
   8. Instalando MailWatch
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

A pós-instalação do Arch Linux

Instalando Prolink Pixelview PV-BT878P+

Arch + Repositórios do Manjaro - Monarch

Apache 2.0 + PHP + PostgreSQL no Slackware

Instalando o Zenmap e mantendo-o atualizado no Slackware Linux

  
Comentários
[1] Comentário enviado por clezioazevedo em 31/07/2007 - 13:04h

Olá,

no arquivo filetype.rule.conf, na linha 25 e 26, nos seguintes itens:

chkconfig --levels 235 postfix off
chkconfig --levels 2345 MailScanner on

quando eu restarto no mail.log, dá uma menssagem de um possível erro na primeira palavra chave. O que pode ser? Qual a importância dessas linhas?

[2] Comentário enviado por farleypiva em 31/07/2007 - 13:43h

Ola Clezio.

Cara, essas linhas setam os serviços que vão ser inicializados com a maquina e suas prioridades.
No nosso exemplo, estamos desativando a inicialização do postfix e ativando a do MailScanner, porque ao inicializar o MailScanner, automaticamente ele inicializa o postfix.
Agora, sobre o seu erro; posta ele aki pra podermos entender melhor o erro.

[3] Comentário enviado por clezioazevedo em 01/08/2007 - 11:18h

Segue o erro:


Aug 1 11:15:15 server MailScanner[7045]: MailScanner E-Mail Virus Scanner version 4.41.3 starting...
Aug 1 11:15:15 server MailScanner[7045]: Possible syntax error in first keyword on line 25 of /etc/MailScanner/filetype.rules.conf
Aug 1 11:15:15 server MailScanner[7045]: Possible syntax error in first keyword on line 26 of /etc/MailScanner/filetype.rules.conf
Aug 1 11:15:15 server MailScanner[7045]: Read 120 hostnames from the phishing whitelist

vale salientar que as linhas 25 e 26 são as postadas no comentario anterior.

[4] Comentário enviado por farleypiva em 01/08/2007 - 17:45h

Mas ele faz referencia a linha 25 e 26 do arquivo /etc/MailScanner/filetype.rules.conf, porque neste arquivo não tem que ter estes comando não

[5] Comentário enviado por oliveirajh em 01/08/2007 - 20:55h

Olá Farley,

Como temos que criar o diretório para armazenar os emails? Quais devem ser as permissões, o usuário e grupo para os diretórios?

[6] Comentário enviado por farleypiva em 02/08/2007 - 09:04h

Ola oliveirajh!

Seguinte cara, assim que o endereço que voce criou receber um email, automaticamente o postfix cria o diretório em /home/vmail/dominio/usuario.
Mas só para constar, o usuario e o grupo são "vmail" e somente o dono tem permissoes que são rwx.

[7] Comentário enviado por oliveirajh em 02/08/2007 - 15:49h

Olá Farley,

As permissões do diretório, o usuário o grupo estão tudo OK. Crie o domínio na tabela domains e o usuário teste@domínio.com.br na tabela users. Quando envio um email recebo a mensagem no log: Recipient address rejected: Access denied; .... O que pode estar acontecendo?

[8] Comentário enviado por oliveirajh em 02/08/2007 - 17:38h

Olá Farley,

Achei o erro. O serviço saslauthd não estava ativado. Parabéns pelo tutorial!!!!

[9] Comentário enviado por farleypiva em 03/08/2007 - 17:26h

Beleza então. Qualquer duvida poste aqui e muito obrigado.

[10] Comentário enviado por oliveirajh em 07/08/2007 - 17:55h

Olá Farley,

Toda vez que tento enviar um email com relay autenticado recebo a seguinte mensagem no log:

Aug 7 17:52:02 monaco postfix/smtpd[17212]: warning: SASL authentication failure: cannot connect to Courier authdaemond: Connection refused

Aug 7 17:52:02 monaco postfix/smtpd[17212]: warning: SASL authentication failure: Password verification failed

Aug 7 17:52:02 monaco postfix/smtpd[17212]: warning: unknown[201.28.103.42]: SASL PLAIN authentication failed: generic failure

O que pode estar havendo?

[]'s

Júlio

[11] Comentário enviado por oliveirajh em 07/08/2007 - 18:13h

Olá Farley...

O problema acima foi resolvido... havia um erro de digitação no /usr/lib/sasl2/smtpd.

Agradeço pela anteção!

Júlio

[12] Comentário enviado por jgama em 10/08/2007 - 23:42h

Amigo Farley e compania.

Estou ou estava seguindo seu tuto mais parei quan a primeira copilação de erro
erro: Installed (but unpackaged) file(s) found:
/usr/lib/libltdl.a
/usr/lib/libltdl.la
/usr/lib/libltdl.so
/usr/lib/libltdl.so.3
/usr/lib/libltdl.so.3.1.0


Erros de criação do RPM:
Installed (but unpackaged) file(s) found:
/usr/lib/libltdl.a
/usr/lib/libltdl.la
/usr/lib/libltdl.so
/usr/lib/libltdl.so.3
/usr/lib/libltdl.so.3.1.0

Já a copilação do maildrop ocorreu sem problrema.

O que fazer para consegui copilar e criar o pacote rpm do courier-authlib-0.58-1

Abraço

[13] Comentário enviado por farleypiva em 12/08/2007 - 20:48h

Caro José Valdir,

Estranho este erro, pois o maildrop deveria não ter compilado também...
Verifica se todos os pacotes que a gente instala no inicio como o rpm-build, gcc, gcc-c++ estão instalados.
Outro detalhe... voce atualizou o seu CentOS?

[14] Comentário enviado por TrancëJay em 13/08/2007 - 16:01h

Grande Farley,

Tudo parece estar funcionando perfeitametne a excessão do Mailwatch:
nenhuma das mensagens processadas aparecem na interface web, sempre fica a mensagem "No rows retrieved". Creio eu que seja algum problema de permissão, só não tenho idéia de onde. Tem alguma sugestão?

[15] Comentário enviado por farleypiva em 13/08/2007 - 16:10h

Beleza Leonardo?!

Cara, dá uma revisada nas configurações do MailWatch...usuario, senha, permissões também, conforme descrito no artigo. Se mesmo assim não funcionar, posta aqui novamente. Valeu

[16] Comentário enviado por jgama em 19/08/2007 - 23:40h

Meu irmanzinho farley, ainda não fui feliz, atualizei o sistema e mesmo assim continua dando os erros na copilação do pacote courier-authlib-0.58-1

Tentei em outra máquina que também esta rodando o Centos 5.0 e o erro é o mesmo,

Fora os arquivos que vc indicou para instalar, será que tem mais alguns faltando?

Fico no aguardo amigão estou a fim de ir até o fim, pois preciso muito aprender colocar um servidor de e-mail para funcionar.

Abraço

[17] Comentário enviado por farleypiva em 21/08/2007 - 13:41h

Vamos lá então Jose Valdir

Eu instalei utilizando o Centos 4, e não atualizei os pacotes não. Com certeza está faltando
algum pacote com as libs pra voce conseguir compilar.
Tenta instalar o pacote libc6-dev ou task-kernel-compiling ou linux-kernel-compiling...veja se existem alguns desses pacotes. Testa e poste aqui por favor.

Um abraço

[18] Comentário enviado por celsopimentel em 23/08/2007 - 17:02h

Instalei o MailWath, a unica alteração que tive que fazer para funcionar, talvez alguem jah passou ou possa passar po isso:
Em Mailscanner.conf
Virus Scanners = auto alterei para
Virus Scanners = clamav

Talvez mais alguém use o clavav....vlw

E parabés pelo artigo!

[19] Comentário enviado por caiolira em 23/11/2007 - 11:27h

Oi Farley,

realizei os passos do tutorial mas não estou conseguindo logar no IMAP. Ao logar via telnet obtenho a seguinte mensagem:
. login email@dominio.com senha
* BYE Temporary problem, please try again later

Ao examinar o arquivo de log em /var/log/maillog encontro o seguinte:
Nov 23 10:29:47 mail imapd: Connection, ip=[::ffff:127.0.0.1]
Nov 23 10:30:00 mail imapd: LOGIN FAILED, user=email@dominio.com, ip=[::ffff:127.0.0.1]
Nov 23 10:30:00 mail imapd: authentication error: Input/output error

Se você puder me ajudar, ficarei bastante grato.

Atenciosamente,
Caio Lira.

[20] Comentário enviado por farleypiva em 23/11/2007 - 12:20h

Bom dia Caio.

Faça o teste do pop3 e smtp conforme o exemplo em
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=6627&pagina=5
e me informe o que vc obteve.

[21] Comentário enviado por caiolira em 23/11/2007 - 13:28h

Farley,

consegui resolver. Quando havia colado um dos arquivos de configuração com o editor nano ele inseriu uma quebra de linha que estava causando o problema.

Agora estou com outro problema hehe. Já cadastrei no banco de dados usuario,dominio, transporte. Quando tento enviar uma mensagem encontro o seguinte erro no log:

Nov 23 11:48:36 mail postfix/trivial-rewrite[4698]: warning: do not list domain dominio.com in BOTH mydestination and virtual_mailbox_domains
Nov 23 11:48:36 mail postfix/smtpd[4696]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 <email@dominio.com: Recipient address
rejected: Access denied; from=<root@localhost.localdomain> to=<email@dominio.com> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapU004695: to=email@dominio.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30045, relay=[127.0.0.1] [127.0.0.1], dsn=5.0.0, stat=Service unavailable
Nov 23 11:48:36 mail sendmail[4695]: lANEmapU004695: lANEmapV004695: DSN: Service unavailable
Nov 23 11:48:36 mail postfix/smtpd[4696]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 <root@localhost.localdomain>: Recipient
address rejected: Access denied; from=<> to=<root@localhost.localdomain> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31069, relay=[127.0.0.1]
[127.0.0.1], dsn=5.0.0, stat=Service unavailable
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: lANEmapW004695: return to sender: Service unavailable
Nov 23 11:48:36 mail postfix/smtpd[4696]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 <postmaster@localhost.localdomain>:
Recipient address rejected: Access denied; from=<> to=<postmaster@localhost.localdomain> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapW004695: to=postmaster, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32093, relay=[127.0.0.1]
[127.0.0.1], dsn=5.0.0, stat=Service unavailable
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: Losing ./qflANEmapV004695: savemail panic
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: SYSERR(root): savemail: cannot save rejected email anywhere
Nov 23 11:48:36 mail postfix/smtpd[4696]: disconnect from localhost.localdomain[127.0.0.1]

Acredito que seja algo relativo a criacao de diretorios, pois nao vi o diretorio do usuario ser criado em /home/vmail.

Bastante grato pela atenção,
Caio Lira.

[22] Comentário enviado por farleypiva em 23/11/2007 - 14:20h

Beleza Caio.
Os diretorios são criados quando o usuario recebe o primeiro email.
Da uma olhada no arquivo /etc/postfix/main.cf nas linhas mydestination e virtual_mailbox_domains.
O meu está assim:
mydestination = $myhostname, localhost.$mydomain
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf

Aguardo retorno.

[23] Comentário enviado por caiolira em 23/11/2007 - 17:00h

Farley,

o problema estava na linha
smtpd_recipient_restrictions = permit_sasl_authenticated, reject

Esta linha nao permitia que enviasse email através do terminal simplesmenta através do comando "mail". Agora já estou conseguindo utilizar o servidor com o roundcube e estou enviando e recebendo emails entre as contas criadas. Agora só falta conseguir enviar email para a internet, estou aqui pesquisando o que falta para em seguida apontar o DNS em definitivo para este servidor.

Bastante grato,
Caio Lira.

[24] Comentário enviado por farleypiva em 23/11/2007 - 18:01h

É isso aí cara!
Qualquer consideração que voce ache interessante, favor comentar aqui para enriquecermos mais o material.
Um abraço.

[25] Comentário enviado por TrancëJay em 07/12/2007 - 11:37h

Cara, todos os seus relatórios funcionam? pq aqui no meu quase nenhum funciona. Ou a tela fica branca ou aparece 'no rows retrieved'. Já mandei um monte de spam e virus pra testar, aparece normalmente na 'recent list' mas os relatórios não funcionam. Alguma dica?

[26] Comentário enviado por farleypiva em 07/12/2007 - 13:21h

Bom dia!
Voce ta falando do Mailwatch né?! Cara, tenta instalar o pacote php-jpgraph e depois tenta gerar os graficos novamente.
Aguardo retorno.

[27] Comentário enviado por TrancëJay em 07/12/2007 - 16:45h

Já tava instalado esse pacote, até removi e reinstalei mas não adiantou :(

Vou acabar formatando a máquina e reinstalando tudo. De qualquer forma vlw pela atenção

[28] Comentário enviado por infortecpfz em 17/09/2009 - 14:06h

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



Fernando Santorsula

[29] Comentário enviado por chcdc em 22/12/2009 - 10:22h

Meus parabens pelo artigo


estou tendo uma certa dificuldade quando abro http://localhost/phpmyadmin/

aparece essa imagem

http://img685.imageshack.us/i/problemax.png/

Meu O.S eo centos 5.3


Sou iniciante em linux, se puder me ajudar agradeço

[]'S

Carlos /Aminduim

[30] Comentário enviado por farleypiva em 22/12/2009 - 10:32h

Aminduin, voce deve ter esquecido de instalar o php.
Confere aí.

[31] Comentário enviado por chcdc em 22/12/2009 - 10:41h

Sim o php esta instalado sim

Package php-5.1.6-23.2.el5_3.i386 already installed and latest version



[32] Comentário enviado por farleypiva em 22/12/2009 - 13:01h

Cara, então restarta seu apache
service httpd restart

Só para esclarecer, esta tela que foi exibida são as instruções php que não estão sendo interpretadas.

[33] Comentário enviado por chcdc em 22/12/2009 - 13:21h

Continua o mesmo problema

[34] Comentário enviado por farleypiva em 22/12/2009 - 13:25h

Faz o seguinte então:
Cria um arquivo teste.php com o conteudo:
<?
phpinfo();
?>

E acesse esse arquivo pelo navegador. Tem que aparecer um monte de informações referentes ao php. Se não aparecer é pq o php não está instalado corretamente.

[35] Comentário enviado por jgrudek em 29/01/2013 - 18:07h

boa tarde fiz todo o procedimento do Tutorial
porem na hora que envio e-mails para fora volta um e-mail
com o seguinte erro:
<joaogustavo@meuemail.com.br>: host meuemail.com.br[x.x.x.x] said: 550 SMTP
AUTH is required for message submission on port 587 (in reply to RCPT TO
command)

preciso de uma ajuda obrigado.


[36] Comentário enviado por Depeche2004 em 23/12/2016 - 13:41h

Olá Farley.

Não consegui dar prosseguimento no tutorial, pois os links e dependências estão desatualizados.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts