Servidor Debian · 7 min read · Nov 06, 2025

O Servidor Perfeito - Debian 9 (Stretch) com Apache, BIND, Dovecot, PureFTPD e ISPConfig 3.1

Este tutorial mostra como preparar um servidor Debian 9 (com Apache2, BIND, Dovecot) para a instalação do ISPConfig 3.1, e como instalar o ISPConfig. O painel de controle de hospedagem web ISPConfig 3 permite que você configure os seguintes serviços através de um navegador web: servidor web Apache ou nginx, servidor de email Postfix, servidor IMAP/POP3 Courier ou Dovecot, MySQL, servidor de nomes BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, e muitos mais. Esta configuração cobre Apache (em vez de nginx), BIND e Dovecot.

1 Nota Preliminar

Neste tutorial, usarei o nome do host server1.example.com com o endereço IP 192.168.1.100 e o gateway 192.168.1.1. Essas configurações podem diferir para você, então você deve substituí-las onde apropriado. Antes de prosseguir, você precisa ter uma instalação mínima do Debian 9. Isso pode ser uma imagem mínima do Debian do seu provedor de hospedagem ou você pode usar o tutorial do Servidor Debian Mínimo para configurar o sistema base.

2 Instalar o servidor SSH (Opcional)

Se você não instalou o servidor OpenSSH durante a instalação do sistema, você pode fazê-lo agora:

apt-get install ssh openssh-server

A partir de agora, você pode usar um cliente SSH como o PuTTY e se conectar do seu workstation ao seu servidor Debian 9 e seguir os passos restantes deste tutorial.

3 Instalar um editor de texto shell (Opcional)

Usaremos o editor de texto nano neste tutorial. Alguns usuários preferem o editor clássico vi, portanto, instalaremos ambos os editores aqui. O programa vi padrão tem um comportamento estranho no Debian e Ubuntu; para corrigir isso, instalamos vim-nox:

apt-get install nano vim-nox

Se vi é o seu editor favorito, então substitua nano por vi nos seguintes comandos para editar arquivos.

4 Configurar o Nome do Host

O nome do host do seu servidor deve ser um subdomínio como “server1.example.com”. Não use um nome de domínio sem parte de subdomínio como “example.com” como nome do host, pois isso causará problemas mais tarde com sua configuração de email. Primeiro, você deve verificar o nome do host em /etc/hosts e alterá-lo quando necessário. A linha deve ser: “Endereço IP - espaço - nome do host completo incluindo domínio - espaço - parte do subdomínio”. Para nosso nome do host server1.example.com, o arquivo deve parecer com isso:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

# As linhas a seguir são desejáveis para hosts compatíveis com IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Em seguida, edite o arquivo /etc/hostname:

nano /etc/hostname

Deve conter apenas a parte do subdomínio, no nosso caso:

server1

Finalmente, reinicie o servidor para aplicar a alteração:

reboot

Faça login novamente e verifique se o nome do host está correto agora com estes comandos:

hostname  
hostname -f

A saída deve ser assim:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Atualize sua Instalação do Debian

Primeiro, certifique-se de que seu /etc/apt/sources.list contém o repositório stretch/updates (isso garante que você sempre receba as atualizações de segurança mais recentes), e que os repositórios contrib e non-free estão habilitados, pois alguns pacotes necessários não estão no repositório principal.

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main contrib non-free  
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free  
  
deb http://security.debian.org/debian-security stretch/updates main contrib non-free  
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

Execute:

apt-get update

Para atualizar o banco de dados de pacotes apt

apt-get upgrade

e para instalar as atualizações mais recentes (se houver).

6 Mudar o Shell padrão

/bin/sh é um link simbólico para /bin/dash, no entanto, precisamos de /bin/bash, não /bin/dash. Portanto, fazemos isso:

dpkg-reconfigure dash

Usar dash como o shell padrão do sistema (/bin/sh)? <- não

Se você não fizer isso, a instalação do ISPConfig falhará.

7 Sincronizar o Relógio do Sistema

É uma boa ideia sincronizar o relógio do sistema com um servidor NTP ( n etwork t ime p rotocol) pela Internet. Basta executar

apt-get install ntp

e seu horário do sistema estará sempre sincronizado.

8 Instalar Postfix, Dovecot, MySQL, rkhunter e Binutils

Podemos instalar Postfix, Dovecot, MySQL, rkhunter e Binutils com um único comando:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

Quando você preferir MySQL em vez de MariaDB, substitua os pacotes “mariadb-client mariadb-server” no comando acima por “mysql-client mysql-server”.

Você será perguntado as seguintes questões:

