Servidor Web · 12 min read · Sep 30, 2025
Instalando um Cluster Web, Email e Banco de Dados MySQL no Debian 6.0 com ISPConfig 3 - Página 2
Os próximos passos devem ser executados no servidor 1 e no servidor 2.
Para instalar amavisd-new, SpamAssassin e ClamAV, executamos:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perlA configuração do ISPConfig 3 usa amavisd que carrega a biblioteca de filtro do SpamAssassin internamente, então podemos parar o SpamAssassin para liberar um pouco de RAM:
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Em seguida, instale Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt da seguinte forma:
apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wgetVocê verá a seguinte pergunta:
Servidor web para reconfigurar automaticamente: <– apache2
Configurar banco de dados para phpmyadmin com dbconfig-common? <– Não
Em seguida, execute o seguinte comando para habilitar os módulos do Apache suexec, rewrite, ssl, actions e include:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digestPureFTPd e quota podem ser instalados com o seguinte comando:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatoolEdite o arquivo /etc/default/pure-ftpd-common…
vi /etc/default/pure-ftpd-common… e certifique-se de que o modo de inicialização esteja definido como standalone e defina VIRTUALCHROOT=true:
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]Edite o arquivo /etc/inetd.conf para evitar que o inetd tente iniciar o ftp:
vi /etc/inetd.confSe houver uma linha começando com ftp stream tcp, comente-a (se não houver tal arquivo, tudo bem, e você não precisa modificar /etc/inetd.conf):
[...]
#:STANDARD: Estes são serviços padrão.
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]Se você teve que modificar /etc/inetd.conf, reinicie o inetd agora:
/etc/init.d/openbsd-inetd restartAgora configuramos o PureFTPd para permitir sessões FTP e TLS. FTP é um protocolo muito inseguro porque todas as senhas e todos os dados são transferidos em texto claro. Ao usar TLS, toda a comunicação pode ser criptografada, tornando o FTP muito mais seguro.
Se você quiser permitir sessões FTP e TLS, execute:
echo 1 > /etc/pure-ftpd/conf/TLSPara usar TLS, devemos criar um certificado SSL. Eu o crio em /etc/ssl/private/, portanto, primeiro crio esse diretório:
mkdir -p /etc/ssl/private/Depois, podemos gerar o certificado SSL da seguinte forma:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemNome do País (código de 2 letras) [AU]: <– Insira o Nome do seu País (por exemplo, “BR”).
Nome do Estado ou Província (nome completo) [Some-State]: <– Insira o Nome do seu Estado ou Província.
Nome da Localidade (por exemplo, cidade) []: <– Insira sua Cidade.
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <– Insira o Nome da sua Organização (por exemplo, o nome da sua empresa).
Nome da Unidade Organizacional (por exemplo, seção) []: <– Insira o Nome da sua Unidade Organizacional (por exemplo, “Departamento de TI”).
Nome Comum (por exemplo, SEU nome) []: <– Insira o Nome de Domínio Qualificado do sistema (por exemplo, “servidor1.exemplo.com”).
Endereço de Email []: <– Insira seu Endereço de Email.
Altere as permissões do certificado SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pemEm seguida, reinicie o PureFTPd:
/etc/init.d/pure-ftpd-mysql restartEdite /etc/fstab. O meu se parece com isso (adicionei, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 à partição com o ponto de montagem /):
vi /etc/fstab# /etc/fstab: informações do sistema de arquivos estático.
#
# Use 'blkid' para imprimir o identificador universalmente único para um
# dispositivo; isso pode ser usado com UUID= como uma maneira mais robusta de nomear dispositivos
# que funciona mesmo se discos forem adicionados e removidos. Veja fstab(5).
#
#
proc /proc proc defaults 0 0
# / estava em /dev/sda1 durante a instalação
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
# swap estava em /dev/sda5 durante a instalação
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 Para habilitar quota, execute esses comandos:
mount -o remount /quotacheck -avugm
quotaon -avug
Instale o Servidor DNS BIND:
apt-get -y install bind9 dnsutilsInstale vlogger, webalizer e awstats:
apt-get -y install vlogger webalizer awstats geoip-databaseAbra /etc/cron.d/awstats depois…
vi /etc/cron.d/awstats… e comente ambas as tarefas cron nesse arquivo:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Gerar relatórios estáticos:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh Instale o Jailkit: Jailkit é necessário apenas se você quiser chroot usuários SSH. Ele pode ser instalado da seguinte forma (importante: Jailkit deve ser instalado antes do ISPConfig - não pode ser instalado depois!):
apt-get -y install build-essential autoconf automake1.9 libtool flex bisoncd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*
Instale o fail2ban: Isso é opcional, mas recomendado, porque o monitor do ISPConfig tenta mostrar o log:
apt-get install fail2banPara fazer o fail2ban monitorar o PureFTPd e o Dovecot, crie o arquivo /etc/fail2ban/jail.local:
vi /etc/fail2ban/jail.local[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
Em seguida, crie os seguintes dois arquivos de filtro:
vi /etc/fail2ban/filter.d/pureftpd.conf[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex = vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex = Reinicie o fail2ban depois:
/etc/init.d/fail2ban restartPara instalar o cliente de webmail SquirrelMail, execute:
apt-get install squirrelmailEm seguida, crie o seguinte link simbólico…
ln -s /usr/share/squirrelmail/ /var/www/webmail… e configure o SquirrelMail:
squirrelmail-configureDevemos informar ao SquirrelMail que estamos usando Dovecot-IMAP/-POP3:
Configuração do SquirrelMail : Ler: config.php (1.4.0)
Menu Principal –
- Preferências da Organização
- Configurações do Servidor
- Padrões de Pasta
- Opções Gerais
- Temas
- Catálogos de Endereços
- Mensagem do Dia (MOTD)
- Plugins
- Banco de Dados
- Idiomas
D. Definir configurações pré-definidas para servidores IMAP específicos
C Ativar cor
S Salvar dados
Q Sair
Comando >> <– D
Configuração do SquirrelMail : Ler: config.php
Enquanto estivemos construindo o SquirrelMail, descobrimos algumas
preferências que funcionam melhor com alguns servidores que
não funcionam tão bem com outros. Se você selecionar seu
servidor IMAP, esta opção definirá algumas
configurações pré-definidas para esse servidor.
Por favor, note que você ainda precisará passar por e
certificar-se de que tudo está correto. Isso não
muda tudo. Existem apenas algumas
configurações que isso mudará.
Por favor, selecione seu servidor IMAP:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington’s IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Não mudar nada
Comando >> <– dovecot
Configuração do SquirrelMail : Ler: config.php
Enquanto estivemos construindo o SquirrelMail, descobrimos algumas
preferências que funcionam melhor com alguns servidores que
não funcionam tão bem com outros. Se você selecionar seu
servidor IMAP, esta opção definirá algumas
configurações pré-definidas para esse servidor.
Por favor, note que você ainda precisará passar por e
certificar-se de que tudo está correto. Isso não
muda tudo. Existem apenas algumas
configurações que isso mudará.
Por favor, selecione seu servidor IMAP:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington’s IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Não mudar nada
Comando >> dovecot
imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
Pressione enter para continuar… <– pressione ENTER
Configuração do SquirrelMail : Ler: config.php (1.4.0)
Menu Principal –
- Preferências da Organização
- Configurações do Servidor
- Padrões de Pasta
- Opções Gerais
- Temas
- Catálogos de Endereços
- Mensagem do Dia (MOTD)
- Plugins
- Banco de Dados
- Idiomas
D. Definir configurações pré-definidas para servidores IMAP específicos
C Ativar cor
S Salvar dados
Q Sair
Comando >> <– S
Configuração do SquirrelMail : Ler: config.php (1.4.0)
Menu Principal –
- Preferências da Organização
- Configurações do Servidor
- Padrões de Pasta
- Opções Gerais
- Temas
- Catálogos de Endereços
- Mensagem do Dia (MOTD)
- Plugins
- Banco de Dados
- Idiomas
D. Definir configurações pré-definidas para servidores IMAP específicos
C Ativar cor
S Salvar dados
Q Sair
Comando >> <– Q
Em seguida, habilitamos um Alias global /webmail para Squirrelmail:
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Agora abra /etc/apache2/conf.d/squirrelmail.conf…
vi /etc/apache2/conf.d/squirrelmail.conf… e adicione as seguintes linhas ao contêiner
[...]
Alias /webmail /usr/share/squirrelmail
Options FollowSymLinks
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
php_flag register_globals off
DirectoryIndex index.php
# o acesso ao configtest é limitado por padrão para evitar vazamento de informações
order deny,allow
deny from all
allow from 127.0.0.1
[...]Crie o diretório /var/lib/squirrelmail/tmp…
mkdir /var/lib/squirrelmail/tmp… e torne-o propriedade do usuário www-data:
chown www-data /var/lib/squirrelmail/tmpRecarregue o Apache novamente:
/etc/init.d/apache2 reloadÉ isso mesmo - /etc/apache2/conf.d/squirrelmail.conf define um alias chamado /squirrelmail que aponta para o diretório de instalação do SquirrelMail /usr/share/squirrelmail.
Agora você pode acessar o SquirrelMail a partir do seu site da seguinte forma:
http://www.exemplo.com/squirrelmailVocê também pode acessá-lo a partir do painel de controle do ISPConfig vhost da seguinte forma (isso não precisa de nenhuma configuração no ISPConfig):
http://servidor1.exemplo.com:8080/squirrelmailEm seguida, instalamos o Unison. O Unison é usado para sincronizar os diretórios /var/www e /var/vmail entre mestre e escravo
apt-get install unisonAgora instalamos um arquivo de configuração do unison no primeiro servidor.
No servidor 1:
Crie um novo arquivo /root/.unison/default.prf no servidor1…
mkdir /root/.unison
vi /root/.unison/default.prf
… e adicione o seguinte conteúdo:
# Raízes da sincronização
root = /var
root = ssh://192.168.0.106//var/
# Caminhos a sincronizar
path = www
path = vmail
# Algumas regexps especificando nomes e caminhos a ignorar
#ignore = Path stats ## ignora /var/www/stats
#ignore = Path stats/* ## ignora /var/www/stats/*
#ignore = Path */stats ## ignora /var/www/somedir/stats, mas não /var/www/a/b/c/stats
#ignore = Name *stats ## ignora todos os arquivos/diretórios que terminam com "stats"
#ignore = Name stats* ## ignora todos os arquivos/diretórios que começam com "stats"
#ignore = Name *.tmp ## ignora todos os arquivos com a extensão .tmp
# Quando definido como verdadeiro, esta flag faz com que a interface do usuário ignore
# perguntas de confirmação sobre mudanças não conflitantes. (Mais
# precisamente, quando a interface do usuário termina de definir a
# direção de propagação para uma entrada e está prestes a passar para a
# próxima, ela ignorará todas as entradas não conflitantes e irá
# diretamente para o próximo conflito.)
auto=true
# Quando isso é definido como verdadeiro, a interface do usuário não fará perguntas
# de forma alguma. Mudanças não conflitantes serão propagadas;
# conflitos serão ignorados.
batch=true
# !Quando isso é definido como verdadeiro, o Unison solicitará uma confirmação extra
# se parecer que toda a réplica foi deletada, antes de propagar a mudança. Se a flag
# batch também estiver definida, a sincronização será abortada. Quando a preferência
# de caminho é usada, a mesma confirmação será solicitada para
# caminhos de nível superior. (No momento, essa flag só afeta a
# interface de usuário de texto.) Veja também a preferência de ponto de montagem.
confirmbigdel=true
# Quando essa preferência é definida como verdadeira, o Unison usará o
# tempo de modificação e o comprimento de um arquivo como um `pseudo inode
# number' ao escanear réplicas em busca de atualizações, em vez de ler
# o conteúdo completo de cada arquivo. Sob o Windows, isso pode fazer
# com que o Unison perca a propagação de uma atualização se o tempo de modificação
# e o comprimento do arquivo não forem alterados pela atualização.
# No entanto, o Unison nunca sobrescreverá tal atualização com uma
# mudança da outra réplica, uma vez que sempre faz uma verificação segura
# de atualizações logo antes de propagar uma mudança. Assim, é
# razoável usar essa chave no Windows na maioria das vezes
# e ocasionalmente executar o Unison uma vez com fastcheck definido como falso,
# se você estiver preocupado que o Unison possa ter ignorado uma atualização.
# O valor padrão da preferência é auto, que faz com que
# o Unison use verificação rápida em réplicas Unix (onde é seguro)
# e verificação lenta em réplicas Windows. Para compatibilidade
# retroativa, yes, no e default podem ser usados no lugar de
# true, false e auto. Veja a seção "Verificação Rápida" para mais
# informações.
fastcheck=true
# Quando essa flag é definida como verdadeira, os atributos de grupo dos
# arquivos são sincronizados. Se os nomes de grupo ou os identificadores de grupo
# são sincronizados depende da preferência numerids.
group=true
# Quando essa flag é definida como verdadeira, os atributos de proprietário dos
# arquivos são sincronizados. Se os nomes de proprietário ou os identificadores de proprietário
# são sincronizados depende da preferência extttnumerids.
owner=true
# Incluindo a preferência -prefer root faz com que o Unison sempre
# resolva conflitos a favor do root, em vez de pedir
# orientação ao usuário. (A sintaxe de root é a mesma que para
# a preferência root, além dos valores especiais newer e older.)
# Essa preferência é substituída pela preferência preferpartial.
# Essa preferência deve ser usada apenas se você tiver certeza de que sabe
# o que está fazendo!
prefer=newer
# Quando essa preferência é definida como verdadeira, a interface de usuário
# de texto não imprimirá nada, exceto em caso de erros.
# Definir silent como verdadeiro automaticamente define a preferência batch
# como verdadeira.
silent=true
# Quando essa flag é definida como verdadeira, os tempos de modificação de arquivos
# (mas não os modtimes de diretórios) são propagados.
times=trueQueremos automatizar a sincronização, por isso criamos uma tarefa cron para isso em server1.example.tld:
crontab -e*/5 * * * * /usr/bin/unison &> /dev/nullReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.