domingo, 22 de agosto de 2010

Habilitando a "lixeira" no Active Directory Introdução

Neste artigo demonstraremos como utilizar o recurso de Recycle Bin (mais conhecido como lixeira) no Active Directory.

Até o Windows Server 2008 era necessário fazer o restore do System State de um DC para restaurar um objeto excluido no Active Directory. Uma exceção era a possibilidade de “reanimar” um objeto no Windows Server 2003, porem praticamente todos os seus atributos eram perdidos e precisavam ser “reconstruidos”.

Um dos novos recursos no AD do Windows Server 2008 R2 é a possibilidade de ter os objetos excluidos enviados para uma lixeira, o que possibilita restaurar um objeto (e todos os seus atributos) sem a necessidade de restaurar um System State ou de “reanimar” o objeto.

Porem para tristeza de alguns este recurso vem desativado por padrão e (ainda) não existe uma interface gráfica para realizar tal operação, o que pode tornar um pouco complicada a recuperação de objetos na “lixeira”.

Vamos entender como funcionava o processo até o Windows Server 2008 e como funciona no Windows Server 2008 R2 quando o recurso esta habilitado.

1. Ate o Windows Server 2008 (ou até o Windows Server 2008 R2 sem o recurso habilitado):

a. O objeto excluido tem todos os atributos removidos (exceto SID, ObjectGUID, LastKnownParent and SAMAccountName) e o atributo “isDeleted” é definido com o valor “True”;

b. Durante o periodo de TombStone Lifetime é possível reanimar o objeto (perdendo seus atributos) ou restaura-lo por completo através do ntdsutil;

c. Após este periodo o objeto é fisicamente removido do Active Directory pelo processo de Garbage Collect;

2. A partir do Windows Server 2008 R2 com o recurso habilitado:

a. O objeto excluido e todos os seus atributos são mantidos dentro do Active Directory;

b. Durante o periodo de TombStone Lifetime é possível restaurar o objeto e seus atributos sem a necessidade de utilizar o ntdsutil;

c. Após este periodo o objeto é fisicamente removido do Active Directory pelo processo de Garbage Collect;

Pré-Requisitos

O único requisito para habilitar o recurso de “lixeira” é o nível funcional da floresta em Windows Server 2008 R2. Vale lembrar que neste nível funcional nenhum DC poderá executar uma versão anterior ao Windows Server 2008 R2.

Lembrando que uma vez ativado o recurso ele NÃO poderá mais ser desativado, portanto sua implementação precisa ser exaustivamente planejada para evitar dores de cabeça no futuro. (Particulamente não consegui encontrar um motivo para esta dor de cabeça mas vale a pena mencionar aqui)

Habilitando o recurso

A forma mais fácil para habilitar o recurso é utiliando o cmdlet “Enable-ADOptionalFeature” disponivel a partir da ferramenta Active Directory Module for Windows PowerShell.

Mãos a obra:

· Clicar no menu Start/Administrative Tools/Active Directory Module for Windows PowerShell;

· Executar o cmdlet “Enable-ADOptionalFeature” com os parametros: Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=jsathler,DC=spaces,DC=live,DC=com’ –Scope ForestOrConfigurationSet –Target ‘jsathler.spaces.live.com’;

· Será informado que a operação é irreversivel, basta informar Y ou A para continuar e N ou L para cancelar;

Restaurando um objeto excluido

Como não temos (ainda) uma interface gráfica para manuseio dos objetos na lixeira, vamos utilizar os cmdlet’s Get-ADObject e Restore-ADObject para restaura-los.

Através do menu Start/Administrative Tools/Active Directory Module for Windows PowerShell, executar os commandos abaixo:

1. Restaurando um usuário:

o Get-ADObject -ldapFilter:"(sAMAccountName=recycleuser)" –IncludeDeletedObjects | Restore-ADObject, onde recycleuser é o samid do usuário;

2. Restaurando uma OU:

o Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=Americas)" –IncludeDeletedObjects | Restore-ADObject, onde Americas é o nome da OU;

3. Restaurando um grupo:

o Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=Grupo01)" –IncludeDeletedObjects | Restore-ADObject, onde Grupo01 é o nome do grupo;

4. Restaurando uma conta de computador:

o Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=Computador01)" –IncludeDeletedObjects | Restore-ADObject, onde Computador01 é o nome da conta do computador;

Ate aqui vimos como restaurar objetos de forma “simples”, porem como restaurar uma OU e todos os seus objetos?

Quando uma OU é excluida, todos os objetos juntamente com a OU é exibida de forma “plana”, ou seja os objetos não são listados dentro de uma hierarquia como quando são visualizados a partir do mmc “Active Directory Users and Computers”.

Vejamos entao o procedimento para restaurar uma OU e todos os seus objetos. A estrutura a ser restaurada se encontra na imagem abaixo:

1. Restaurar a OU “Brasil”:

o Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=Brasil)" –IncludeDeletedObjects | Restore-ADObject;

2. Restaurar os objetos dentro da OU Brasil:

o Get-ADObject -Filter {lastKnownParent -eq "OU=Brasil, DC=jsathler,DC=spaces,DC=live,DC=com"} -IncludeDeletedObjects -Properties lastKnownParent | Restore-ADObject;

3. Restaurar os objetos dentro da OU Usuários:

o Get-ADObject -Filter {lastKnownParent -eq "OU=Usuários, OU=Brasil, DC=jsathler,DC=spaces,DC=live,DC=com"} -IncludeDeletedObjects -Properties lastKnownParent | Restore-ADObject;

4. Restaurar os objetos dentro da OU Grupos:

