Servidor Ubuntu · 8 min read · Oct 01, 2025

O Servidor Perfeito - Ubuntu 16.10 (Yakkety Yak) com Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

Este tutorial mostra a instalação de um servidor de hospedagem web Ubuntu 16.10 (Yakkety Yak) com Apache2, Postfix, Dovecot, Bind e PureFTPD para prepará-lo para a instalação do ISPConfig 3.1. O sistema resultante fornecerá um servidor Web, Mail, Mailinglist, DNS e FTP.

ISPConfig 3 é um painel de controle de hospedagem web que permite configurar 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 a instalação do Apache (em vez do Nginx), BIND (em vez do MyDNS) e Dovecot (em vez do Courier).

Este tutorial é sobre o Ubuntu 16.10, uma versão não-LTS (Long Time Support). A maioria dos usuários prefere uma versão LTS que recebe atualizações e patches de segurança por um período muito mais longo. A versão LTS mais recente é o Ubuntu 16.04, este tutorial também existe em uma versão do Ubuntu 16.04. Considere cuidadosamente se você precisa dos pacotes mais recentes (e não tem problema com um curto período de suporte), então continue com este tutorial. Se você precisa de suporte a longo prazo, então, por favor, use o Tutorial do Servidor Perfeito do Ubuntu 16.04 em vez disso.

1. Nota Preliminar

Neste tutorial, eu uso 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 básica do Ubuntu 16.10, conforme explicado no tutorial.

2. Edite /etc/apt/sources.list e Atualize Sua Instalação do Linux

Edite /etc/apt/sources.list. Comente ou remova o CD de instalação do arquivo e certifique-se de que os repositórios universe e multiverse estão habilitados. Deve ficar assim depois:

nano /etc/apt/sources.list
#  
# deb cdrom:[Ubuntu-Server 16.10 _Yakkety Yak_ - Release amd64 (20161012.1)]/ yakkety main restricted  
#deb cdrom:[Ubuntu-Server 16.10 _Yakkety Yak_ - Release amd64 (20161012.1)]/ yakkety main restricted  
# Veja http://help.ubuntu.com/community/UpgradeNotes para como atualizar para  
# versões mais novas da distribuição.  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety main restricted  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety main restricted  

## Atualizações de correção de bugs importantes produzidas após o lançamento final da  
## distribuição.  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted  

## N.B. software deste repositório é TOTALMENTE NÃO SUPORTADO pela equipe do Ubuntu.  
## Além disso, observe que o software no universe NÃO RECEBERÁ nenhuma  
## revisão ou atualizações da equipe de segurança do Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety universe  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety universe  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety-updates universe  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety-updates universe  

## N.B. software deste repositório é TOTALMENTE NÃO SUPORTADO pela equipe do Ubuntu,  
## e pode não estar sob uma licença livre. Por favor, certifique-se de  
## seus direitos de usar o software. Além disso, observe que o software em  
## multiverse NÃO RECEBERÁ nenhuma revisão ou atualizações da equipe de segurança do Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety multiverse  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety multiverse  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety-updates multiverse  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety-updates multiverse  

## N.B. software deste repositório pode não ter sido testado tão  
## extensivamente quanto aquele contido no lançamento principal, embora inclua  
## versões mais novas de algumas aplicações que podem fornecer recursos úteis.  
## Além disso, observe que o software em backports NÃO RECEBERÁ nenhuma revisão  
## ou atualizações da equipe de segurança do Ubuntu.  
deb http://de.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse  
# deb-src http://de.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse  

## Descomente as duas linhas a seguir para adicionar software do repositório  
## 'partner' da Canonical.  
## Este software não faz parte do Ubuntu, mas é oferecido pela Canonical e pelos  
## respectivos fornecedores como um serviço para os usuários do Ubuntu.  
# deb http://archive.canonical.com/ubuntu yakkety partner  
# deb-src http://archive.canonical.com/ubuntu yakkety partner  
  
deb http://security.ubuntu.com/ubuntu yakkety-security main restricted  
# deb-src http://security.ubuntu.com/ubuntu yakkety-security main restricted  
deb http://security.ubuntu.com/ubuntu yakkety-security universe  
# deb-src http://security.ubuntu.com/ubuntu yakkety-security universe  
deb http://security.ubuntu.com/ubuntu yakkety-security multiverse  
# deb-src http://security.ubuntu.com/ubuntu yakkety-security multiverse

