Howto: Filtro de emails usando Spamassassin + Postfix + ClamAV + MailScanner + MailWatch

O MailWatch é uma interface Web para o gerenciamento do MailScanner + ClamAV + SpamAssassin + Postfix, existem diversas formas de implementar uma solução para filtragem de emails, mas a minha preferência é configurar um servidor (virtual ou não) separado para esta função, principalmente devido ao fato do processo de filtragem consumir uma boa parte de recursos do hardware em servidores mais movimentados. Outra grande vantagem deste método, é que ele é compatível com qualquer serviço de email (zimbra, exchange, groupwise, etc….).

Neste post vou explicar como montar um servidor para filtrar todo o seu tráfego de emails, realizando a remoção do “lixo eletrônico” antes de entregar as mensagens para o seu servidor principal de emails.

Partindo de uma instalação mínima do CentOS 5.3, remova o “sendmail”
# yum remove sendmail
Instale o postfix + serviços necessários
# yum install postfix mysql-server php-mysql php-gd  httpd gcc spamassassin patch rpm-build

Instalando o clamAV:
Baixe os pacotes RPM do clamav em: http://packages.sw.be/clamav/ e instale com o comando:
# rpm -ivh clam*
Preparing...       ############ [100%]
1:clamav-db        ############ [100%]
2:clamav           ############ [100%]
3:clamav-devel     ############ [100%]
4:clamd            ############ [100%]

Instalando o Mailscanner:
Faça o download do tar.gz contendo os pacotes RPM
# wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.XX.XX-X.rpm.tar.gz
# tar xvfz MailScanner-4.XX.XX-X.rpm.tar.gz
# cd MailScanner-4.XX.XX-X
# ./install.sh

Agora edite o arquivo /etc/MailScanner/MailScanner.conf
%org-name% = Nome da Empresa
%org-long-name% = Nome completo da empresa
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanners = clamd
Clamd Socket = /tmp/clamd.socket
Use SpamAssassin = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

Instalando o Mailwatch:
Faça o download da última versão “stable” do mailwatch em http://mailwatch.sourceforge.net
Descompacte o pacote de instalação e entre no diretório mailwatch-1.0.X
# mysql -u root < create.sql

Crie o usuário mailwatch no mysql com permissões completas na base mailscanner
# mysql -u root
> GRANT ALL ON mailscanner.* TO [email protected] IDENTIFIED BY 'minhasupersenha';
> GRANT FILE ON *.* TO [email protected] IDENTIFIED BY 'minhasupersenha';

Edite o arquivo MailWatch.pm e ajuste os parâmetros db_user e db_pass de acordo com o usuário e senha criados.
my($db_user) = 'mailwatch';
my($db_pass) = 'minhasupersenha';

Agora copie o arquivo MailWatch.pm para o CustomFunctions do MailScanner
# cp MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions

Criando um usuário para o MailWatch (este é o usuário com permissões de administrador, após criar este usuário, os outros podem ser geridos através da interface Web):
# mysql mailscanner -u mailwatch -p
Enter password: ******
> INSERT INTO users (username, password, fullname, type) VALUES ('admin',md5('senhasegura'),'Administrator','A');

Movendo a interface web do Mailwatch para o root dir do apache:
# mv mailscanner/ /var/www/html/

Ajustando permissões:
# cd /var/www/html/mailscanner/
# chown root:apache images
# chmod ug+rwx images
# chown root:apache images/cache
# chmod ug+rwx images/cache

Crie o arquivo conf.php com base no conf.php.example
# cp conf.php.example conf.php
Agora edite o conf.php e ajuste os campos: DB_USER e DB_PASS.

Integrando o MailScanner e o Mailwatch
Pare o MailScanner
# service MailScanner stop

Edite o arquivo /etc/MailScanner/MailScanner.conf e verifique se estas opções estão ajustadas

Always Looked Up Last = &MailWatchLogging
Detailed Spam Report = yes
Quarantine Whole Message = yes
Quarantine Whole Message As Queue Files = no
Include Scores In SpamAssassin Report = yes
Quarantine User = root
Quarantine Group = apache (this should be the same group as your web server)
Quarantine Permissions = 0660

Opcionalmente (para facilitar o debug)
Always Include SpamAssassin Report = yes

Para integrar Whitelist/Blacklist ao mailwatch:
Edite o arquivo SQLBlackWhiteList.pm
Procure pela função “CreateList” e nela defina as informações da sua base de dados.
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'minhasupersenha';

