Página anterior Voltar ao início do trabalhoPágina seguinte 

 

1.3. Instalando programas adicionais

Agora é hora de instalar alguns programas adicionais que trabalharão junto ao qmail. Estes são: ucspi e daemontools.

Vamos instalar os dois programas:

cd /root/build

tar zpvfx /root/download/ucspi-tcp-0.88.tar.gz

cd ucspi-tcp-0.88

make

make setup check

mkdir /package

chmod 1755 /package

cd /package

tar zpvfx /root/download/daemontools-0.76.tar.gz

cd admin/daemontools-0.76

package/install

Pronto. Os dois programas foram instalados com êxito.

1.4. Configurando a inicialização do qmail

Agora vamos ter que criar uma série de scripts e procedimentos para a inicialização do qmail. Crie o arquivo /var/qmail/rc com o seguinte conteúdo:

#!/bin/sh

# Using stdout for logging

# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start "`cat /var/qmail/control/defaultdelivery`"

Depois digite os comandos:

chmod 755 /var/qmail/rc

mkdir /var/log/qmail

Agora precisaremos configurar qual o tipo de caixa de mensagem teremos no nosso servidor. Usaremos o Maildir, que é o formato preferido para se trabalhar com o qmail. O Maildir faz com que as mensagens sejam colocadas separadamente em diretórios, diferentemente do mbox, que é o formato padrão do UNIX. No mbox todas as mensagens ficam em um arquivo só, e quando este arquivo está muito grande, pode-se perder um pouco de desempenho. Para configurar o tipo de caixa de mensagem, é só colocar o tipo no arquivo "/var/qmail/control/defaultdelivery". Com o comando abaixo, iremos configurar com Maildir:

echo "./Maildir/" > /var/qmail/control/defaultdelivery

Crie então o arquivo /var/qmail/bin/qmailctl com o seguinte conteúdo:

#!/bin/sh

# description: the qmail MTA

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin

export PATH

QMAILDUID=`id -u qmaild`

NOFILESGID=`id -g qmaild`

case "$1" in

start)

echo "Starting qmail"

if svok /service/qmail-send ; then

svc -u /service/qmail-send /service/qmail-send/log

else

echo "qmail-send supervise not running"

fi

if svok /service/qmail-smtpd ; then

svc -u /service/qmail-smtpd /service/qmail-smtpd/log

else

echo "qmail-smtpd supervise not running"

fi

if [ -d /var/lock/subsys ]; then

touch /var/lock/subsys/qmail

fi

;;

stop)

echo "Stopping qmail..."

echo " qmail-smtpd"

svc -d /service/qmail-smtpd /service/qmail-smtpd/log

echo " qmail-send"

svc -d /service/qmail-send /service/qmail-send/log

if [ -f /var/lock/subsys/qmail ]; then

rm /var/lock/subsys/qmail

fi

;;

stat)

svstat /service/qmail-send

svstat /service/qmail-send/log

svstat /service/qmail-smtpd

svstat /service/qmail-smtpd/log

qmail-qstat

;;

doqueue|alrm|flush)

echo "Flushing timeout table and sending ALRM signal to qmail-send."

/var/qmail/bin/qmail-tcpok

svc -a /service/qmail-send

;;

queue)

qmail-qstat

qmail-qread

;;

reload|hup)

echo "Sending HUP signal to qmail-send."

svc -h /service/qmail-send

;;

pause)

echo "Pausing qmail-send"

svc -p /service/qmail-send

echo "Pausing qmail-smtpd"

svc -p /service/qmail-smtpd

;;

cont)

echo "Continuing qmail-send"

svc -c /service/qmail-send

echo "Continuing qmail-smtpd"

svc -c /service/qmail-smtpd

;;

restart)

echo "Restarting qmail:"

echo "* Stopping qmail-smtpd."

svc -d /service/qmail-smtpd /service/qmail-smtpd/log

echo "* Sending qmail-send SIGTERM and restarting."

svc -t /service/qmail-send /service/qmail-send/log

echo "* Restarting qmail-smtpd."

svc -u /service/qmail-smtpd /service/qmail-smtpd/log

;;

cdb)

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

chmod 644 /etc/tcp.smtp.cdb

echo "Reloaded /etc/tcp.smtp."

;;

help)

cat <<HELP

stop -- stops mail service (smtp connections refused, nothing goes out)

start -- starts mail service (smtp connection accepted, mail can go out)

pause -- temporarily stops mail service (connections accepted, nothing leaves)

