Servidor Ubuntu · 8 min read · Sep 11, 2025
O Servidor Perfeito - Ubuntu 18.04 (Bionic Beaver) 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 18.04 (Bionic Beaver) com Apache 2.4, 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 é 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).
1. Nota Preliminar
Neste tutorial, 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 18.04, conforme explicado no tutorial.
Os comandos neste tutorial devem ser executados com permissões de root. Para evitar adicionar sudo na frente de cada comando, você terá que se tornar o usuário root executando:
sudo -santes de prosseguir.
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 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted
#deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic 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/ bionic main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic 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/ bionic-updates main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
## N.B. software deste repositório é TOTALMENTE NÃO SUPORTADO pela equipe do Ubuntu
## Também, por favor, note 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/ bionic universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic universe
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-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, satisfaça-se quanto aos
## seus direitos de usar o software. Também, por favor, note 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/ bionic multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-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, por favor, note 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/ bionic-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-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 bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverseEntão execute
apt-get updatepara atualizar o banco de dados de pacotes apt e
apt-get upgradepara instalar as últimas atualizações (se houver). Se você ver que um novo kernel é instalado como parte das atualizações, você deve reiniciar o sistema depois:
reboot3. Mudar o Shell Padrão
/bin/sh é um symlink para /bin/dash, no entanto, precisamos de /bin/bash, não /bin/dash. Portanto, fazemos isso:
dpkg-reconfigure dashUse 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 dele 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 o 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-utils5. 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 deve pular esta etapa. Basta executar
apt-get -y install ntpe o tempo do seu 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 removeA 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 sudoVocê será perguntado as seguintes questões:
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.comÉ importante que você use um subdomínio como “nome do sistema de email” 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.cfDescomente 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 - y - - 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 - y - - 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 restartQueremos 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, que é mais compatível e não é menos seguro.
#bind-address = 127.0.0.1
[...] Agora definimos uma senha root no MariaDB. Execute:
mysql_secure_installationVocê será perguntado estas questões:
Enter current password for root (enter for none): <-- pressione enter
Set root password? [Y/n] <-- y
New password: <-- Digite a nova senha root do MariaDB aqui
Re-enter new password: <-- Repita a senha
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- yDefina o método de autenticação de senha no MariaDB para 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 rootEdite 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.cnfA senha root do MySQL que precisa ser adicionada é mostrada em leitura, neste exemplo a senha é “howtoforge”. Substitua a palavra “howtoforge” pela senha que você definiu para o usuário root do MySQL com o comando mysql_secure_installation.
# 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 = /usrEntão reiniciamos o MariaDB:
service mysql restartAgora verifique se a rede está habilitada. Execute
netstat -tap | grep mysqlA saída deve ser assim:
root@server1:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 30591/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 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 postgreyA 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 removePara iniciar o ClamAV use:
freshclam
service clamav-daemon startO 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).O programa amavisd-new tem atualmente um bug no Ubuntu 18.04 que impede que os emails sejam assinados corretamente com Dkim. Execute os seguintes comandos para corrigir o amavisd-new.
cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/sbin
cp -pf amavisd-new amavisd-new_bak
patch < /tmp/ubuntu-amavisd-new-2.11.patchCaso você receba um erro para o último comando ‘patch’, então o Ubuntu provavelmente já corrigiu o problema nesse meio tempo, então deve ser seguro ignorar esse erro.
7.1 Instalar o Servidor Metronome XMPP (opcional)
O Servidor Metronome XMPP 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 luarocksluarocks install lpcAdicione um usuário shell para o Metronome.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronomeBaixe 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 installO Metronome agora foi instalado em /opt/metronome.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.