Tipo geral de configuração de email: <– Internet Site
Nome do sistema de email: <– server1.example.com

Para garantir a instalação do MariaDB / MySQL e desativar o banco de dados de teste, execute este comando:

mysql_secure_installation

Responda às perguntas da seguinte forma:

Alterar a senha do root? [Y/n] <-- y  
Nova senha: <-- Digite uma nova senha root do MySQL  
Repetir nova senha: <-- Repita a senha root do MySQL  
Remover usuários anônimos? [Y/n] <-- y  
Desabilitar login remoto do root? [Y/n] <-- y  
Remover banco de dados de teste e acesso a ele? [Y/n] <-- y  
Recarregar tabelas de privilégios agora? [Y/n] <-- y

Em seguida, abra as portas TLS/SSL e de envio no Postfix:

nano /etc/postfix/master.cf

Descomente as seções de envio e smtps da seguinte forma e adicione linhas onde necessário para que esta seção do arquivo master.cf pareça exatamente como a abaixo.

[...]
submission inet n - - - - smtpd  
 -o syslog_name=postfix/submission  
 -o smtpd_tls_security_level=encrypt  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING  
smtps inet n - - - - smtpd  
 -o syslog_name=postfix/smtps  
 -o smtpd_tls_wrappermode=yes  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING
[...]

Reinicie o Postfix em seguida:

service postfix restart

Queremos que o MySQL escute em todas as interfaces, não apenas no localhost. Portanto, editamos /etc/mysql/mariadb.conf.d/50-server.cnf e comentamos a linha bind-address = 127.0.0.1 e adicionamos a linha sql-mode=”NO_ENGINE_SUBSTITUTION”:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Em vez de skip-networking o padrão agora é escutar apenas em
# localhost, que é mais compatível e não menos seguro.
#bind-address           = 127.0.0.1  
  
sql-mode="NO_ENGINE_SUBSTITUTION"  
  
[...]

Defina o método de autenticação de senha no MariaDB como nativo para que possamos usar o PHPMyAdmin mais tarde para conectar como usuário root:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Edite o arquivo /etc/mysql/debian.cnf e defina a senha root do MYSQL / MariaDB lá duas vezes nas linhas que começam com password.

nano /etc/mysql/debian.cnf

A senha root do MySQL que precisa ser adicionada é mostrada em leitura, neste exemplo a senha é “howtoforge”.

# Gerado automaticamente para scripts Debian. NÃO TOQUE!  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Para evitar o erro ‘ Erro ao aceitar: Muitos arquivos abertos ‘, definiremos limites de arquivos abertos mais altos para o MariaDB agora.

Abra o arquivo /etc/security/limits.conf com um editor:

nano /etc/security/limits.conf

E adicione estas linhas ao final do arquivo.

mysql soft nofile 65535  
mysql hard nofile 65535

Em seguida, crie um novo diretório /etc/systemd/system/mysql.service.d/ com o comando mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

E adicione um novo arquivo dentro:

nano /etc/systemd/system/mysql.service.d/limits.conf

Cole as seguintes linhas nesse arquivo:

[Service]  
LimitNOFILE=infinity

Salve o arquivo e feche o editor nano.

Então, recarregue o systemd e reinicie o MariaDB:

systemctl daemon-reload  
service mysql restart

Agora verifique se a rede está habilitada. Execute

netstat -tap | grep mysql

A saída deve parecer com isso:

root@server1:/home/administrator# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld  
root@server1:/home/administrator#

9 Instalar Amavisd-new, SpamAssassin e ClamAV

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-perl libdbd-mysql-perl postgrey

A configuração do ISPConfig 3 usa amavisd que carrega a biblioteca de filtro SpamAssassin internamente, então podemos parar o SpamAssassin para liberar um pouco de RAM:

service spamassassin stop  
systemctl disable spamassassin

9.1 Instalar o Servidor XMPP Metronome (opcional)

Esta etapa instala o Servidor XMPP Metronome que fornece um servidor de chat que é compatível com o protocolo XMPP. Esta etapa é opcional, se você não precisar de um servidor de chat, então você pode pular esta etapa. Nenhuma outra função do ISPConfig depende deste software.

Adicione o repositório de pacotes Prosody no Debian.

echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list  
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Atualize a lista de pacotes:

apt-get update

e instale os pacotes com apt.

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Adicione um usuário shell para o Metronome.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Baixe o Metronome para o diretório /opt e compile-o.

cd /opt; git clone https://github.com/maranda/metronome.git metronome  
cd ./metronome; ./configure --ostype=debian --prefix=/usr  
make  
make install

O Metronome agora foi instalado em /opt/metronome.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.