o Get-ADObject -Filter {lastKnownParent -eq "OU=Grupos, OU=Brasil, DC=jsathler,DC=spaces,DC=live,DC=com"} -IncludeDeletedObjects -Properties lastKnownParent | Restore-ADObject;

5. Restaurar os objetos dentro da OU Computadores:

o Get-ADObject -Filter {lastKnownParent -eq "OU=Computadores, OU=Brasil, DC=jsathler,DC=spaces,DC=live,DC=com"} -IncludeDeletedObjects -Properties lastKnownParent | Restore-ADObject;

Pronto, toda a estrutura foi restaurada assim como as permissões pré-existentes e GPO’s associadas.

Caso queira apenas listar os objetos que existiam em uma OU que foi apagada, seguir o seguinte procedimento:

1. Listar um objeto que existia dentro da OU apagada:

o Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=Brasil)" –IncludeDeletedObjects -Properties lastKnownParent

2. Copiar o valor do campo "LastKnownParent":

o OU=Brasil\0ADEL:0dffb3a5-402d-444d-84a7-492370e34bc4,CN=Deleted Objects,DC=jsathler,DC=spaces,DC=live,DC=com

3. Utilizar o comando abaixo para pesquisar os objetos “filhos” da OU removida. (Atenção para a \ após o nome da OU, pois ela precisa ser substituida por \\):

o Get-ADObject -Filter {lastKnownParent -eq " OU=Brasil\\0ADEL:0dffb3a5-402d-444d-84a7-492370e34bc4,CN=Deleted Objects,DC=jsathler,DC=spaces,DC=live,DC=com "} -IncludeDeletedObjects -Properties lastKnownParent | ft

