Página anterior | Voltar ao início do trabalho | Página seguinte |
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.
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.
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:
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.
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 |
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).
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.
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:
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 |
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 |
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 trabalho | Página seguinte |
|
|