# cp SQLBlackWhiteList.pm /usr/lib/MailScanner/MailScanner/CustomFunctions

Agora vamos configurar o postfix para fazer relay das mensagens do domínio:

Edite o arquivo /etc/postfix/main.cf
relay_domains = exemplo.com.br

Agora edite /etc/postfix/transport e insira
exemplo.com.br       smtp:172.22.10.93
Execute:
# postmap /etc/postfix/transport

Estas duas últimas configurações farão com que o postfix permita o relay de mensagens do domínio exemplo.com.br
Já o Transport, irá informar para o postfix que as entregas para o domínio exemplo.com.br devem ser no ip 172.22.10.93

Após realizar testes (muito importante para um ambiente de produção), edite a zona de DNS do seu domínio, e altere a sua entrada MX de forma que aponte para o filtro de emails (e não para o seu mailserver). Desta forma todas as mensagens enviadas para exemplo.com.br cairão no sistema de filtragem e se estiverem limpas serão encaminhadas para o seu servidor de emails.

Para acessar o Mailwatch: http://ip_do_mailwatch/mailscanner

Publicado em Sysadmin Marcado com: , , ,

Dia Internacional do Administrador de Sistemas

thank-468x60

Um sysadmin desembalou o servidor de uma caixa para hospedar este site, instalou um sistema operacional, aplicou correções de segurança, verificou as condições elétricas e de refrigeração da sala onde está este servidor, monitorou-o para mantê-lo estável, configurou uma aplicação, e mantém backups em caso de qualquer problema. Tudo isso para servir está página.

Um sysadmin instalou os roteadores, fixou os cabos, configurou as redes, configurou o firewall, e assistiu e orientou o tráfego para cada salto da rede que corre ao longo do cobre, fibra óptica, e até o ar para trazer a Internet para seu computador. Tudo para ter certeza de que o site encontrou o caminho a partir do seu computador até o servidor e vice-versa.

Um sysadmin assegura que à sua rede é segura, acessível e funcional. Um sysadmin garante que o seu computador está trabalhando de maneira saudável em uma rede saudável. Um administrador de sistema tem backups para proteger contra desastres humanos e de outros tipos, detém os portões contra as ameaças à segurança, e mantém as impressoras funcionando, não importa quantas cópias você queira.

Um administrador de sistema se preocupa com spam, vírus, spyware, e ainda com incêndios e inundações.

Quando o servidor de arquivos ou de e-mail cai as 2h da madrugada de um domingo, o seu sysadmin é acionado, acorda, e vai ao trabalho.

Então se você consegue ler isto, agradeça ao seu bom e velho administrador de sistema ou sysadmin – sei que ele ou ela é apenas uma das dezenas ou centenas de pessoas, cujo trabalho traz-lhe o e-mail de cada dia, a mensagem instantânea de seu filho, a ligação telefônica sem custo e esta página.

Copiado na integra de: http://www.sysadminday.com.br que por sua vez foi traduzido de http://www.sysadminday.com 😛

orgplgs-468x60

Ninguém (que não seja da área), sabe ou entende o que realmente fazemos e pelo que passamos, os feitos heróicos, as migrações complexas e as soluções mirabolantes que na grande maioria das vezes passam despercebidas para 99.9% das pessoas…

Parabéns a todos os Administradores de Sistemas que frequentam este blog e que diariamente vestem a sua roupa de Super homem para ir trabalhar!

Galeria de fotos do Dia Internacional do Administrador de Sistemas:

Links Sugeridos:

Gift Ideas (e porquê não?) 😛

Sysadwhat? What Does a System Administrator Do?

Publicado em Sysadmin

Aniversário de Salamanga

Salamanga é um pequeno municipio que fica ao Sul de Maputo. No sábado passado, quando estávamos retornando da Reserva dos Elefantes, nos deparamos com um grande grupo de pessoas próximo ao rio que passa ao lado do município.

AVISO: O Conteúdo deste post pode ser considerado forte para algumas pessoas, para continuar lendo, clique no link “more…”

Leia mais ›

Publicado em Blog Pessoal Marcado com: ,

Reserva dos Elefantes

Neste sabado que passou, participei de uma “expedição” à Reserva dos Elefantes, que fica ao Sul de Maputo, no caminho da Ponta do Ouro.

