Servidor Debian · 28 min read · Nov 04, 2025
O Servidor Perfeito - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Este tutorial mostra como preparar um servidor Debian 10 (com Nginx, BIND, Dovecot) para a instalação do ISPConfig 3.2, e como instalar o ISPConfig 3.2. O ISPConfig 3 é um painel de controle de hospedagem na web que permite configurar os seguintes serviços através de um navegador: servidor web Apache ou nginx, servidor de e-mail Postfix, servidor IMAP/POP3 Courier ou Dovecot, MySQL, servidor de nomes BIND ou MyDNS, PureFTPd, SpamAssassin, ClamAV, e muitos mais. Esta configuração cobre o servidor web Nginx, BIND como Servidor DNS, e Dovecot como servidor IMAP / POP3.
1 Nota Preliminar
Neste tutorial, uso o nome do host server1.example.com com o endereço IP 192.168.0.100 e o gateway 192.168.0.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 10. 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.
Todos os comandos abaixo são executados como usuário root. Faça login como usuário root diretamente ou faça login como seu usuário normal e depois use o comando
su -para se tornar o usuário root em seu servidor antes de prosseguir. IMPORTANTE: Você deve usar ‘su -‘ e não apenas ‘su’, caso contrário, sua variável PATH será configurada incorretamente pelo Debian.
2 Instalar o Servidor SSH
Se você não instalou o servidor OpenSSH durante a instalação do sistema, você pode fazê-lo agora:
apt-get -y install ssh openssh-serverA partir de agora, você pode usar um cliente SSH como o PuTTY e se conectar do seu workstation ao seu servidor Debian 10 e seguir os passos restantes deste tutorial.
3 Instalar um editor de texto de shell (Opcional)
Usarei o editor de texto nano neste tutorial. Alguns usuários preferem o editor clássico vi, portanto, instalarei 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 -y install nano vim-nox(Você não precisa fazer isso se usar um editor de texto diferente como joe.)
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 a parte do subdomínio como “example.com” como nome do host, pois isso causará problemas mais tarde com sua configuração de e-mail. 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”. Edite /etc/hosts. Faça com que fique assim:
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
192.168.0.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-allroutersEm seguida, edite o arquivo /etc/hostname:
nano /etc/hostnameDeve conter apenas a parte do subdomínio, no nosso caso:
server1Finalmente, reinicie o servidor para aplicar a alteração:
rebootFaça login novamente e verifique se o nome do host está correto agora com estes comandos:
hostname
hostname -fA saída deve ser assim:
root@server1:/tmp# hostname
server1
root@server1:/tmp# hostname -f
server1.example.com5 Atualize Sua Instalação do Debian
Primeiro, certifique-se de que seu /etc/apt/sources.list contém o repositório buster/updates (isso garante que você sempre receba as atualizações mais recentes para o scanner de vírus ClamAV - este projeto publica lançamentos com muita frequência, e às vezes versões antigas param de funcionar), e que os repositórios contrib e non-free estão habilitados.
nano /etc/apt/sources.listdeb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-freeExecute
apt-get updatepara atualizar o banco de dados de pacotes apt e
apt-get upgradepara 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 dashUsar 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) na Internet. Basta executar
apt-get install ntpe 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 curlVocê será solicitado as seguintes perguntas:
Tipo geral de configuração de e-mail: <– Internet Site
Nome do sistema de e-mail: <– server1.example.com
Para garantir a instalação do MariaDB / MySQL e desabilitar o banco de dados de teste, execute este comando:
mysql_secure_installationNão precisamos mudar a senha root do MariaDB, pois acabamos de definir uma nova durante a instalação. Responda as perguntas da seguinte forma:
Change the root password? [Y/n] <-- y
New password: <-- Digite uma nova senha de root do banco de dados
Re-enter new password: <-- Repita a senha de root do banco de dados
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- yEm 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 e adicione linhas onde necessário para que esta seção do arquivo master.cf fique exatamente como a abaixo. IMPORTANTE: Remova o # na frente das linhas que começam com smtps e envio também e não apenas das linhas -o após essas linhas!
[...]
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=
# -o smtpd_relay_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=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...] Reinicie o Postfix depois:
service postfix restartQueremos que o MariaDB 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
[...] Salve o arquivo. Em seguida, 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 rootEdite o arquivo /etc/mysql/debian.cnf e defina a senha root do MYSQL / MariaDB lá duas vezes nas linhas que começam com a palavra senha.
nano /etc/mysql/debian.cnfA senha root do MySQL que precisa ser adicionada é mostrada em vermelho. 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 = /usrPara 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.confe adicione estas linhas no final do arquivo.
mysql soft nofile 65535
mysql hard nofile 65535Em 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.confcole as seguintes linhas nesse arquivo:
[Service]
LimitNOFILE=infinitySalve o arquivo e feche o editor nano.
Então recarregue o systemd e reinicie o MariaDB:
systemctl daemon-reload
systemctl restart mariadbIgnore o aviso: “ Aviso: O arquivo de unidade, arquivo de configuração de origem ou drop-ins do mariadb.service mudou no disco. Execute ‘systemctl daemon-reload’ para recarregar unidades. “.
Instale o sistema dbconfig-common:
apt-get install dbconfig-common dbconfig-mysqlAtualmente, há um problema com o sistema dbconfig-common do Debian que impede a instalação do RoundCube mais tarde, conserte-o executando este comando:
sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysqlAgora 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 4027/mysqld
root@server1:~#9 Instalar Amavisd-new, SpamAssassin e ClamAV
Para instalar amavisd-new, SpamAssassin e ClamAV, executamos:
apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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:
systemctl stop spamassassin
systemctl disable spamassassin10 Instalar Nginx, PHP (PHP-FPM) e Fcgiwrap
O Nginx está disponível como um pacote para Debian que podemos instalar da seguinte forma:
apt-get install nginxSe o Apache2 já estiver instalado no sistema, pare-o agora…
systemctl stop apache2A mensagem “ Falha ao parar apache2.service: Unidade apache2.service não carregada. “ está bem e não indica um erro.
… e remova os links de inicialização do sistema do Apache:
systemctl disable apache2Inicie o nginx depois:
systemctl start nginx(Se tanto Apache2 quanto nginx estiverem instalados, o instalador do ISPConfig perguntará qual você deseja usar - responda nginx neste caso. Se apenas um desses dois estiver instalado, o ISPConfig fará a configuração necessária automaticamente.)
Podemos fazer o PHP 7.3 funcionar no nginx através do PHP-FPM (PHP-FPM (FastCGI Process Manager) é uma implementação alternativa do PHP FastCGI com alguns recursos adicionais úteis para sites de qualquer tamanho, especialmente sites mais movimentados) que instalamos da seguinte forma:
apt-get install php7.3-fpmO PHP-FPM é um processo daemon que executa um servidor FastCGI no socket /var/run/php/php7.3-fpm.sock.
Para obter suporte ao MySQL no PHP, podemos instalar o pacote php7.3-mysql. É uma boa ideia instalar alguns outros módulos PHP também, pois você pode precisar deles para suas aplicações. Você pode procurar módulos PHP disponíveis assim:
apt-cache search php7Escolha os que você precisa e instale-os assim:
apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcuEm seguida, abra /etc/php/7.3/fpm/php.ini…
nano /etc/php/7.3/fpm/php.ini… e defina cgi.fix_pathinfo=0 e seu fuso horário:
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...] (Você pode encontrar todos os fusos horários disponíveis nos diretórios /usr/share/zoneinfo e suas subdiretivas.)
Agora recarregue o PHP-FPM:
systemctl restart php7.3-fpmPara obter suporte CGI no nginx, instalamos o Fcgiwrap.
Fcgiwrap é um wrapper CGI que deve funcionar também para scripts CGI complexos e pode ser usado para ambientes de hospedagem compartilhada porque permite que cada vhost use seu próprio diretório cgi-bin.
Instale o pacote fcgiwrap:
apt-get install fcgiwrapApós a instalação, o daemon fcgiwrap já deve estar iniciado; seu socket é /var/run/fcgiwrap.socket. Se não estiver em execução, você pode usar o script fservice fcgiwrap para iniciá-lo.
É isso! Agora, quando você criar um vhost nginx, o ISPConfig cuidará da configuração correta do vhost.
10.1 Instalar phpMyAdmin
Desde o Debian 10, o PHPMyAdmin não está mais disponível como pacote .deb. Portanto, instalaremos a partir do código-fonte.
Crie pastas para o PHPMyadmin:
mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setupVá para o diretório /tmp e baixe as fontes do PHPMyAdmin:
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gzDescompacte o arquivo de archive baixado e mova os arquivos para a pasta /usr/share/phpmyadmin e limpe o diretório /tmp.
tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languagesCrie um novo arquivo de configuração para o PHPMyaAdmin com base no arquivo de exemplo fornecido:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpAbra o arquivo de configuração com o editor nano:
nano /usr/share/phpmyadmin/config.inc.phpDefina uma senha segura (segredo blowfish) que deve ter 32 caracteres de comprimento:
$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* VOCÊ DEVE PREENCHER ISSO PARA AUTENTICAÇÃO DE COOKIE! */Não use meu exemplo de segredo blowfish, defina o seu próprio!
Em seguida, adicione uma linha para definir o diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários:
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';Na próxima etapa, configuraremos o armazenamento de configuração do phpMyAdmin (banco de dados).
Faça login no MariaDB como usuário root:
mysql -u root -pNo shell do MariaDB, crie um novo banco de dados para o PHPMyAdmin:
MariaDB [(none)]> CREATE DATABASE phpmyadmin;Em seguida, crie um novo usuário:
MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';Substitua a palavra mypassword por uma senha segura de sua escolha nos comandos acima e abaixo, use a mesma senha duas vezes. Em seguida, conceda ao usuário acesso a este banco de dados e recarregue as permissões do banco de dados.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXITFinalmente, carregue as tabelas SQL no banco de dados:
mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sqlDigite a senha root do MariaDB quando solicitado.
Tudo o que precisamos fazer agora é definir os detalhes do usuário phpmyadmin no arquivo de configuração. Abra o arquivo no editor nano novamente:
nano /usr/share/phpmyadmin/config.inc.phpRole para baixo até ver as linhas abaixo e edite-as:
/* Usuário usado para manipular com armazenamento */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';
/* Banco de dados e tabelas de armazenamento */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';Marquei as linhas em vermelho que editei. Substitua mypassword pela senha que você escolheu para o usuário phpmyadmin. Note que os // na frente das linhas também foram removidos!
Após instalar o ISPConfig 3.2, você pode acessar o phpMyAdmin da seguinte forma:
O vhost de aplicativos do ISPConfig na porta 8081 para nginx vem com uma configuração do phpMyAdmin, então você pode usar http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin para acessar o phpMyAdmin.
Se você quiser usar um alias /phpmyadmin ou /phpMyAdmin que você possa usar de seus sites, isso é um pouco mais complicado do que para o Apache porque o nginx não tem aliases globais (ou seja, aliases que podem ser definidos para todos os vhosts). Portanto, você deve definir esses aliases para cada vhost do qual deseja acessar o phpMyAdmin.
Para fazer isso, cole o seguinte no campo Diretivas do nginx na guia Opções do site no ISPConfig mais tarde:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Se você usar http s em vez de http para seu vhost, deve adicionar a linha fastcgi_param HTTPS on; à sua configuração do phpMyAdmin assim:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS on; # <-- adicione esta linha
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Se você usar tanto http quanto https para seu vhost, pode usar a variável $https. Vá para o campo Diretivas do nginx novamente, e em vez de fastcgi_param HTTPS on; você adiciona a linha fastcgi_param HTTPS $https; para que você possa usar o phpMyAdmin para solicitações http e https:
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param HTTPS $https; # <-- adicione esta linha
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}11 Instalar Let’s Encrypt
O ISPConfig está usando acme.sh agora como cliente Let’s Encrypt. Instale o acme.sh usando o seguinte comando:
curl https://get.acme.sh | sh -s12 Instalar Mailman
O ISPConfig permite que você gerencie (crie/modifique/exclua) listas de discussão do Mailman. Se você quiser usar esse recurso, instale o Mailman da seguinte forma:
apt-get install mailmanSelecione pelo menos um idioma, por exemplo:
Idiomas a serem suportados: <– en (Inglês)
Lista de sites ausente <– Ok
Antes que possamos iniciar o Mailman, uma primeira lista de discussão chamada mailman deve ser criada:
newlist mailmanroot@server1:~# newlist mailman
Digite o e-mail da pessoa que está executando a lista: <– endereço de e-mail do administrador, por exemplo, [email protected]
Senha inicial do mailman: <– senha do administrador para a lista do mailman
Para terminar de criar sua lista de discussão, você deve editar seu arquivo /etc/aliases (ou equivalente) adicionando as seguintes linhas, e possivelmente executando o programa newaliases:
lista de discussão mailman
mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”
Pressione enter para notificar o proprietário do mailman… <– ENTER
root@server1:~#
Abra /etc/aliases depois…
nano /etc/aliases… e adicione as seguintes linhas:
[...]
## lista de discussão mailman
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"Execute
newaliasesdepois e reinicie o Postfix:
systemctl restart postfixEm seguida, inicie o daemon do Mailman:
systemctl restart mailmanApós instalar o ISPConfig 3, você pode acessar o Mailman da seguinte forma:
O vhost de aplicativos do ISPConfig na porta 8081 para nginx vem com uma configuração do Mailman, então você pode usar http://server1.example.com:8081/cgi-bin/mailman/admin/
Se você quiser usar o Mailman de seus sites, isso é um pouco mais complicado do que para o Apache porque o nginx não tem aliases globais (ou seja, aliases que podem ser definidos para todos os vhosts). Portanto, você deve definir esses aliases para cada vhost do qual deseja acessar o Mailman.
Para fazer isso, cole o seguinte no campo Diretivas do nginx na guia Opções do site no ISPConfig:
location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location /images/mailman {
alias /usr/share/images/mailman;
}
location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}Isso define o alias /cgi-bin/mailman/ para seu vhost, o que significa que você pode acessar a interface de administração do Mailman para uma lista em http://
Sob http://
13 Instalar PureFTPd e Quota
PureFTPd e quota podem ser instalados com o seguinte comando:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatoolEdite o arquivo /etc/default/pure-ftpd-common…
nano /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
[...] Agora configuramos o PureFTPd para permitir sessões FTP e TLS. O 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]: <– Digite o Nome do seu País (por exemplo, “DE”).
Nome do Estado ou Província (nome completo) [Some-State]: <– Digite o Nome do seu Estado ou Província.
Nome da Localidade (por exemplo, cidade) []: <– Digite sua Cidade.
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <– Digite o Nome da sua Organização (por exemplo, o nome da sua empresa).
Nome da Unidade Organizacional (por exemplo, seção) []: <– Pressione Enter.
Nome Comum (por exemplo, FQDN do servidor ou SEU nome) []: <– Digite o nome do host do servidor, no meu caso: server1.example.com.
Endereço de E-mail []: <– Digite seu Endereço de E-mail.
Altere as permissões do certificado SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pemEm seguida, reinicie o PureFTPd:
systemctl restart pure-ftpd-mysqlEdite /etc/fstab. O meu se parece com isso (adicionei,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à partição com o ponto de montagem /):
nano /etc/fstab# /etc/fstab: informações estáticas do sistema de arquivos.
#
# Use 'blkid' para imprimir o identificador único universal 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).
#
#
# / estava em /dev/sda1 durante a instalação
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap estava em /dev/sda5 durante a instalação
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 Para habilitar quota, execute estes comandos:
mount -o remount /quotacheck -avugm
quotaon -avug14 Instalar o Servidor DNS BIND
O BIND pode ser instalado da seguinte forma:
apt-get install bind9 dnsutilsSe o seu servidor for uma máquina virtual, é altamente recomendável instalar o daemon haveged para obter uma maior entropia para a assinatura DNSSEC. Você pode instalar o haveged em servidores não virtuais também, não deve causar problemas.
apt-get -y install haveged
systemctl enable haveged
systemctl start havegedUma explicação sobre esse tópico pode ser encontrada aqui.
15 Instalar Webalizer, AWStats e GoAccess
Webalizer e AWStats podem ser instalados da seguinte forma:
apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perlAbra /etc/cron.d/awstats depois…
nano /etc/cron.d/awstats… e comente tudo neste arquivo:
#MAILTO=root
#*/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 ] && /usr/share/awstats/tools/buildstatic.shInstalando a versão mais recente do GoAccess diretamente do repositório GoAccess:
echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt-get update
apt-get install goaccess16 Instalar Jailkit
O Jailkit é necessário apenas se você quiser chroot usuários SSH. Ele pode ser instalado da seguinte forma (importante: o Jailkit deve ser instalado antes do ISPConfig - não pode ser instalado depois!):
apt-get install build-essential autoconf automake libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz
tar xvfz jailkit-2.20.tar.gz
cd jailkit-2.20
echo 5 > debian/compat
./debian/rules binaryAgora você pode instalar o pacote Jailkit.deb da seguinte forma:
cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*17 Instalar Fail2ban e Firewall UFW
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:
nano /etc/fail2ban/jail.local[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5
[postfix-sasl]
enabled = true
port = smtp
filter = postfix[mode=auth]
logpath = /var/log/mail.log
maxretry = 3Reinicie o fail2ban depois:
systemctl restart fail2banPara instalar o firewall UFW, execute este comando apt:
apt-get install ufw18 Instalar RoundCube
Instale o RoundCube com este comando:
apt-get install roundcube roundcube-core roundcube-mysql roundcube-pluginsO instalador fará as seguintes perguntas:
Configurar banco de dados para roundcube com dbconfig.common? <-- sim
Senha do aplicativo MySQL para roundcube: <-- pressione enter
Senha do usuário administrativo do banco de dados: <-- digite a senha root do MySQL aqui.Em seguida, edite o arquivo de configuração do RoundCube /etc/roundcube/config.inc.php e ajuste algumas configurações:
nano /etc/roundcube/config.inc.phpDefina o default_host como localhost e o smtp_server.
$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 25;O ISPConfig tem alguma configuração no vhost de aplicativos nginx para squirrelmail que funciona para roundcube também. Nós a ativamos com:
ln -s /usr/share/roundcube /usr/share/squirrelmailhttp://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail (depois de instalar o ISPConfig, veja o próximo capítulo)

19 Instalar ISPConfig 3
Antes de iniciar a instalação do ISPConfig, certifique-se de que o Apache esteja parado (se estiver instalado - é possível que alguns dos seus pacotes instalados tenham instalado o Apache como uma dependência sem você saber). Se o Apache2 já estiver instalado no sistema, pare-o agora…
systemctl stop apache2… e remova os links de inicialização do sistema do Apache:
update-rc.d -f apache2 removeCertifique-se de que o nginx esteja em execução:
systemctl start nginx(Se você tiver tanto Apache quanto nginx instalados, o instalador perguntará qual você deseja usar: Apache e nginx detectados. Selecione o servidor a ser usado para o ISPConfig: (apache,nginx) [apache]:
Digite nginx. Se apenas Apache ou nginx estiver instalados, isso é detectado automaticamente pelo instalador, e nenhuma pergunta é feita.)
Para instalar o ISPConfig 3.2 a partir da versão mais recente lançada, faça isso:
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/O próximo passo é executar
php -q install.phpIsso iniciará o instalador do ISPConfig 3. O instalador configurará todos os serviços como Postfix, Nginx, Dovecot, etc. para você.
# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_\/__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Configuração inicialSistema Operacional: Debian 10.0 (Buster) ou compatívelA seguir, haverá algumas perguntas para configuração primária, então tenha cuidado.
Os valores padrão estão entre [colchetes] e podem ser aceitos com .
Digite "quit" (sem as aspas) para parar o instalador.
Selecione o idioma (en,de) [en]: <-- Pressione EnterModo de instalação (padrão, especialista) [padrão]: <-- Pressione EnterNome do host totalmente qualificado (FQDN) do servidor, por exemplo, server1.domain.tld [server1.canomi.com]: <-- Pressione EnterNome do host do servidor MySQL [localhost]: <-- Pressione EnterPorta do servidor MySQL [3306]: <-- Pressione EnterNome de usuário root do MySQL [root]: <-- Pressione EnterSenha root do MySQL []: <-- Digite sua senha root do MySQLBanco de dados MySQL a ser criado [dbispconfig]: <-- Pressione EnterCharset MySQL [utf8]: <-- Pressione EnterApache e nginx detectados. Selecione o servidor a ser usado para o ISPConfig: (apache,nginx) [apache]: <-- nginx
Configurando Postgrey
Configurando Postfix
Gerando uma chave privada RSA de 4096 bits
.......................................................................++
........................................................................................................................................++
escrevendo nova chave privada em 'smtpd.key'
-----
Você está prestes a ser solicitado a inserir informações que serão incorporadas
no seu pedido de certificado.
O que você está prestes a inserir é o que é chamado de Nome Distinto ou DN.
Existem muitos campos, mas você pode deixar alguns em branco
Para alguns campos haverá um valor padrão,
Se você digitar '.', o campo será deixado em branco.
-----
Nome do País (código de 2 letras) [AU]: <-- Digite o código de 2 letras do país
Nome do Estado ou Província (nome completo) [Some-State]: <-- Digite o nome do estado
Nome da Localidade (por exemplo, cidade) []: <-- Digite sua cidade
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <-- Digite o nome da empresa ou pressione enter
Nome da Unidade Organizacional (por exemplo, seção) []: <-- Pressione Enter
Nome Comum (por exemplo, FQDN do servidor ou SEU nome) []: <-- Digite o nome do host do servidor, no meu caso: server1.example.com
Endereço de E-mail []: <-- Pressione Enter
Configurando Mailman
Configurando Dovecot
Configurando Spamassassin
Configurando Amavisd
Configurando Getmail
Configurando BIND
Configurando Jailkit
Configurando Pureftpd
Configurando Nginx
Configurando vlogger
[INFO] serviço Metronome XMPP Server não detectadoConfigurando Firewall UFW
Configurando Fail2ban
[INFO] serviço OpenVZ não detectado
Configurando vhost de aplicativos
Instalando ISPConfig
Porta do ISPConfig [8080]:Senha do administrador [admin]: <-- Digite a senha desejada do usuário administrador do ISPConfig aquiVocê deseja uma conexão segura (SSL) à interface da web do ISPConfig (y,n) [y]: <-- Pressione EnterGerando chave privada RSA, módulo longo de 4096 bits
.......................++
................................................................................................................................++
e é 65537 (0x10001)
Você está prestes a ser solicitado a inserir informações que serão incorporadas
no seu pedido de certificado.
O que você está prestes a inserir é o que é chamado de Nome Distinto ou DN.
Existem muitos campos, mas você pode deixar alguns em branco
Para alguns campos haverá um valor padrão,
Se você digitar '.', o campo será deixado em branco.
-----
Nome do País (código de 2 letras) [AU]: <-- Digite o código de 2 letras do país
Nome do Estado ou Província (nome completo) [Some-State]: <-- Digite o nome do estado
Nome da Localidade (por exemplo, cidade) []: <-- Digite sua cidade
Nome da Organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: <-- Digite o nome da empresa ou pressione enter
Nome da Unidade Organizacional (por exemplo, seção) []: <-- Pressione Enter
Nome Comum (por exemplo, FQDN do servidor ou SEU nome) []: <-- Digite o nome do host do servidor, no meu caso: server1.example.com
Endereço de E-mail []: <-- Pressione EnterPor favor, insira os seguintes atributos 'extras'
que serão enviados com seu pedido de certificado
Uma senha de desafio []: <-- Pressione Enter
Um nome de empresa opcional []: <-- Pressione Enter
escrevendo chave RSA
Configurando DBServer
Instalando crontab do ISPConfig
sem crontab para root
sem crontab para getmail
Detectando endereços IP
Reiniciando serviços ...
Instalação concluída.O instalador configura automaticamente todos os serviços subjacentes, portanto, nenhuma configuração manual é necessária.
Depois você pode acessar o ISPConfig 3 em http(s)://server1.example.com:8080/ ou http(s)://192.168.1.100:8080/ (http ou https depende do que você escolheu durante a instalação). Faça login com o nome de usuário admin e a senha admin (você deve alterar a senha padrão após seu primeiro login):


Finalmente, corrigimos algumas permissões da instalação do RoundCube.
chown root:ispapps /etc/roundcube/debian-db.php
chmod 640 /etc/roundcube/debian-db.php
chown root:ispapps /etc/roundcube/config.inc.php
chmod 640 /etc/roundcube/config.inc.php
chown -R ispapps:adm /var/log/roundcube
chmod -R 750 /var/log/roundcube
chown -R ispapps:ispapps /var/lib/roundcube/temp
chmod -R 750 /var/lib/roundcube/tempO sistema agora está pronto para ser usado.
Existem alguns plugins para integrar o RoundCube Webmail com o ISPConfig, dê uma olhada aqui para as instruções de instalação do plugin ISPConfig RoundCube.
20.1 Manual do ISPConfig 3
Para aprender como usar o ISPConfig 3, recomendo fortemente baixar o Manual do ISPConfig 3.
Em mais de 300 páginas, ele cobre o conceito por trás do ISPConfig (administrador, revendedores, clientes), explica como instalar e atualizar o ISPConfig 3, inclui uma referência para todos os formulários e campos de formulário no ISPConfig juntamente com exemplos de entradas válidas, e fornece tutoriais para as tarefas mais comuns no ISPConfig 3. Ele também descreve como tornar seu servidor mais seguro e vem com uma seção de solução de problemas no final.
21 Download da imagem da máquina virtual deste tutorial
Este tutorial está disponível como uma imagem de máquina virtual pronta para uso no formato ovf/ova que é compatível com VMWare e Virtualbox. A imagem da máquina virtual usa os seguintes detalhes de login:
Login SSH / Shell
Nome de usuário: administrator
Senha: howtoforge
Nome de usuário: root
Senha: howtoforge
Login do ISPConfig
Nome de usuário: admin
Senha: howtoforge
Login do MySQL
Nome de usuário: root
Senha: howtoforge
O IP da VM é 192.168.0.100, pode ser alterado no arquivo /etc/network/interfaces. Por favor, altere todas as senhas acima para proteger a máquina virtual.
22 Links
- Debian: http://www.debian.org/
- ISPConfig: http://www.ispconfig.org/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.