Então execute

apt-get update

para atualizar o banco de dados de pacotes apt e

apt-get upgrade

para instalar as atualizações mais recentes (se houver). Se você ver que um novo kernel é instalado como parte das atualizações, você deve reiniciar o sistema depois:

reboot

3. 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á.

4. Desativar AppArmor

AppArmor é uma extensão de segurança (semelhante ao SELinux) que deve fornecer segurança estendida. Na minha opinião, você não precisa dela para configurar um sistema seguro, e geralmente causa mais problemas do que vantagens (pense nisso depois de ter feito uma semana de resolução de problemas porque algum serviço não estava funcionando como esperado, e então você descobre que tudo estava ok, apenas o AppArmor estava causando o problema). Portanto, eu a desativo (isso é obrigatório se você quiser instalar o ISPConfig mais tarde).

Podemos desativá-lo assim:

service apparmor stop  
update-rc.d -f apparmor remove   
apt-get remove apparmor apparmor-utils

5. 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 quando você executa um servidor físico. Caso você execute um servidor virtual, então você deve pular esta etapa. Basta executar

apt-get -y install ntp ntpdate

e seu horário do sistema estará sempre em sincronia.

6. Instalar Postfix, Dovecot, MariaDB, rkhunter e binutils

Para instalar o postfix, precisamos garantir que o sendmail não esteja instalado e em execução. Para parar e remover o sendmail, execute este comando:

service sendmail stop; update-rc.d -f sendmail remove

A mensagem de erro:

Failed to stop sendmail.service: Unit sendmail.service not loaded.

Está ok, isso apenas significa que o sendmail não estava instalado, então não havia nada para ser removido.

Agora podemos instalar Postfix, Dovecot, MariaDB (como substituto do MySQL), rkhunter e binutils com um único comando:

apt-get -y 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

Você será solicitado as seguintes perguntas:

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

É importante que você use um subdomínio como “nome do email do sistema” como server1.example.com ou server1.seudominio.com e não um domínio que você deseja usar como domínio de email (por exemplo, seudominio.tld) mais tarde.

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 - adicione a linha -o smtpd_client_restrictions=permit_sasl_authenticated,reject a ambas as seções e deixe tudo o mais comentado:

[...]  
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=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=permit_sasl_authenticated,reject  
#  -o milter_macro_daemon_name=ORIGINATING  
[...]  

NOTA: Os espaços em branco na frente das linhas “-o …. “ são importantes!

Reinicie o Postfix depois:

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:

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

Agora definimos uma senha de root no MariaDB. Execute:

mysql_secure_installation

Você será solicitado a estas perguntas:

Digite a senha atual para root (pressione enter para nenhuma): <-- pressione enter  
Definir senha de root? [Y/n] <-- y  
Nova senha: <-- Digite a nova senha de root do MariaDB aqui  
Repetir nova senha: <-- Repita a senha  
Remover usuários anônimos? [Y/n] <-- y  
Desabilitar login remoto do root? [Y/n] <-- y  
Recarregar tabelas de privilégios agora? [Y/n] <-- y

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 de root do MYSQL / MariaDB lá duas vezes nas linhas que começam com password.

nano /etc/mysql/debian.cnf

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

# Gerado automaticamente para scripts do 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

Então reiniciamos o MariaDB:

service mysql restart

Agora verifique se a rede está habilitada. Execute

netstat -tap | grep mysql

A saída deve ser assim:

root@server1:~# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 23476/mysqld  
root@server1:~#  

7. Instalar Amavisd-new, SpamAssassin e Clamav

Para instalar amavisd-new, SpamAssassin e ClamAV, executamos

apt-get -y 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 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  
update-rc.d -f spamassassin remove

Para iniciar o ClamAV use:

freshclam  
service clamav-daemon start

O seguinte erro pode ser ignorado na primeira execução do freshclam.

ERROR: /var/log/clamav/freshclam.log is locked by another process  
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

7.1 Instalar Servidor XMPP Metronome (opcional)

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

Instale os seguintes pacotes com apt.

apt-get -y 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.