cont -- continues paused mail service

stat -- displays status of mail service

cdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it

doqueue -- schedules queued messages for immediate delivery

reload -- sends qmail-send HUP, rereading locals and virtualdomains

queue -- shows status of queue

alrm -- same as doqueue

flush -- same as doqueue

hup -- same as reload

HELP

;;

*)

echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"

exit 1

;;

esac

exit 0

Este script é o script de controle de inicialização do qmail. Com ele você poderá iniciar o qmail, parar, reiniciar, entre outros. Depois de criado esse arquivo com o conteúdo acima, utilize os comandos:

chmod 755 /var/qmail/bin/qmailctl

ln -s /var/qmail/bin/qmailctl /usr/sbin

Quando quiser colocar o qmail para ser rodado na inicialização do Linux, faça os ajustes necessários em sua distribuição para rodar o comando "/usr/sbin/qmailctl start".

Agora iremos criar os scripts "supervise" do qmail:

mkdir -p /var/qmail/supervise/qmail-send/log

mkdir -p /var/qmail/supervise/qmail-smtpd/log

Preencha agora os conteúdos dos arquivos:

/var/qmail/supervise/qmail-send/run

#!/bin/sh

exec /var/qmail/rc

/var/qmail/supervise/qmail-send/log/run

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

/var/qmail/supervise/qmail-smtpd/run

#!/bin/sh

QMAILDUID=`id -u qmaild`

NOFILESGID=`id -g qmaild`

MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`

LOCAL=`head -1 /var/qmail/control/me`

if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then

echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in

echo /var/qmail/supervise/qmail-smtpd/run

exit 1

fi

if [ ! -f /var/qmail/control/rcpthosts ]; then

echo "No /var/qmail/control/rcpthosts!"

echo "Refusing to start SMTP listener because it'll create an open relay"

exit 1

fi

exec /usr/local/bin/softlimit -m 50000000 \

/usr/local/bin/tcpserver -H -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \

-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

/var/qmail/supervise/qmail-smtpd/log/run

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

Execute os comandos:

echo 20 > /var/qmail/control/concurrencyincoming

chmod 644 /var/qmail/control/concurrencyincoming

chmod 755 /var/qmail/supervise/qmail-send/run

chmod 755 /var/qmail/supervise/qmail-send/log/run

chmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

mkdir -p /var/log/qmail/smtpd

chown qmaill /var/log/qmail /var/log/qmail/smtpd

echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

Logo após feito isso, o qmail será iniciado pelo sistema e já estará funcionando.

1.5. Configurações adicionais para o qmail

1.5.1. Relay

Como configurações adicionais, veremos primeiro quem poderá usar seu servidor de e-mails para mandar e-mails pra fora. Isso se chama "relay", e é muito importante, pois impede que os spammers usem seu servidor de e-mail para mandar spams para e-mails por aí afora. Edite o arquivo /etc/tcp.smtp, nele temos a seguinte linha:

127.:allow,RELAYCLIENT=""

Essa linha diz que o IP 127.x.x.x pode utilizar o relay no seu servidor SMTP. Adicione aqui os IPs e/ou faixas de IPs que poderão utilizar o seu servidor SMTP para enviar e-mails. Como por exemplo:

192.168.1.:allow,RELAYCLIENT=""

200.165.123.223:allow,RELAYCLIENT=""

E por aí vai. Depois salve o arquivo e utilize o seguinte comando para recarregar essa configuração:

qmailctl cdb

1.5.2. Tarpit

Quando fomos compilar o qmail, utilizamos o patch "tarpit", que serve para injetar uma quantidade de segundos entre certas mensagens (veja a descrição do patch para uma melhor explicação). Agora é a hora de configurar esses valores. Existem dois arquivos aos quais teremos que criar para essa configuração:

  • /var/qmail/control/tarpitcount: Quantidade de mensagens aceitas. Depois que o numero de mensagens exceder o valor configurado neste arquivo, o qmail irá esperar X segundos entre cada mensagem adicional. O X segundos está configurado no outro arquivo.
  • /var/qmail/control/tarpitdelay: Quantidade de segundos que o qmail irá esperar entre as mensagens.

Então vamos usar como exemplo no nosso servidor 30 mensagens de limite, e 1 minutos entre cada mensagem adicional:

echo 30 > /var/qmail/control/tarpitcount

echo 60 > /var/qmail/control/tarpitdelay

Mude os valores conforme suas necessidades e gostos.

1.5.3. Outros arquivos de configuração do qmail

Vá no diretório /var/qmail/control (ou /etc/qmail) e verifique os arquivos deste diretório. Eles contém os arquivos de configuração criados pelo comando ./config (ou ./config-fast) que foi executado durante a instalação do qmail. Modifique estes arquivos se você precisar, colocando o hostname completo (isso é feito se o ./config deu certo).

2. Instalando o vpopmail

Agora para cuidar das contas, iremos usar o vpopmail. O vpopmail pode ser encontrado na URL:

http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz

Baixe este arquivo e o descompacte:

cd /root/build

tar zpvfx /root/download/vpopmail-5.2.1.tar.gz

2.1. Configurando e compilando

Antes de compilar, temos que saber o que configurar. Primeiro crie os usuários do vpopmail no sistema:

groupadd vchkpw

useradd vpopmail -g vchkpw -d /mailhome

Repare que o /mailhome irá ser o diretório HOME do usuário vpopmail. Neste diretório estarão armazenados todos os e-mails dos usuários, então substitua esse diretório por um diretório que esteja numa partição grande. É sempre bom você criar uma partição (ou quem sabe colocar outro HD) grande para os e-mails e montar em um diretório. E foi isso que foi usado neste tutorial, uma partição montada no diretório /mailhome.

No nosso tutorial iremos usar o servidor MySQL para armazenar os dados das contas. A configuração inicial do MySQL não é explicada neste tutorial. Primeiro crie um banco de dados para o vpopmail no seu servidor MySQL. Certifique-se que o servidor esteja rodando e execute o comando:

mysqladmin -u root -p create vpopmail

Depois logue-se como root no seu servidor MySQL e crie um usuário vpopmail com as permissões necessárias para o banco de dados vpopmail:

mysql -u root -p mysql

mysql> GRANT ALL PRIVILEGES ON vpopmail.* TO vpopmail@localhost

-> IDENTIFIED BY 'senhasecreta' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

Substitua "senhasecreta" pela senha do usuário vpopmail que você desejar. Veja também se você tem instalado os pacotes de desenvolvimento do MySQL, pois eles serão necessários na hora de compilar o vpopmail. Agora edite o arquivo vmysql.h e altere as seguintes linhas:

/* Edit to match your set up */

#define MYSQL_UPDATE_SERVER "localhost"

#define MYSQL_UPDATE_USER "root"

#define MYSQL_UPDATE_PASSWD "secret"

#define MYSQL_READ_SERVER "localhost"

#define MYSQL_READ_USER "root"

#define MYSQL_READ_PASSWD "secret"

/* End of setup section*/

Substitua o "root" e o "secret" para o usuário "vpopmail" e a senha que você escolheu. Depois disso o vpopmail já estará pronto para utilizar o MySQL como banco de informações sobre as contas de e-mail.

O vpopmail inclui várias configurações na hora da compilação. Todas estas configurações são passadas ao código-fonte do programa através do script ./configure. Vou incluir aqui as descrições de algumas opções interessantes, você poderá escolher quais opções escolher, ou pode seguir o comando exato que utilizei neste tutorial (que é bom também).

  • --enable-learn-passwords: Se a senha do usuário estiver vazia, da próxima vez que o usuário logar no sistema e autenticar, a senha será configurada automaticamente com o que ele tentou autenticar.
  • --enable-auth-logging: Faz um log das tentativas de autenticação no servidor de banco de dados MySQL.
  • --enable-mysql-logging: Faz um log detalhado das tentativas de autenticação no servidor MySQL.
  • --enable-clear-passwd: Além das senhas criptografadas, coloca-se também elas em texto puro. É útil para quando o usuário esquece a senha e o administrador do sistema precisa dela. Mas não recomendado.
  • --enable-default-domain: O domínio padrão do servidor.
  • --enable-mysql: Utilizar o MySQL ou não. Neste tutorial o utilizamos.
  • --enable-many-domains: Se sim, o vpopmail é otimizado para suportar vários dominios. Se não, é otimizado para poucos domínios com muitos e-mails.
  • --enable-qmail-ext: Suporte às extensões de e-mail do qmail (recomendado).
  • --enable-defaultquota: Qual o limite de espaço que cada usuário pode ter por padrão. Sem essa opção, fica sem limite. Você pode configurar isso para cada usuário separadamente depois, mas se quiser estabelecer um padrão, utilize o valor "XS" ou "XC" onde o X é substituido pela quantidade de bytes e numero de mensagens respectivamente. Por exemplo, o parâmetro "--enable-defaultquota=30000000S,2000C" significa que o limite padrão dos usuários será 30MB ou 2000 mensagens. Leia o README.quotas dentro do diretório do código-fonte do vpopmail para mais informações.

Então neste tutorial usaremos o comando:

./configure --enable-learn-passwords=y --enable-auth-logging=y \

--enable-clear-passwd=n --enable-valias=y \

--enable-mysql-logging=y --enable-mysql=y \

--enable-qmail-ext=y --enable-defaultquota=30000000S,2000C

Caso o configurador não ache as bibliotecas do MySQL, instale o pacote de desenvolvimento do MySQL (como dito acima) e aponte com o parâmetro "--enable-libdir". Por exemplo: "--enable-libdir=/usr/include/mysql".

Agora é hora de compilar e instalar o vpopmail através dos comandos:

make

make install-strip

Pronto! O vpopmail já está configurado e funcionando no diretório /mailhome (ou o que você escolheu). Agora é hora de criarmoso o seu primeiro domínio. Fazemos isso com o comando:

/mailhome/bin/vadddomain dominio.com.br

Digite a senha do postmaster, repita e o domínio está criado. Agora é só ir adicionando usuários neste domínio:

/mailhome/bin/vadduser eitch[arroba]dominio.com.br

(Senha)

/mailhome/bin/vadduser hugo[arroba]dominio.com.br

(Senha)

/mailhome/bin/vadduser sakura[arroba]dominio.com.br

(Senha)

E por aí vai.

3. Instalando o Courier-IMAP

Por enquanto nós configuramos o servidor de e-mail (SMTP) e suas contas. Já dá pra mandar e-mail e tudo mais. Mas e pra pegar os e-mails no servidor? Precisaremos de um servidor POP e/ou IMAP. Neste tutorial usaremos o Courier-IMAP, que é um servidor POP e IMAP especialmente feito para servidores qmail com o tipo de caixa de mensagem "Maildir". Caso você não tenha usado o formato "Maildir" na caixa de mensagem, utilize outro servidor como o próprio qmail-pop3d.

O Courier-IMAP pode ser obtido na seguinte URL:

http://prdownloads.sourceforge.net/courier/courier-imap-2.1.1.tar.bz2

Baixe este arquivo para o diretório /tmp. Você terá que virar um usuário comum, pois o Courier-IMAP não permite que você compile o programa com o root. Depois descompacte o programa e compile:

cd /tmp

tar jpvfx courier-imap-2.1.1.tar.bz2

cd courier-imap-2.1.1

su root -c "cp /mailhome/lib/libvpopmail.a /usr/lib ; chmod 644 /usr/lib/libvpopmail.a"

(Senha)

./configure --prefix=/usr --sysconfdir=/etc/courier-imap

make

su root -c "make install-strip; make install-configure"

Agora você terá que decidir quais os serviços que você rodará com o Courier-IMAP. Estão disponíveis: IMAP, POP3, IMAP sob SSL e POP3 sob SSL. No caso deste tutorial, usaremos o IMAP e o POP3. Primeiro logue-se como root e copie o arquivo de inicialização para o diretório /etc/init.d:

cd /tmp/courier-imap-2.1.1

cp courier-imap.sysvinit /etc/init.d

chmod 755 /etc/init.d/courier-imap

Depois coloque este script na inicialização do Linux, de acordo com sua distribuição. O comando para iniciar é:

/etc/init.d/courier-imap start

Mas primeiro devemos configurar primeiro. Vá no diretório "/etc/courier-imap", e edite os arquivos "imapd" e "pop3d", mudando no final de cada arquivo:

IMAPDSTART=YES

(e)

POP3DSTART=YES

Agora você já pode iniciar o courier-imap com o comando anterior, que os servidores de IMAP e POP3 estarão funcionando.

4. Instalando programas adicionais

Certo, temos os serviços básicos para um servidor de e-mail rodar: um servidor SMTP, POP3, um banco de dados com as contas dos usuários. Temos agora que instalar novos programas e acoplá-los à nossa instalação para melhorar o nosso servidor de e-mail. Isso inclui um gerenciador de listas de discussão, filtro de e-mails, anti-virus, e por último uma interface de administração de contas do vpopmail.

4.1. Gerenciador de listas de discussão: ezmlm-idx

O ezmlm-idx é uma versão extendida do ezmlm, que por sua vez é um gerenciador de listas de discussão criado pelo próprio criador do qmail para funcionar em conjunto com o qmail. O ezmlm é um gerenciador muito bom, e muito usado. Outras alternativas ao ezmlm incluem o majordomo, mas no nosso tutorial usaremos o ezmlm-idx. O site oficial do ezmlm-idx é:

http://www.ezmlm.org

Você pode obter a versão 0.40 do ezmlm-idx e a versão 0.53 do ezmlm (você vai precisar dos dois), nas seguintes URLs:

http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/ezmlm-idx-0.40.tar.gz
http://gd.tuwien.ac.at/infosys/mail/qmail/ezmlm-patches/ezmlm-0.53.tar.gz

Baixe e depois descompacte estes dois arquivos:

cd /root/build

tar zpvfx /root/download/ezmlm-0.53.tar.gz

tar zpvfx /root/download/ezmlm-idx-0.40.tar.gz

cd ezmlm-0.53

Agora você vai precisar editar 3 arquivos, que são:

  • conf-bin: Diretório onde vão ficar os binários do ezmlm. Utilize o /usr/bin
  • conf-man: Diretório onde vão ficar as páginas de manual do ezmlm. Utilize o /usr/man
  • conf-qmail: Caso você tenha instalado o qmail em algum lugar quie não seja o /var/qmail, modifique este arquivo, colocando nele o diretório onde você instalou o qmail. No nosso caso vai ficar como /var/qmail mesmo.

Depois de editado os arquivos, vamos aplicar o patch do ezmlm-idx antes de compilar e instalar. Para fazer isso execute os seguintes comandos:

cp -R /root/build/ezmlm-idx-0.40/* /root/build/ezmlm-0.53

(Sobrescreva todos os arquivos se precisar)

patch < idx.patch

echo `which crontab` > conf-cron

(Isso vai colocar o executavel do crontab no arquivo conf-cron)

E antes de compilar, vamos habilitar o suporte ao MySQL já que na instalação deste tutorial estamos usando o MySQL como banco de dados para a gerencia de contas. Edite o arquivo "sub_mysql/conf-sqlcc" e o "sub_mysql/conf-sqlld". O conf-sqlcc aponta para o diretório onde estão os cabeçalhos de desenvolvimento do MySQL (mais uma vez, você precisará ter instalado o pacote de desenvolvimento do MySQL), que geralmente fica em /usr/include/mysql (ou /usr/include). Já o "conf-sqlld" aponta para o diretório onde estão as bibliotecas, que geralmente ficam em /usr/lib/mysql (ou /usr/lib). Tente essas opções caso uma ou outra não funcione.

Depois compile o módulo do MySQL:

make mysql

Pronto, vamos agora compilar o programa, as páginas de manual, o suporte à língua Portuguesa do Brasil:

make clean

make

make man

make pt_BR

E assim o programa estará totalmente compilado. Como passo final, iremos configurar o servidor MySQL para o ezmlm-idx utilizar. Teremos primeiro que criar o nosso banco de dados, o usuário ezmlm e dar as permissões:

mysqladmin -u root -p create ezmlm

mysql -u root -p mysql

mysql> GRANT ALL PRIVILEGES ON ezmlm.* TO ezmlm@localhost

-> IDENTIFIED BY 'senhasecreta' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

Depois na linha de comando digite:

./ezmlm-mktab -d list | mysql -uezmlm -psenhasecreta -f ezmlm

Alguns erros podem ocorrer, dizendo que as tabelas não existem. Isto é normal, e este comando irá criar essas tabelas para você, e deixar o servidor MySQL pronto para o uso do ezmlm-idx. Depois disso é só instalar o ezmlm-idx no sistema através do comando:

make setup

E assim o ezmlm-idx estará totalmente instalado no seu sistema! :)

4.2. Anti-Virus

Um bom servidor de e-mails sempre tem que ter um anti-virus. Nossa instalação irá suportar uma variedade de anti-virus para sistemas Linux disponíveis no mercado, tanto comerciais como livres. O Anti-virus será usado em conjunto com o qmail-scanner (Ver próxima seção). Como neste tutorial estamos usando uma solução livre, usaremos o ClamAV, que tem sua URL oficial sendo:

http://clamav.elektrapro.com/

Baixe a versão mais nova. Neste tutorial, usaremos o seguinte arquivo:

http://unc.dl.sourceforge.net/sourceforge/clamav/clamav-0.60.tar.gz

Baixe este arquivo, descompacte e instale:

cd /root/build

tar zpvfx /root/download/clamav-0.60.tar.gz

cd clamav-0.60

groupadd clamav

useradd clamav -g clamav -s /dev/null

./configure --prefix=/usr --sysconfdir=/etc

make

make install

ldconfig

Agora edite o arquivo /etc/clamav.conf e vamos configurar. A seguir vai um arquivo de configuração exemplo, com as opções comentadas no próprio arquivo:

# Exemplo de configuração do ClamAV

#

 

# Arquivo de log para o clamd, muito útil para se avaliar depois o que o

# clamav está fazendo.

LogFile /var/log/clamav.log

# Tamanho máximo do arquivo de log. Se voce estiver preocupado com seu

# espaço em disco, uns 5MB está bom. Especifique o valor 0 para deixar

# sem limite de tamanho máximo.

LogFileMaxSize 5M

# Loga a hora para cada mensagem do log

LogTime

# Log mais detalhado

LogVerbose

# O arquivo PID contendo o identificador do processo para o servidor clamd.

PidFile /var/run/clamav/clamd.pid

# Diretório onde estão os arquivos .db (banco de dados de virus, entre outros)

DataDirectory /usr/share/clamav

# Diretório onde vai ficar o socket local de conexão com o clamd

LocalSocket /var/lib/clamav/clamd

# Profundidade máxima de diretórios para ser scanneado (segurança)

MaxDirectoryRecursion 15

# Suporte adicional para scannear e-mails

ScanMail

# Scannear arquivos compactados

ScanArchive

# Tamanho máximo limite para scannear arquivos compactados.

ArchiveMaxFileSize 30M

# Limite máximo de recursividade de arquivos compactados dentro de

# arquivos compactados

ArchiveMaxRecursion 5

# Número máximo de arquivos scanneados dentro de um arquivo compactado

ArchiveMaxFiles 1000

# Habilitar o suporte ao Clamuko (Scanneamento em tempo real)

ClamukoScanOnLine

# Set access mask for Clamuko.

ClamukoScanOnOpen

ClamukoScanOnClose

ClamukoScanOnExec

# Qual o diretório que será scanneado os arquivos. Como estamos usando

# num servidor de e-mail, coloque aonde os seus e-mails ficam. No nosso

# caso fica em /mailhome

ClamukoIncludePath /mailhome

# Limite do tamanho do arquivo para ser scanneado com o Clamuko

ClamukoMaxFileSize 5M

# Habilitar suporte a arquivos compactados no Clamuko

ClamukoScanArchive

Depois execute os comandos:

mkdir /var/run/clamav

chown clamav.clamav /var/run/clamav -R

freshclam

(O freshclam atualiza a base de dados do ClamAV)

Agora pra ficar mais eficiente, vamos incluir o freshclam no crontab, para que o programa seja rodado todo dia, verificando por novos bancos de dados com novos virus. Para incluir no crontab, adicione a seguinte linha ao arquivo /etc/crontab:

0 1 * * * root /usr/bin/freshclam

Agora todo dia à 1 da manhã ele vai chegar se existem atualizações no banco de dados de Virus. Caso exista, ele baixa as atualizações automaticamente para você.

Em seguida crie o script /etc/init.d/clamav (ou o equivalente em sua distribuição) com o seguinte conteúdo:

#!/bin/sh

# description: clamav antivirus

case "$1" in

start)

echo -n "Iniciando o ClamAV... "

/usr/sbin/clamd

echo "feito."

;;

stop)

echo -n "Parando o ClamAV... "

kill -TERM `cat /var/run/clamav/clamd.pid`

echo "feito."

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

;;

esac

exit 0

Em seguinda coloque-o na inicialização do sistema (como o script do qmail). Não esqueça de tornar o script executável com o comando:

chmod 755 /etc/init.d/clamav

Agora execute o clamav para ver se está tudo OK:

/etc/init.d/clamav start

4.3. Filtro de e-mails: qmail-scanner

O qmail-scanner é um programa que atua como intermediador dos e-mails do servidor qmail. Com ele você pode especificar que mensagens podem passar ou não, a depender de certos critérios. Estes critérios podem ser por exemplo: barramento de extensões, scannear em programas externos (anti-virus por exemplo), assunto da mensagem, entre outros. Apesar de seu servidor de e-mail perder um pouco de desempenho por ter que scannear todas as mensagens, vale muito à pena ter essa medida de segurança adicional. A URl oficial do programa é:

http://qmail-scanner.sourceforge.net/

Baixe a versão mais nova. Neste tutorial, usaremos o arquivo:

http://unc.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.20rc3.tgz

O qmail-scanner vai fazer uso de um patch do qmail que aplicamos antes. É o qmailqueue-patch. Com ele, podemos especificar para o qmail redirecionar todo o fluxo de entrada de mensagens para o qmail-scanner ao invés do qmail-queue, assim o qmail-scanner pode fazer o filtro dos e-mails e repassar para o verdadeiro qmail-queue, que faz a entrega dos e-mails nas caixas locais.

O qmail-scanner vai precisar de alguns outros programinhas e códigos para satisfazer suas dependências. Estes são:

Instale os módulos do Perl com o CPAN (O perl vem em praticamente todas as distribuições):

perl -MCPAN -e shell

(Configure o CPAN de acordo com as instruções)

install Time::HiRes

install DB_File

install Date::Parse

Para quem não sabe, o CPAN é um repositório de códigos em perl. Com ele você pode instalar "módulo" Perl com a facilidade de um comando. Em termos de facilidade, é bem parecido com o famoso apt :) Os comandos acima instalam os 3 módulos do Perl requeridos pelo qmail-scanner. Além disso, ele instala também outros módulos associados à esses três e que não estejam no seu sistema.

Agora vamos instalar o Maildrop:

cd /root/build

tar jpvfx /root/download/maildrop-1.6.0.tar.bz2

cd maildrop-1.6.0

./configure --prefix=/usr

make

make install-strip

make install-man

Pronto! Maildrop instalado, agora é a vez do TNEF:

cd /root/build

tar zpvfx /root/download/tnef-1.2.1.tar.gz

cd tnef-1.2.1

./configure --prefix=/usr

make

make install

Pronto! TNEF instalado. Agora vamos voltar ao qmail-scanner... Mas antes! O qmail-scanner rodará como root pelo perl, ou seja, ele precisará do perl com suid. Você precisará ter uma instalação do Perl-suid para o qmail-scanner funcionar. Procure pelo pacote do perl-suid em sua distribuição. (Por exemplo, no Debian você pode digitar apt-get install perl-suid).

cd /root/build

tar zpvfx /root/download/qmail-scanner-1.20rc3.tgz

cd qmail-scanner-1.20rc3

groupadd qscand

useradd qscand -g qscand -s /dev/null

./configure --install

O ./condigure irá vasculhar seu sistema pelos programas que ele precisa e por anti-virus disponíveis. Se você fez tudo certo, o resultado que aparecerá na tela será parecido com esse:

Building Qmail-Scanner 1.20rc3...

This script will search your system for the virus scanners it knows

about, and will ensure that all external programs

qmail-scanner-queue.pl uses are explicitly pathed for performance

reasons.

It will then generate qmail-scanner-queue.pl - it is up to you to install it

correctly.

Continue? ([Y]/N) Y

/usr/bin/uudecode works as expected on system...

Found tnef on your system! That means we'll be able to decode stupid

M$ attachments :-)

The following binaries and scanners were found on your system:

mimeunpacker=/usr/bin/reformime

uudecode=/usr/bin/uudecode

unzip=/usr/bin/unzip

tnef=/usr/bin/tnef

Content/Virus Scanners installed on your System

clamuko=/usr/bin/clamdscan (which means clamscan won't be used as clamdscan is better)

Qmail-Scanner details.

log-details=0

fix-mime=1

debug=1

notify=sender,admin

redundant-scanning=no

virus-admin=root@hayama

local-domains='hayama'

silent-viruses='klez','bugbear','hybris','yaha','braid','nimda','tanatos','sobig','winevar','palyh','fizzer'

scanners="clamuko_scanner"

If that looks correct, I will now generate qmail-scanner-queue.pl

for your system...

Continue? ([Y]/N) Y

Testing suid nature of /usr/bin/suidperl...

Looks OK...

Hit RETURN to create initial directory structure under /var/spool/qmailscan,

and install qmail-scanner-queue.pl under /var/qmail/bin: (ENTER)

perlscanner: generate new DB file from /var/spool/qmailscan/quarantine-attachments.txt

perlscanner: total of 9 entries.

Finished installation of initial directory structure for Qmail-Scanner

under /var/spool/qmailscan and qmail-scanner-queue.pl under /var/qmail/bin.

Finished. Please read README(.html) and then go over the script

(/var/qmail/bin/qmail-scanner-queue.pl) to check paths/etc.

"/var/qmail/bin/qmail-scanner-queue.pl -r" should return some well-known virus

definitions to show that the internal perlscanner component is working.

That's it!

 

(...)

Pronto! O qmail-scanner foi instalado no sistema, e seus arquivos de banco de dados e configuração estão disponíveis no diretório /var/spool/qmailscan. Agora aproveite para editar o arquivo "/var/spool/qmailscan/quarantine-attachments.txt" e configure o filtro de arquivos anexados. Por exemplo, adicione as seguintes linhas no final do arquivo (Nota: os espaços nas linhas não são espaços, são TABs):

.exe 0 Executable binary

.com 0 Non relocable MSDOS executable binary

.vbs 0 Visual Basic Script

.vba 0 Visual Basic Application

.shs 0 Shell automation code

.scr 0 Screen Saver

.bat 0 COMMAND.COM batch file

.btm 0 JP Software fast batch file

.reg 0 Windows Registry file

.msi 0 Executable binary

.msc 0 Executable binary

.chm 0 Compiled HTML help file

.inf 0 Windows INF file

.cpl 0 Control Panel library

.wsf 0 Windows Scripting File

.vbe 0 VisualBasic Encoded

.js 0 JavaScript

.jse 0 JavaScript Encoded

.css 0 Cascading Style Sheets

.wsh 0 Windows Scripting Host

.sct 0 Scriptlet File

.hta 0 HTML Application

.lnk 0 Windows Explorer links

.cmd 0 cmd.exe NT batch

.pif 0 Windows Program Information Files

.ade 0 Access Project Extension

.mdb 0 Access Application

.adp 0 Access Project

.mde 0 Access MDE Database

.bas 0 Visual Basic Class Module

.msp 0 Windows Installer Patch

.mst 0 Visual Test Source File

.pcd 0 Photo CD Image

.crt 0 Security Certificate

.hlp 0 Windows Help File

.url 0 Internet Shortcut (Uniform Resource Locator)

.ins 0 Internet Communication Settings

.isp 0 Internet Communication Settings

.vb 0 Script Script File

.wsc 0 Windows Script Componen

.shb 0 Shell Scrap object

.mp3 0 MPEG Layer 3 Sound

.mp2 0 MPEG Layer 2 Sound

Todas as extensões aí listadas serão bloqueadas. Dá pra perceber como funciona, né? Toda vez que você modificar este arquivo, digite o comando:

/var/qmail/bin/qmail-scanner-queue.pl -g

Agora só falta uma última modificação: falar ao qmail para usar o qmail-scanner nos seus e-mails. Para isso usaremos o recurso do patch qmailqueue, aplicado na instalação do qmail. Para quem não lembra, este patch faz com que o qmail procure pela variável de ambiente QMAILQUEUE, e use o programa contido nessa variável para mandar os e-mails recebidos. Para configurar essa variável de ambiente, temos que editar o arquivo CDB do qmail, que no nosso caso ficou como sendo o /etc/tcp.smtp. Dei um exemplo na seção do qmail, então o mesmo exemplo será usado aqui abaixo, com as modificações para o qmail-scanner:

127.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

192.168.1.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

200.165.123.223:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"

Assim todo e-mail será passado pro qmail-scanner. Digite o seguinte para recarregar este arquivo:

qmailctl cdb

5. Conclusão

E aqui acaba o tutorial de como montar um servidor de e-mail completo usando software livre. Espero que tenha sido proveitoso para você leitor. Quaisquer dúvidas por favor me contacte pelo meu e-mail. Com o pessoal me mandando e-mail, eu consigo melhorar drasticamente este tutorial a medida do tempo! Mande suas dúvidas, sugestões e críticas, para que eu torne este tutorial cada vez melhor.

Referências:

Bom proveito!

Hugo Cisneiros
hugo[arroba]devin.com.br



 Página anterior Voltar ao início do trabalhoPágina seguinte 



As opiniões expressas em todos os documentos publicados aqui neste site são de responsabilidade exclusiva dos autores e não de Monografias.com. O objetivo de Monografias.com é disponibilizar o conhecimento para toda a sua comunidade. É de responsabilidade de cada leitor o eventual uso que venha a fazer desta informação. Em qualquer caso é obrigatória a citação bibliográfica completa, incluindo o autor e o site Monografias.com.