[singlepic=1059,300,300,,left]O ponto de encontro da expedição foi as 04:30 da manhã na fila do batelão que atravessa para Catembe. O objetivo era de pegar a primeira travessia do dia, para aproveitar o sabado ao máximo. (Foto: X-Files no Batelão de Catembe)

Após chegarmos em Catembe, seguimos caminho para a Reserva chegando perto das 7h da manhã (depois de algumas paradas é claro).

Apesar de ser a “Reserva dos Elefantes”, até o final do dia, apenas uma pequena parte do grupo havia havistado algum elefante…

O ponto alto do passeio foi a paisagem fenomenal da reserva e uma manada de hipopótamos que estava na agua a apenas alguns metros do nosso grupo.

[singlepic id=1138]

Na foto acima, sou eu tentando me esconder no meio da vegetação a apenas alguns metros da manada de hipos.

Para ver todas as fotos, visite Galeria de Fotos: Reserva dos Elefantes

Publicado em Blog Pessoal Marcado com: , , ,

Migrating from b2evolution 2.X to WordPress

This is just a translation to English (and reduced version) from my original original post “Migrando do b2evolution 2.x para o WordPress” (Portuguese version)

I migrated my 2 blogs based on b2evolution 2.4.6 to WordPress 2.8.1 using this method. It should also work for version 2.4.7 (not tested, feedback appreciated), but I’m not sure if it will work for version 3!

After searching all over the Internet, I found this script at this topic on wordpress.org forum, and since the developer bodum said that he is not going to support this script, I made a backup at import-b2evolution-wp2.php.zip
Note that this script is designed to use an old version of wordpress (2.0.4) I strongly recommend to use this version and them upgrade to latest! I had some issues trying to migrate straight from b2evolution 2.4.6 to wordpress 2.8.1.

Important things to note before migrating:

– Post dates aren’t correctly migrated, the script will get the dates from the “last modified” field, you have 2 options: Fix the script by yourself or just fix the dates on the wordpress panel after the migration.
– Tags aren’t migrated at all.
– The link structure is a bit different on 2 blog engines, you can fix this using the Redirection plugin mentioned at the end of this post.
– I don’t take any responsibility for any data loss during this process!!!
– Make all your backups before starting the migration (database and b2evolution folder)

Migrating in 10 easy steps 😉
1- Remove all the files from the b2evolution folder, cleaning space for your wordpress install.
2- Upload wordpress “2.0.4” to the blog folder
3- Install WordPress on the same database used by b2evolution
4- Verify if wordpress was correctly installed and proceed to login using /wp-admin
5- Copy the file import-b2evolution-wp2.php to wp-admin/import-b2evolution-wp2.php
6- Access the import script using http://exemplo.com/wp-admin/import-b2evolution-wp2.php
7- The script will ask you database information, wich blog to import, and some more information (i had issues importing linkblog so I just skipped this)
8- Click on Submit and start praying. Now you should verify the output of the script and check if you see any import errors.
9- Access your fresh (and outdated) wordpress blog, verify if all posts and comments are there. If you see any invalid characters, don’t worry, it will be fixed during the upgrade process.
10- Now you should upgrade WordPress 2.0.4 to the latest version (2.8.1 atm), this is fair simple: Just remove all the files from your wordpress folder and upload the latest WordPress version to this folder. Then you should access http://exemplo.com/wp-admin/upgrade.php (After creating the new configuration file, run the upgrade script again to upgrade your database structure).

That’s it, b2evolution 2.4.6 migrated to WordPress 2.8.1 🙂

To fix any broken links you can use the “Redirection plugin” avilable at Urbangiraffe and wordpress.org
The good thing about this plugin, is that it doesn’t use .htaccess and you dont really need to full understand mod_rewrite from apache. This plugin also keeps a log of all the 404 errors helping you to trackdown broken links.

If you need any help during the migration process, post on the comments field and I will try to help you.

Publicado em Sysadmin Marcado com: ,

Migrando do b2evolution 2.X para o WordPress

There’s an English version of this post here.

Depois de muito pesquisar pela internet, consegui encontrar uma maneira **atualizada** para migrar o b2evolution 2.X (2.4.6 no meu caso) para o WordPress. Resolvi documentar este procedimento para ajudar outras pessoas que tenham o mesmo interesse.
Neste post, além do procedimento de migração (que é relativamente simples), inseri informações para ajudar no processo de planejamento, migração e pós migração, inclusive apresentando solução para os redirects (mantendo seus permalinks) e sitemaps! Se precisar de alguma ajuda, envie um comentário neste post com a sua dúvida

