Página anterior | Voltar ao início do trabalho | Página seguinte |
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
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 |
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).
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.
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.
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 é:
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! :)
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:
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:
Perl 5.005_03+ e módulos: Time::HiRes, DB_File, Sys::Syslog: http://www.cpan.org
Maildrop 1.3.8+: http://download.sourceforge.net/courier/maildrop-1.6.0.tar.bz2
TNEF Unpacker: http://unc.dl.sourceforge.net/sourceforge/tnef/tnef-1.2.1.tar.gz
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 |
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:
Life With QMail: http://www.lifewithqmail.org
Página do QMail: http://www.qmail.org
Documentações de cada programa :)
Bom proveito!
Hugo Cisneiros - hugo[arroba]devin.com.br. Última atualização em 07/09/2003
El prsente trabajo fue publicado originalmente en: http://www.devin.com.br/
Página anterior | Voltar ao início do trabalho | Página seguinte |
|
|