by - Juliano Sathler (http://cid-40cbf5e035def7b3.profile.live.com/details/)

domingo, 1 de agosto de 2010

Identificando a Origem do Spam

Qual é origem do Spam? Como identificar? Como saber o IP do spam? Inicialmente evite seu email ficar circulando pela web, não coloque em lugares “suspeitos”, tenha sempre um E-mail secundário para cadastros mais “bobos’ na internet, esteja sempre com um Anti-spy atualizado. Seus problemas Acabaram! (depois inventam outros). nessa vídeo aula eu abordo um pouco sobre isso, de como identificar a origem dessa propaganda, pelo do cabeçalho do E-mail tome cuidado ao mandar bloquear um ip.

Vídeo Aula:

Não reparem, mas a vídeo aula é pouco antiga, nela eu ainda menciono o antigo link do blog. Nessavídeo aula, mostro como identificar o cabeçalho do E-mail, que é onde fica o ip real de origem:

Cabeçalho de E-mail – Na terminologia da informática, o “header” – ou, simplesmente, cabeçalho – consiste na parte que contém as informações suplementares colocados no começo de um bloco de dados que estão sendo armazenados ou transmitidos, usualmente por e-mail ou em pacotes dos dados emitidos através da internet, são precedidos pela informação de cabeçalho tal como o remetente e os endereços do IP do receptor.

(fonte: Wikipédia)

Bloqueando a Origem:

Muito provedores de email permitem a configuração de um Anti-Spam, não só pelo email do remetente da mensagem e sim pelo ip de origem, entre em contato com o suporte de seu provedor para que possa ter as instruções de como bloquear o ip de origem, tome muito cuidado ao bloquear um ip. Felizmente eu já vou deixar alguns links dos principais provedores:

Recebendo Spam de Si mesmo:

Em alguns casos você pode estar recebendo emails, onde você é a origem, o “atacante está aproveitando uma vulnerabilidade do protocolo SMTP para praticar uma técnica chamada IP Spoonfing:

Definição: No contexto de redes de computadores, IP spoofing é uma técnica de subversão de sistemas informáticos que consiste em mascarar (spoof) pacotes IP utilizando endereços de remetentes falsificados. Devido às características do protocolo IP… Fonte: Wikipédia

Nesses casos é um pouco mais complexo, mas o cabeçalho do email ainda pode ser visualizado para analisar se o IP de Origem é o seu, se o IP do remetente for o seu, passe um bom Antivirus no sistema.

A lei contra o Spam:

Na política de Spam da Kinghost, provedor inclusive que eu uso atualmente e estou gostando bastante, encontrei uma relação de leis que falam contra o uso do Spam, segue a reprodução abaixo:

  • Código de Defesa do Consumidor – Cap V, Artigo 39, parágrafo III (envio serviço / produto não solicitado)
  • Código de Defesa do Consumidor – Cap III, artigo 6. Inciso IV (propaganda enganosa)
  • Código de Defesa do Consumidor – Cap VII, Título II, artigo 72 (dificultar o acesso à banco de dados)
  • Código de Defesa do Consumidor – Cap VII, Título II, artigo 73 (deixar de corrigir informações constantes em bancos de dados)
  • Constituição Federal – Título II, Capítulo I, artigo 5, Inciso X (direito de privacidade)

Espero que esse artigo tenha tirado a maioria das dúvidas, mas uma vez devo lembrar para não deixar seu email exposto na internet, existem diversas formas de um “atacante buscar um email, periodicamente busque seu E-mail no Google para ver se ele está exposto.

domingo, 25 de julho de 2010

Postfix–Virtual Domain

Este tutorial explica passo a passo como configurar um servidor de email com suporte a vários recursos de antispam, múltiplos domínios, listas de discussão e armazenamento de contas em banco de dados MySQL utilizando o software Postfix.

Softwares Necessários
- Postfix – Servidor de Email
- Maildrop – Entrega de Emails
- Courier – Autenticação IMAP/POP/SMTP e Criptografia TLS
- SASL – Conexão SMTP autenticada e criptografada
- MySQL – Servidor de Banco de Dados (armazenamento de contas de usuários)
- SpamAssassin – anti-spam
- Policyd – AntiSpam
- TMDA – AntiSpam (Opcional para as contas)

Introdução
O objetivo deste manual é descrever como poderá ser feita a instalação
de um servidor de email com recursos AntiSpam e Quota de Disco fazendo
uso de usuários virtuais (usuários não existentes na máquina unix:
/etc/passwd). Para este tutorial estarei utilizando como base a
distribuição Debian Sarge v 3.1r3.

MySQL
Como estaremos armazenando os usuários e senhas de nosso servidor em
uma base de dados MySQL o primeiro serviço que precisamos estar
implantando é o mysql-server. Para instalar o mysql devemos executar os
seguintes comandos:

# apt-get install mysql-client mysql-server mysql-common
# mysql_secure_instalation (para proteger nosso servidor)

Em seguida devemos cria uma base de dados chamada postfix e gerar a seguinte estrutura:

CREATE DATABASE postfix;

CREATE TABLE `alias` (
`address` varchar(255) NOT NULL default ,
`goto` text NOT NULL,
`domain` varchar(255) NOT NULL default ,
`created` datetime NOT NULL default ’0000-00-00 00:00:00′,
`modified` datetime NOT NULL default ’0000-00-00 00:00:00′,
`active` tinyint(1) NOT NULL default ’1′,
PRIMARY KEY (`address`),
KEY `address` (`address`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Virtual Aliases’;

CREATE TABLE `domain` (
`domain` varchar(255) NOT NULL default ,
`description` varchar(255) NOT NULL default ,
`aliases` int(10) NOT NULL default ’0′,
`mailboxes` int(10) NOT NULL default ’0′,
`maxquota` int(10) NOT NULL default ’0′,
`transport` varchar(255) default NULL,
`backupmx` tinyint(1) NOT NULL default ’0′,
`created` datetime NOT NULL default ’0000-00-00 00:00:00′,
`modified` datetime NOT NULL default ’0000-00-00 00:00:00′,
`active` tinyint(1) NOT NULL default ’1′,
PRIMARY KEY (`domain`),
KEY `domain` (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Virtual Domains’;

CREATE TABLE `mailbox` (
`username` varchar(255) NOT NULL default ,
`password` varchar(255) NOT NULL default ,
`name` varchar(255) NOT NULL default ,
`maildir` varchar(255) NOT NULL default ,
`quota` int(11) NOT NULL default ’10485760′,
`domain` varchar(255) NOT NULL default ,
`created` datetime NOT NULL default ’0000-00-00 00:00:00′,
`modified` datetime NOT NULL default ’0000-00-00 00:00:00′,
`active` tinyint(1) NOT NULL default ’1′,
PRIMARY KEY (`username`),
KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Virtual Mailboxes’;

CREATE TABLE `vacation` (
`email` varchar(255) NOT NULL default ,
`subject` varchar(255) NOT NULL default ,
`body` text NOT NULL,
`cache` text NOT NULL,
`domain` varchar(255) NOT NULL default ,
`created` datetime NOT NULL default ’0000-00-00 00:00:00′,
`active` tinyint(1) NOT NULL default ’1′,
PRIMARY KEY (`email`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Virtual Vacation’;

Após a criação da base de dados devemos criar um usuário postfix que tenha permissão na base de dados “postfix”:

$mysql -u root -p
mysql> USE mysql;
mysql> INSERT INTO user (Host, User, Password) VALUES (‘localhost’,'postfix’,password(‘postfix’));
mysql> INSERT INTO db (Host, Db, User, Select_priv) VALUES (‘localhost’,'postfix’,'postfix’,'Y’);
mysql> FLUSH PRIVILEGES;
mysql> GRANT USAGE ON postfix.* TO postfix@localhost;
mysql> GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;

Configuração Importante para o MySQL
Como o postfix é executado como chroot em /var/spool/postfix devemos criar um link do socket do mysql lá dentro. Caso contrário o postfix não conseguirá acessar o MySQL.
Adicionar no arquivo /etc/mysql/debian-start :

echo “Criando Link de /var/run/mysqd/mysqld.sock no chroot do postfix (/var/spool/postfix)”
ln -f /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock

Postfix
Abaixo veremos como é feita a instalação e configuração do servidor de email Postfix.

Instalação
O primeiro software necessário para a montagem do servidor de email é a
instalação do postfix com suporte ao banco de dados mysql:

# apt-get install postfix postfix-mysql postfix-tls

Configuração Básica

main.cf
O exemplo abaixo mostra como deve ser configurado o arquivo main.cf do postfix:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA’s job.
append_dot_mydomain = no

# Uncomment the next line to generate “delayed mail” warnings
#delay_warning_time = 4h

#MailMan
owner_request_special = no

#MailMan / TMDA
recipient_delimiter = +

#Tamanho maximo de 20mb por mensagem
message_size_limit = 20971520

myhostname = mailserv.diotto.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mailserv.diotto.net,localhost
relayhost =
mynetworks = 127.0.0.0/8, 143.106.243.0/24, 143.106.244.0/24
#mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# Mailbox Virtuais

##################


virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /var/email
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1001
virtual_transport = maildrop
#virtual_transport = virtual
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001

# Configuracoes para Habilitar Suporte a Cota

##################


virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Desculpe, este usuario esta com a cota estourada, por favor tente mais tarde.
virtual_overquota_bounce = yes
virtual_mailbox_limit = 51200000
virtual_mailbox_limit_inbox = no

# =======MAILDROP ==========
fallback_transport = /usr/bin/maildrop
maildrop_destination_recipient_limit = 1
unknown_local_recipient_reject_code = 450

master.cf
Até o momento não precisamos fazer nenhuma alteração no master.cf, o padrão do Debian é suficiente.

mysql_virtual_alias_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

mysql_virtual_domains_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
#additional_conditions = and backupmx = ’0′ and active = ’1′

mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
select_field = CONCAT(domain,’/',maildir)
#additional_conditions = and active = ’1′

mysql_virtual_mailbox_limit_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
#additional_conditions = and active = ’1′

mysql_relay_domains_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = ’1′

Utilizando o Courier para IMAP, POP e Criptografia (TLS/SSL)
Para a instalação do Courier podemos fazer uso do apt, conforme abaixo:

# apt-get install courier-authdaemon courier-authmysql courier-base courier-imap \
courier-imap-ssl courier-pop courier-pop-ssl courier-ssl \
libsasl2-modules libsasl2 libsasl2-modules-sql

Habilitando a autenticação via MySQL
Alterar a linha authmodulelist no /etc/courier/authdaemonrc para:

authmodulelist=”authmysql authpam”

Configurar o arquivo /etc/courier/authmysqlrc:

MYSQL_UID_FIELD ’1001′
MYSQL_GID_FIELD ’1001′
MYSQL_HOME_FIELD “/var/email”
MYSQL_LOGIN_FIELD username
MYSQL_MAILDIR_FIELD CONCAT(domain,’/',maildir,’/Maildir/’)
MYSQL_NAME_FIELD name
MYSQL_OPT 0
MYSQL_PASSWORD postfix
MYSQL_PORT 0
MYSQL_QUOTA_FIELD quota
MYSQL_SERVER localhost
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_USERNAME postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_DATABASE postfix

Habilitando SMTP Autenticado com o SASL
Para permitir SMTP autenticado devemos adicionar as seguintes linhas ao nosso main.cf:

# SMTP

##################


smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_unlisted_recipient,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client zombie.dnsbl.sorbs.net

# Verificacoes do SMTP – Obrigacao todos a dar helo e desabilita comando vrfy e etrn
smtpd_helo_restrictions = reject_invalid_hostname
smtpd_etrn_restrictions = permit_mynetworks, reject
smtpd_helo_required = yes
disable_vrfy_command = yes

O arquivo smtpd.conf
Para que o smtp faça a autenticação estaremos utilizando o
Courier-authdaemon, para isso devemos informar ao SASL que consulte ao
‘authdaemond’ para autenticar o usuário, deste modo o arquivo
/etc/postfix/sasl/smtpd.conf ficará assim:

pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/run/courier/authdaemon/socket
[i]

Executar agora os comandos:
[i]
# mkdir /var/run/authdaemond
# chmod 755 /var/run/authdaemond

ATENÇÃO:Como estamos executando o postfix com chroot em
/var/spool/postfix (padrão do Debian) devemos criar um link para o
socket do authdaemon dentro da pasta com chroot:

mkdir -p /var/spool/postfix/var/run/courier/authdaemon
ln /var/run/courier/authdaemon/socket /var/spool/postfix/var/run/courier/authdaemon/socket
chown -R daemon:daemon /var/spool/postfix/var/run/courier

Devemos também verificar as permissões de /var/run/authdaemond/socket para que o postfix possa acessá-lo.
O link que acabamos de criar deve ser refeito toda vez que o authdaemon for reiniciado, deste modo devemos abrir o arquivo /etc/init.d/courier-authdaemond e inserir depois de authdaemond start:

ln -f /var/run/courier/authdaemon/socket /var/spool/postfix/var/run/courier/authdaemon/socket

Habilitando Criptografia SSL para SMTP, POP e IMAP
Para habilitar o uso de criptografia SSL para os serviços de SMTP, POP e IMAP devemos:

IMAP

# cd /etc/courier
# openssl req -new -x509 -nodes -out imapd.pem -keyout imapd.pem -days 365

POP

# cd /etc/courier
# openssl req -new -x509 -nodes -out pop3d.pem -keyout pop3d.pem -days 365

SMTP
Inserir no arquivo /etc/postfix/main.cf:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key

Gerar o par de chaves:

# cd /etc/postfix
# openssl req -new -x509 -nodes -out smtpd.cert -keyout smtpd.key -days 365

Apache (para utilizar WebMail com SSL)
Obs: neste caso é necessário os pacotes apache e apache-ssl instalados.

# cd /etc/apache-ssl
# openssl req -new -x509 -nodes -out apache.pem -keyout apache.pem -days 365

Quota de Email com o Maildrop
O Maildrop será responsável pela entrega propriamente dita da mensagem
à sua respectiva caixa postal. Ele também fará o controle da cota de
disco. Com o Maildrop você também poderá implementar algumas regras de
filtragem.
A versão existente nos repositórios do Debian Sarge é a versão 1.5.3 e
originalmente não vem compilada com suporte a MySQL, então faremos o
download dos fontes com o comando:

# mkdir ~/maildrop
# cd ~/maildrop
# apt-get install fakeroot
# apt-get build-dep maildrop
# apt-get source maildrop
# cd maildrop-1.5.3/debian

Aqui precisaremos fazer uma alteração um pouco mais delicada,
precisamos modificar o padrão com que o pacote é compilado, habilitando
o suporte a mysql. Edite o arquivo rules e procure a seguinte parte:

[ -f config.status ] || CPPFLAGS=”$CFLAGS” ./configure –prefix=/usr \
–mandir=’${prefix}/share/man’ –libexecdir=’${prefix}/lib/maildrop’ \
–sysconfdir=/etc \
–enable-use-dotlock=1 –enable-use-flock=1 \
–enable-sendmail=/usr/sbin/sendmail –enable-maildirquota
[ -f maildrop/maildrop ] || make

e altere para:

[ -f config.status ] || CPPFLAGS=”$CFLAGS” ./configure –prefix=/usr \
–mandir=’${prefix}/share/man’ –libexecdir=’${prefix}/lib/maildrop’ \
–sysconfdir=/etc/maildrop \
–enable-maildrop-uid=1001 \
–enable-maildrop-gid=1001 \
–enable-syslog=1 \
–enable-maildropmysql \
–enable-use-dotlock=1 –enable-use-flock=1 \
–enable-sendmail=/usr/sbin/sendmail –enable-maildirquota
[ -f maildrop/maildrop ] || make

Depois de modificado, podemos compilar e gerar o .deb:

# cd ..
# dpkg-buildpackage -rfakeroot -uc -b

Depois disso iremos testar (antes de instalar o .deb gerado) se o Maildrop foi compilado com suporte a MySQL:

# maildrop/maildrop -v
maildrop 1.5.3 Copyright 1998-2003 Double Precision, Inc.
GDBM extensions enabled.
Maildir quota extension enabled.
Virtual user database via MySQL extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.

Ótimo, nosso binário está com suporte a MySQL, agora vamos agora criar
o diretório de configuração e copiar os arquivos de configuração do
maildrop:

# mkdir /etc/maildrop
# cp maildropmysql.config /etc/
# cp maildir/quotawarnmsg /etc/maildrop/

Agora vamos instalar o .deb ;)

# cd ..
# dpkg -i maildrop_1.5.3-1.1_i386.deb
Selecting previously deselected package maildrop.
(Reading database … 97308 files and directories currently installed.)
Unpacking maildrop (from maildrop_1.5.3-1.1_i386.deb) …
Setting up maildrop (1.5.3-1.1) …

Configurando o maildrop:
Configure o Maildrop para acessar o MySQL. Edite o arquivo /etc/maildropmysql.conf:

# vi /etc/maildropmysql.config
hostname localhost
port 3306
socket /var/run/mysqld/mysqld.sock
database postfix
dbuser postfix
dbpw postfix
dbtable mailbox

default_gidnumber 1001
default_uidnumber 1001

uid_field username
uidnumber_field 1001
gidnumber_field 1001
maildir_field concat(maildir,’/Maildir’)
homedirectory_field concat(‘/var/email/’,domain,’/')
quota_field concat(quota,’S')
mailstatus_field active
where_clause “”
homedirectory_base /var/email/

DICA: O maildrop possui um recurso de aviso de email para o
usuário caso a sua caixa postal ultrapasse a porcentagem de utilização
de um valor especificado. Nesse tutorial usarei o valor de 90%
(explicado mais adiante).
Sendo assim, você pode personalizar a mensagem de aviso que o usuário
irá receber, bastando para isso editar o arquivo
/etc/maildrop/quotawarnmsg, no meu caso o arquivo está assim:

From: Mail Delivery System <postmaster@diotto.net>
Reply-To: postmaster@diotto.net
To: Valued Customer:;
Subject: Aviso de Cota de Email
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit

Prezado usuario,
Sua caixa de emails no servidor esta com mais de 90% ocupada.
Para continuar recebendo emails voce precisa remover algumas mensagens.
Sugerimos que limpe suas pastas Lixeira, Enviados e Spam (caso possua).
Obrigado

Testando a Configuração

SMTP

telnet 127.0.0.1 25

Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
220 localhost.localdomain ESMTP Postfix
> EHLO ceset.unicamp.br
250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
> AUTH PLAIN AHVzZXJAZG9tYWluLnRsZABzZWNyZXQ=
235 Authentication successful

Como conseguir o código de autenticação:
O script perl abaixo fará a criptografia da senha:

perl -MMIME::Base64 -e ‘print encode_base64(“\0usuario\@ceset.unicamp.br\0senha”)’

Configurando Antivírus e Anti-Spam

Amavis + SpamAssassin
Introdução ao AMaViS
Umd os melhores softwares para trabalhar em conjunto com o postfix para
bloqueio de Vírus e Spam é o AMaViS (A Mail Virus Scanner). AMaViS é
uma interface entre Postfix, spamassassin e algum antivírus (por
exemplo o ClamAV, que é gratuito). Atenção: AMaViS contém alguns
recursos antispam mas não faz verificação de vírus, ele precisa de um
antivírus externo para isso, por isso a necessidade do ClamAV.

Clamav
O clamav é um antivírus gratuito disponível para distribuições Unix,
estaremos utilizando-o em nosso servidor. Sua instalação é bem simples
e não requer nenhuma configuração adicional.

Instalando softwares necessários

# apt-get install amavisd-new spamassassin spamc razor clamav clamav-base clamav-daemon clamav-freshclam libclamav1

Configurando o AMaVis
Para configurar o amavis devemos editar o arquivo /etc/amavis/amavisd.conf e setar as seguintes opções principais:

$mydomain = ‘diotto.net’;
#@bypass_virus_checks_acl = qw( . ); Se esta linha estiver comentada a checagem de vírus está habilitada
#@bypass_spam_checks_acl = qw( . ); Se esta linha estiver comentada a checagem de spam está habilitada
@lookup_sql_dsn = ( [ 'DBI:mysql:postfix', 'postfix', 'senha' ] );
$sql_select_policy = ‘SELECT “Y” as local FROM domain WHERE
CONCAT(“@”,domain) IN (%k)’; # Faz consulta ao mysql para saber se
domínio é local ou não
$final_virus_destiny = D_DISCARD; #Descarta emails com vírus
$final_banned_destiny = D_REJECT; #Como gerenciar email com anexos
bloqueados. Vários tipos como PIF, EXE, COM ou DOC são infectados.
Depois podemos escolher que arquivos não permitir.
$final_spam_destiny = D_PASS;
$sa_tag_level_deflt = -1000; # Nível para adicionar cabeçalho de X-Spam-Status no email
$sa_tag2_level_deflt = 5.0; # Nível para marcar email como spam
$sa_kill_level_deflt = 10; # Se o nível for acima deste amavis executa a ação definida em $final_spam_destiny.
$sa_spam_subject_tag = ‘***SPAM*** ‘; # Remarca assunto do email

Configurando Clamav para funcionar com AMaVis
Para que clamav + amavis funcionem perfeitamente é necessário que os
dois sejam executados com o mesmo usuário. Iremos então mudar o usuário
de execução do clamav para o usuário chamado “amavis”:
Modificar no arquivo /etc/clamav/clamd.conf:

User amavis

Modificar no arquivo /etc/clamav/freshclam.conf:

DatabaseOwner amavis

Modificar permissões na Base de Dados de vírus, arquivos de log e socket de execução:

# chown -R amavis:amavis /var/lib/clamav
# chown -R amavis:amavis /var/log/clamav
# chown -R amavis:amavis /var/run/clamav

Habilitando a checagem de Spam / Virus no Postfix
Para que os emails sejam checados com o AMaViS devemos alterar os arquivos main.cf e master.cf do postfix conforme abaixo:
main.cf :

content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

master.cf

#Configuração do Amavis
amavis unix – – – – 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes

#Config do Amavis
127.0.0.1:10025 inet n – - – - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

Policyd
O Policyd é um plugin anti-spam para o Postfix que tem recursos de
lista cinza, que serão utilizados para bloquear alguns spammers.

Compilar e Instalar

# cd /usr/local/src
# wget http://policyd.sourceforge.net/policyd-v1.80.tar.gz
# cd policy-1.80
# make build
# make install

Criar um script de limpeza que é executado no Corntab a cada Hora

# crontab -e
0 * * * * /usr/local/policyd/cleanup -c /usr/local/policyd/policyd.conf

Criar a Base Policyd no Mysql:


# mysql -u root -p < DATABASE.mysql
# mysql -u root -p
mysql> GRANT USAGE ON policyd.* TO postfix@localhost;
mysql> GRANT SELECT, INSERT, DELETE, UPDATE ON policyd.* TO postfix@localhost;
mysql> FLUSH PRIVILEGES;
mysql> quit

Arquivo de Configuração
Editar o arquivo /usr/local/policyd/policyd.conf e definir:

MYSQLHOST=”"
MYSQLDBASE=”policyd”
MYSQLUSER=”policyd”
MYSQLPASS=”senha”
DEBUG=3
DAEMON=1
BINDHOST=127.0.0.1
BINDPORT=10031
PIDFILE=/var/run/policyd.pid

Criando Script de Inicialização
Criar o arquivo /etc/init.d/policyd com o conteúdo:

#! /bin/sh

# /etc/init.d/policyd: start and stop the policy daemon

case “$1″ in
start)
echo -n “Starting policy daemon: policyd”
/usr/local/policyd/policyd -c /usr/local/policyd/policyd.conf
exit 0
;;
stop)
echo -n “Stopping policy daemon: policyd”
killall policyd
exit 0
;;
*)
echo “Usage: /etc/init.d/rsync {start|stop|restart}”
exit 1
esac

Criar um link em /etc/rc2.d:

# cd /etc/rc2.d
# ln -s ../init.d/policyd S20policyd

Configurando o Postfix
Inserir as configurações abaixo no arquivo /etc/postfix/main.cf.
Obs: É necessário ter instalado no mínimo o Postfix 2.1 para que as regras abaixo funcionem!

smtpd_recipient_restrictions =
..
reject_unauth_destination,
reject_unlisted_recipient,
check_policy_service inet:127.0.0.1:10031
..

TMDA
O software TMDA foi desenvolvido para trabalhar em conjunto com o
servidor de emails QMail. Portanto para fazê-lo funcionar perfeitamente
com o postfix são necessárias algumas alterações no sistema. Nesta
solução o que foi desenvolvido é o esquema abaixo:

/-> Maildir
Postfix -> Maildrop ->
\-> TMDA -> Maildir

- O postfix recebe o email enviado
- O email é encaminhado ao Maildrop
- O Maildrop possui um script (/etc/maildroprc) que faz a verificação
das configurações do usuário e, dependendo da configuração do mesmo
envia direto para o Maildir (sem configuração do TMDA) ou envia ao
filtro do TMDA (com configuração do TMDA)

Configuração do Postfix
Primeiramente é necessário fazer com
que o Postfix utilize o Maildrop como Agente de Transporte de email,
portanto as seguintes configurações são necessária:

Arquivo master.cf

maildrop unix – n n – – pipe
flags=DRhu user=vmail argv=/usr/bin/env SENDER=${sender}
RECIPIENT=${recipient} EXTENSION=${extension} /usr/bin/maildrop
-w 90 -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${nexthop}

Instalacao do TMDA

cd /usr/local/src
wget http://tmda.net/releases/tmda.tgz
tar xvfz tmda.tgz
mv tmda-1.0.4 /usr/local/tmda
cd /usr/local/tmda
./compileall

Configurando o Maildrop
O maildrop deverá ser configurado de modo que verique se o usuario tem
as configurações necessárias para rodar o TMDA, ou se o TMDA nao esta
configurado para aquela conta, entregando o email direto na Mailbox.
Para isso vamos criar o arquivo /etc/maildroprc:

# /etc/maildroprc
#Definindo variaveis e parametros recebidos pelo maildrop
LOGNAME=tolower(“$LOGNAME”)
EXTENSION=”$1″
RECIPIENT=tolower(“$2″)
USER=tolower(“$3″)
HOST=tolower(“$4″)
HOME=”/var/email/$HOST/$USER”
SENDER=”$5″
DEFAULT=”/var/email/$HOST/$USER/.”
DEST=”Maildir”

#Arquivo de log, util para debug
logfile “/var/email/$HOST/mailfilter.log”

#Verificacoes de delimitaor,sender e estrutura de pastas

if ( “$EXTENSION” ne “” )
{
DELIMITER=”+”
}
if (!$SENDER)
{
SENDER = “<>”
}
`test -e /var/email/$HOST`
if ( $RETURNCODE != 0 )
{
log “Pasta /var/email/$HOST nao existe, sera criada”
`mkdir /var/email/$HOST`
`chmod -R 0700 /var/email/$HOST`

}
`test -e /var/email/$HOST/$USER`
if ( $RETURNCODE != 0 )
{
log “Pasta /var/email/$HOST/$USER nao existe, sera criada”
`maildirmake /var/email/$HOST/$USER`
`chmod -R 0700 /var/email/$HOST/$USER`
}

`test -e /var/email/$HOST/${USER}/.tmda_install`
if ( $RETURNCODE != 0 )
{
log “Vai gravar direto na pasta do usuario, pois
/var/email/$HOST/${USER}/.tmda_install nao existe”
to “/var/email/$HOST/$USER/$DEST”;
}
else
{
include “/var/email/$HOST/${USER}/.tmda_install”
}

#if ( $RECIPIENT eq $SENDER )
#{
# if ( $COPYTOSELF ne “Y” )
# {
# log “Dumping message to /dev/null/ because SENDER and RECIPIENT match”
# to “/dev/null”
# }
#}

if ( $RECIPIENT eq $SENDER )
{
#Nao passa pelo TMDA se a pessoa esta mandando email para ela mesma
to “/var/email/$HOST/$USER/$DEST”;
}
else
{
if ( $TMDA eq “Y” )
{
#Caso em que o e-mail vai para o TMDA
to “| /usr/local/tmda/bin/tmda-filter”
}
else
{
#Caso nao va par ao TMDA, vai par ao Mailbox
to “/var/email/$HOST/$USER/$DEST”;
}
}

#Fim do arquivo

Conteúdo do arquivo /var/email/diotto.net/<usuario>/.tmda_install

TMDA=”Y”
import SENDER
import RECIPIENT
import EXTENSION

Instalando a Interface Web do TMDA: tmda-cgi

# wget http://tmda.net/tmda-cgi/releases/tmda-cgi-0.15.tar.bz2
# tar -xvjf tmda-cgi-0.15.tar.bz2
# mv tmda-cgi-0.15 /usr/local/tmda-cgi
# cd /usr/local/tmda-cgi
# ./configure

Serão solicitadas várias informações, a mais importante é o nome do
script que lista os usuários virtuais, que deve ficar assim: “vpopmail1
/usr/local/tmda/bin/vuserinfo ~”. O script vuserinfo ainda não existe,
iremos criá-lo.

# make
# make install

Criar o script /usr/local/tmda/bin/vuserinfo:

#!/bin/sh

mailbase=”/var/email/”
domain=`echo $1|cut -d@ -f2`
maildir=`echo $1|cut -d@ -f1`

echo -e “name:\t$1″
echo -e “passwd:”
echo -e “clear passwd:”
echo -e “uid:\t0″
echo -e “gid:\t0″
echo -e “\tall services available”
echo -e “dir:\t$mailbase$domain/$maildir”
echo -e “quota:\tNOQUOTA”
echo -e “usage:\tNOQUOTA”
echo -e “gecos:\tNone”

Após instalado o tmda-cgi atua em conjunto com o apache, e sua
configuração basicamente consiste em montar a pasta
/usr/local/tmda-cgi/skel de modo que permita uma instalação e
desistalação do software da pasta pessoal do usuário. A pasta ficará
conforme a estrutura abaixo:

|– install
| |– .tmda
| | |– config
| | |– crypt_key
| | |– filters
| | | |– incoming
| | | `– outgoing
| | |– lists
| | | |– blacklist
| | | |– confirmed
| | | |– revoked
| | | |– whitelist
| | | `– whitelist_confirmed
| | |– logs
| | | |– debug
| | | |– incoming
| | | `– outgoing
| | |– pending
| | |– response
| | |– templates
| | | |– confirm_accept.txt
| | | `– confirm_request.txt
| | `– tmda-cgi.ini
| |– .tmda_install
| `– anomalies
`– uninstall
`– anomalies

Listas de Discussão
Para permitir o uso de lista de discussão no servidor estarei fazendo
uso do Mailman, o Mailman é um sistema utilizado para administrar
listas de discussão ou listas de informativos (as famosas newsletter)
similar aos conhecidos Majordomo ou Smartmail. A vantagem é que o
Mailman possui administração via Web, onde o administrador pode
gerenciar o sistema de sua mesa de trabalho, usando um browser comum.
Ele possui também filtros de conteúdo, arquivamento das mensagens
enviadas para a lista, moderação de membros, filtros anti-spam dentre
(várias outras funcionalidades http://www.gnu.org/software/mailman/).
O Mailman é utilizado para gerenciar as listas de projetos como o KDE,
Gnome, SaMBa e usado em empresas com a Red Hat, Apple, Sun, Conectiva
dentre outras.

# apt-get install mailman

É necessário incluir algumas linhas no httpd.conf do Apache para a administração via browser.

ScriptAlias /mailman “/var/lib/mailman/cgi-bin”
Alias /pipermail “/var/lib/mailman/archives/public”

Após dar um restart em seu Apache, a interface gráfica deve estar disponível pelo endereço http://seuservidor/mailman/listinfo

Configuração do Postfix
Estas são as alterações necessárias no main.cf do Postfix. Para maiores detalhes, consulte a documentação do mesmo.
Recomendo que não faça o reload no postfix por enquanto, pois ainda não temos os arquivos $mailman/data/*

virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf
alias_maps = hash:/var/lib/mailman/data/aliases, hash:/etc/aliases

Configuração do Mailman
No arquivo /var/lib/mailman/Mailman/Defaults.py:

DEFAULT_EMAIL_HOST = ‘listas.diotto.net’
DEFAULT_URL_HOST = ‘listas.diotto.net’
DEFAULT_URL_PATTERN = ‘http://%s/mailman/’
DEFAULT_SERVER_LANGUAGE = ‘pt_BR’

Em DEFAULT_EMAIL_HOST é interessante deixar o domínio principal de sua máquina, o que terá mais listas sob seu domínio.
Em DEFAULT_URL_HOST será o endereço a ser acessado via browser. Eu estou usando o hostname da máquina.
No arquivo /var/lib/mailman/Mailman/mm.py:
[i]
MTA = “Postfix”
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['listas.diotto.net']

Neste arquivo fica a lista de todos os domínios virtuais que o mailman poderá responder.
Crie o arquivo /var/lib/mailman/data/virtual-mailman com uma linha pertencendo ao usuário “mailman”:

listas.diotto.net anything

O Mailman deverá atualiza-lo a cada lista que você criar ou remover,
junto com um arquivo chamado virtual-mailman.db. Este é o arquivo que o
postfix irá ler para achar seu usuário chamado <lista-subscribe (a)
dominio com br>, por exemplo.
Se esse arquivo não estiver sendo atualizado, você verá mensagens de
//”user unknow”// nos logs do seu postfix. Criando lista administrativa

Utilize os comandos abaixo para criar uma lista chamada ‘mailman’, que servirá para tarefas administrativas.

# newlist mailman
# config_list -i /var/lib/mailman/data/sitelist.cfg mailman

Este último comando fará com que seja atribuída a esta lista uma configuração inicial padrão.
Aproveite para colocar os agendamentos do Mailman no cron:

# cd cron
# crontab crontab.in

Atenção: Faça um backup do seu cron atual, caso já possua algum agendamento! Problemas ao criar uma lista

Devemos agora definir uma senha mestre para o Mailman com o comando:

# mmsitepass

Iniciando e parando o Mailman

# /etc/init.d/mailman stop
# /etc/init.d/mailman start

Fonte:http://www.diotto.net/sobre/

sexta-feira, 23 de julho de 2010

Postagem Temporária Utilizada para Detecção de Tema (18bc2d5c-ed23-40a8-8d9d-c8da6caa17d1 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

Esta é uma postagem temporária que não foi excluída. Exclua-a manualmente. (4e169234-5d8c-4149-a53b-7b1a4b1ee42e - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

Teve a conta do Twitter invadida? Saiba como proceder

Teve a conta do Twitter invadida? Saiba como proceder

Por JoãoPublicado: 23/07/2010Categoria: DicasTags: conta, hackiado, invadida, invadido, perdida, recuperar, rede social, senha, suporte, Twitter

O Twitter é um ótima rede social para você interagir com seus amigos, familiares, colegas etc.. Porém, também é fácil encontrar pessoas mal intencionadas e sites de procedência duvidosa que podem violar a sua conta.

Estamos sorteando no twitter uma webcam de 16 megapixels, quer participar?
Ganhe uma WebCam de 16 megapixels!

Se a sua conta no Twitter for hackeada, você pode recuperá-la muito facilmente. Basta colocar seu email neste formulário e aguardar um pedido de alteração de senha. Porém, se o invasor tiver alterado seu email, será necessário entrar em contato com o suporte para resolver o seu problema.

Diferente do Orkut, o suporte do Twitter é muito intuitivo e rápido, e caso sua conta seja invadida/hackeada eles te respondem em questão de alguns dias, veja como fazer:

  1. Entre nesta página: http://twitter.com/help/escalate
  2. Em "Dear Twitter" selecione: "I'm confused, or have a question".
  3. Em "Regarding" selecione: "Hacked or phised account".
  4. Em "Sharing is caring!" descreva seu problema rápidamente para o suporte, ex:
    My twitter @SEU_USUARIO was hacked, i need support, could you change the e-mail to the old one? Thank you
  5. Preencha os campos: "Love" e "Please enter your email address" respectivamente com seu usuário do twitter e seu email.

Após responder às perguntas, você receberá um número de ticket (por email e também em uma página do support).

E, para agilizar, entre em contato com a Delbius (@delbius), do Suporte do Twitter, e envie a seguinte mensagem para ela "@delbius please, check my ticket #NUMERO_DO_TICKET" não esqueça de enviar como hashtag.

Os tickets de suporte costumam ser respondidos em até 48 horas.

É fácil e rápido, você recebe por email as instruções sobre como proceder para recuperar a conta. Em geral, eles recuperam o email antigo da conta e enviam um pedido de alteração de senha.

No suporte você também pode resolver outros problemas, como requerimento de Verified Accont, problemas com bugs, ou quaquer outra dúvida que você tiver.