Leia o post completo antes de iniciar a migração.

Encontrei o script de migração neste topic do wordpress.org, desenvolvido pelo usuário bodum.
Como o bodum afirma neste post que não vai manter o plugin de importação, fiz um backup dele aqui no blog e disponibilizo através do link: import-b2evolution-wp2.php.zip

IMPORTANTE:
– Não me responsabilizo de forma alguma se algo der errado, aqui estou relatando o procedimento que eu realizei para migrar os meus 2 blogs do b2evolution para o WordPress.
– Antes de fazer qualquer alteração, realize o backup completo da sua base de dados e dos arquivos do seu blog.
– As datas dos posts não são migradas corretamente, cada post ficará com a data da última alteração! Se você tiver poucos posts pode corrigir as datas no painel do wordpress (editando cada post). Se você tiver muitos posts, revise o script de importação e tente corrigir o problema! (eu só me dei conta que as datas estavam incorretas depois que tudo estava migrado e em produção, que trabalheira me deu)
– Categorias são migradas corretamente, tags não são migradas!
– Provavelmente você sabe disso, mas caso não saiba, se o google começar a encontrar erros 404 (not found) no seu blog, você pode sofrer algumas penalidades nas pesquisas (além de ser muito chato encontrar links quebrados por aí), neste post aponto um plugin que pode ajudar a manter a sua estrutura atual de links funcional, usando Permanent Redirects (301) através de um plugin.
– Recomendo “duplicar” o seu blog atual para um “ambiente” de testes, e realizar todo o procedimento de migração e pós migração de forma “offline”, quando estiver com tudo 100% funcional, faça o upload da nova base e arquivos para o seu webhosting, implicando assim em um tempo bem menor de downtime.

Pré Migração:
– Antes de realizar o procedimento de migração do b2evolution para o WordPress, realize faça o levantamento de todos os links externos que apontam para o seu blog, você pode utilizar as estatísticas do b2evolution e o “Google Webmaster Tools”  para este fim.
– Realize backup completo da sua base de dados e dos arquivos do b2evolution!!!

Migração:

1- Remova os arquivos do b2evolution do diretório onde o blog vai ficar instalado.
2- Faça o upload do wordpress 2.0.4 para o local onde estava o b2evolution
3- Instale o WordPress 2.0.4 na mesma base de dados que era utilizada pelo b2evolution. (Utilizando o prefixo default das tabelas)
4- Verifique se o wordpress foi corretamente instalado e faça o login no painel administrativo dele.
5- Copie o arquivo import-b2evolution-wp2.php para wp-admin/import-b2evolution-wp2.php
6- Acesse o script de importação utilizando http://exemplo.com/wp-admin/import-b2evolution-wp2.php
7- O script irá solicitar informações da base de dados, qual blog quer importar, etc…
8- Clique em “Submit” e cruze os dedos para funcionar 😉 Verifique no output gerado, se nenhum erro ocorreu durante o processo.
9- Acesse o seu blog, e procure e verifique se todos os posts/comentários estão por lá, não se preocupe caso apareçam caracteres inválidos, isso será resolvido durante o upgrade do wordpress para a versão mais recente.
10- Realize o upgrade do WordPress 2.0.4 para a versão atual (no momento WordPress 2.8.1), o processo é simples: limpe novamente o conteúdo do diretório onde o blog está instalado, e faça o upload da última versão do WordPress para este diretório e acesse http://exemplo.com/wp-admin/upgrade.php (Após criar o novo arquivo de configuração, rode novamente o upgrade.php para realizar o upgrade da base de dados).

Pós Migração:
Plugins sugeridos: Eu cheguei meio perdido no wordpress sem saber quais plugins utilizar inicialmente, então vou aproveitar para sugerir alguns que encontrei depois de pesquisar por aí:

Redirection (homepage e wordpress.org): Ótimo plugin para manter os permalinks antigos funcionando, com este plugin, não é necessário editar o .htaccess nem ser fera no mod_rewrite para redirecionar os links antigos para os novos links. Também possui uma opção que loga os erros 404 encontrados, facilitando identificar o que ficou faltando redirecionar/corrigir. Basta saber um pouquinho de regex para fazer redirecionamentos mais complexos.

