Servidor Perfeito · 4 min read · Dec 02, 2025
Estendendo o Servidor Perfeito - Debian Squeeze [ISPConfig 3] - Página 2
3. ROUNDCUBE
Seguindo as instruções acima, você pode instalar o roundcube via apt-get. No entanto, seguindo outra lógica (se você tiver tempo e coragem), você pode instalar o roundcube em seu próprio subdomínio, manualmente.
No “Servidor Perfeito ….” você geralmente instala o Squirrelmai. No entanto, se você não quiser, pode removê-lo:
apt-get remove squirrelmaile excluir o /etc/apache2/conf.d/squirrelmail.conf:
rm /etc/apache2/conf.d/squirrelmail.confOU, se você quiser, edite o /etc/apache2/conf.d/squirrelmail.conf e mude o alias para algo como ‘webmail1’.
Instale o roundcube. (Você DEVE ter a senha do administrador do mysql antes de prosseguir – Deixe o dbconfig-common configurar o banco de dados. Você será questionado sobre a senha do administrador do banco de dados e a senha do novo usuário que será criado para o roundcube. Responda a essas perguntas e continue:
apt-get install roundcube roundcube-mysqlExemplo de respostas: “Configurar banco de dados para roundcube com dbconfig-common?” …. Responda Sim “Tipo de banco de dados a ser usado pelo roundcube: … Responda mysql “Senha do usuário administrativo do banco de dados:” … Responda sua-senha-admin-DB “Senha da aplicação MySQL para roundcube:” … Responda a-senha-que-você-quer-dar-ao-usuário-roundcube “Confirmação de senha:”… Responda a-senha-que-você-quer-dar-ao-usuário-roundcube
Se algo der errado, você pode sempre executar:
dpkg-reconfigure roundcube-corePara mais informações, consulte este post.
Para que todos possam acessar seu webmail (sob seu nome de domínio), você deve criar ou editar o arquivo /etc/apache2/conf.d/roundcube para definir o alias como ‘webmail’. Se você quiser SSL, deve incluir as duas últimas diretivas (IfModule mod_rewrite.c) para que o apache REDIRECIONE SEMPRE para sua instalação SSL do ISPConfig.
nano /etc/apache2/conf.d/roundcube# Esses aliases não funcionam corretamente com vários hosts em seu servidor apache
# Descomente-os para usá-los ou adapte-os à sua configuração
# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube
# Acesso aos arquivos tinymce
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
Options +FollowSymLinks
# Isso é necessário para analisar /var/lib/roundcube/.htaccess. Veja seu
# conteúdo antes de definir AllowOverride como None.
AllowOverride All
order allow,deny
allow from all
# Protegendo diretórios básicos:
Options -FollowSymLinks
AllowOverride None
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
# Para ISPConfig 3.0.5.1 e acima, adicione também o seguinte
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 .:/usr/share/php:/usr/share/pear
php_admin_value upload_tmp_dir /var/lib/roundcube/temp
php_admin_value open_basedir /usr/share/php:/usr/lib/roundcube:/etc/roundcube:/usr/share/roundcube:/var/lib/roundcube:/var/log/roundcube
php_flag register_globals off
Edite /var/lib/roundcube/config/main.inc.php:
nano /var/lib/roundcube/config/main.inc.phpe DEFINA algumas variáveis no arquivo (se esta for a primeira vez que você edita o arquivo, as linhas são 60 e 66):
auto_create_user = TRUE;
$rcmail_config['default_host'] = 'localhost';Se você instalar o seguinte plugin (o logger que ajuda o fail2ban), você deve estender a lista de plugins no mesmo arquivo. Se o único plugin for o que será instalado logo em seguida, você deve editar a linha (42) como abaixo:
$rcmail_config['plugins'] = array('fail2ban'); Instale o plugin roundcube logger de http://mattrude.com/projects/roundcube-fail2ban-plugin/.
Basicamente, você deve baixar o arquivo (fail2ban.php) e colá-lo na pasta fail2ban na pasta de plugins do roundcube. Finalmente, você deve ter este arquivo: /usr/share/roundcube/plugins/fail2ban/fail2ban.php. Execute:
cd /usr/share/roundcube/plugins/
wget –no-check-certificate http://github.com/downloads/mattrude/rc-plugin-fail2ban/roundcube-fail2ban-plugin.1.0.tgz
tar -xvzf roundcube-fail2ban-plugin.1.0.tgz
touch /var/log/roundcube/userlogins
chown www-data:www-data /var/log/roundcube/userlogins
Este plugin atualizará o arquivo de log a cada tentativa de login falha: /var/log/roundcube/userlogins
Não se esqueça de editar o link para o webmail no ISPConfig (Sistema -> Configuração da Interface -> (aba) Mail) e defini-lo como /webmail. Por fim, reinicie o apache.
/etc/init.d/apache2 restartAgora você pode acessar o webmail em http://www.example.com/webmail
4. FAIL2BAN
Estenda o arquivo jail.local que falko sugere no Servidor Perfeito - Debian Squeeze (Debian 6.0) Com BIND & Courier [ISPConfig 3]: /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.localVocê deve anexar ou editar o seguinte:
[roundcube]
enabled = true
port = http,50443
filter = roundcube
logpath = /var/log/roundcube/userlogins
maxretry = 5
[webmin-auth]
enabled = true
port = 50000
filter = webmin-auth
logpath = /var/log/auth.log
maxretry = 3
[ssh]
enabled = true
port = 50022
filter = sshd
logpath = /var/log/auth.log
maxretry = 6A porta 50443 no roundcube é necessária apenas se você ativou o redirecionamento para https (veja no início deste tutorial). A porta 50000 no webmin-auth é a porta alterada (veja no início deste tutorial). A porta 50022 no ssh é a porta alterada (veja nas seções seguintes deste tutorial).
Por último (e muito importante), não se esqueça de criar o arquivo roundcube.conf /etc/fail2ban/filter.d/roundcube.conf.
nano /etc/fail2ban/filter.d/roundcube.confcom o seguinte conteúdo:
[Definition]
failregex = FAILED login for .*. from
ignoreregex = Felizmente, os filtros webmin-auth e ssh já estão prontos para nós pelo próprio fail2ban. Reinicie o fail2ban:
/etc/init.d/fail2ban restartSe alguém adicionar muitas jails no fail2ban, algumas delas podem não iniciar (erros em /var/log/fail2ban.log, mas não na saída !!!). Veja por si mesmo executando:
iptables -L -n Infelizmente, a solução é um pouco uma gambiarra… mas pelo menos é uma solução:
No arquivo /usr/bin/fail2ban-client, na linha 145, você deve inserir time.sleep(0.1) ou time.sleep(0.05):
nano /usr/bin/fail2ban-clientEntão, antes da alteração, o arquivo fica assim:
[...]
def __processCmd(self, cmd, showRet = True):
beautifier = Beautifier()
for c in cmd:
beautifier.setInputCmd(c)
try:
[...] E depois da alteração, o arquivo fica assim:
[...]
def __processCmd(self, cmd, showRet = True):
beautifier = Beautifier()
for c in cmd:
time.sleep(0.05)
beautifier.setInputCmd(c)
try:
[...] Reinicie novamente o fail2ban:
/etc/init.d/fail2ban restartVocê pode verificar se todas as jails estão ativas com o comando:
iptables -L -n Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.