Wassup (homepage e wordpress.org): Um dos plugins de estatísticas para o WordPress, me parece bem completo e detalhado.

Akismet: Solução de antispam que já vem integrada ao WordPress, basta obter uma “WordPress.com API key” e ativar o plugin para começar a usar.

Google XML Sitemaps generator (homepage) : Gera sitemaps não só para o google, mas também para outros serviços de busca que lêem sitemaps(yahoo, bing, etc…).

Dúvidas, agradecimentos, xingamentos: Use o campo destinados aos comentários. (Normalmente eu sempre respondo)

Publicado em Sysadmin Marcado com: ,

Migrei o blog!!

Finalmente consegui migrar do b2evolution para o WordPress! Utilizando uma série de gambiarras e improvisos, acho que consegui manter a mesma estrutura de links, do blog anterior… Ao menos tudo o que eu testei, funcionou 😉 (obviamente esqueci de um monte de coisas).

Se notarem algo de anormal no blog, por favor informem através de um comentário neste post.

Algumas observações:

Os links das feeds mudaram para:

http://linux.eduardosilva.eti.br/feed (Posts)

http://linux.eduardosilva.eti.br/comments/feed (Comentários)

Tentando manter os feeds antigos, realizei algumas gambiarras redirects, mas não sei se funcionaram corretamente (alguem que assina um feed poderia confiramar?)

Vou continuar meu trabalho que ainda falta muita coisa para terminar 😛

Publicado em Sysadmin Marcado com: , ,

Computação em Nuvem: OpenGoo – Web Office

Os desenvolvedores do OpenGoo consideram este software, um “Web Office“, mas existem várias outras classificações que também se encaixariam, como por exemplo: Plataforma de colaboração Online, Ferramenta para gestão de projetos, Groupware, ou outras similares.

Para melhor compreensão, podemos comparar o OpenGoo como um equivalente ao Google Apps. Um Office via Web com ferramentas para edição e gestão de documentos, gestão de projetos através de tasks e milestones, emails, calendário compartilhado, entre outros recursos.

Para conhecer um pouco mais sobre o OpenGoo, assista o video abaixo.

Ou visite o demo clicando aqui.

Uma grande vantagem do OpenGoo é que ele pode ser instalado sem nenhuma complicação em praticamente qualquer servidor com php+mysql.
Para maiores informações, visite o site do projeto http://www.opengoo.org

Publicado em Sysadmin Marcado com: , , ,

Google container data center tour


Apresentado inicialmente no “Google Efficient Data Centers Summit” que ocorreu no centro de operações do Google em Mountain View, em 1o de Abril de 2009.

Para mais informações sobre o evento ou relatórios de eficiência do data center do google, visite: Going Green at Google – Clean Energy Initiatives

Publicado em Sysadmin Marcado com:

Proxmox VE – Cluster OpenVZ/KVM em 30 minutos

O Proxmox VE é uma distribuição linux baseada em debian focada exclusivamente em virtualização, utilizando OpenVZ (virtualização em container) e KVM (Virtualização completa).
Ele oferece uma interface de gerenciamento via Web onde praticamente todas as ações de manutenção podem ser realizadas.
O grande diferencial do Proxmox VE é o suporte a cluster nativo, as máquinas virtuais podem ser movidas de um servidor para outro com 2 ou 3 cliques do mouse e com um mínimo de downtime (apenas alguns segundos) e todo o gerenciamento dos servidores do cluster é realizado em um ponto central através da interface web.
Confira no video abaixo uma máquina virtual sendo migrada online!

Apesar do Proxmox VE ser um produto relativamente novo (primeira versão estável lançada em 29/10/2008) posso afirmar que por ser Open Source e com a sua maneira simplificada de gerenciar via web um cluster com 2 ambientes virtuais totalmente distintos, está rapidamente ganhando espaço no mercado.

Links do Proxmox VE
Proxmox VE Cluster
Container and Full Virtualization
Backup – Restore – Live Migration
Proxmox Download

Posts Relacionados:
Introdução a Virtualização
Howto OpenVZ no CentOS 5.x

Observação: Importante lembrar que o Proxmox VE não possuí suporte a processadores de 32bits. Você pode instalar o Proxmox VE com suporte ao OpenVZ em qualquer computador de 64bits mas para utilizar o KVM, será necessário um CPU com suporte nativo a Virtualização (Intel VT ou AMD-V)

Publicado em Sysadmin Marcado com: , , , ,