Servidor Perfeito · 9 min read · Feb 09, 2026

O Servidor Perfeito - Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot e ISPConfig 3) - Página 4

12 Instalar Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils

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

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

Você será solicitado a responder às seguintes perguntas:

Nova senha para o usuário “root” do MySQL: <– sua senha de root sql Repetir senha para o usuário “root” do MySQL: <– sua senha de root sql Tipo geral de configuração de e-mail: <– Site da Internet Nome do sistema de e-mail: <– server1.example.com Criar um certificado SSL autoassinado?: <– Sim

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

vi /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 [...] |

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/my.cnf e comentamos a linha bind-address = 127.0.0.1:

vi /etc/mysql/my.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 [...] |

Em seguida, reiniciamos o MySQL:

service mysql restart

Agora verifique se a rede está habilitada. Execute

netstat -tap | grep mysql

A saída deve ser parecida com isso:

root@server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN      17300/mysqld  
root@server1:~#

13 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

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

service spamassassin stop  
update-rc.d -f spamassassin remove

14 Instalar Nginx, PHP5 (PHP-FPM) e Fcgiwrap

O Nginx está disponível como um pacote para Ubuntu que podemos instalar da seguinte forma:

apt-get install nginx

Se o Apache2 já estiver instalado no sistema, pare-o agora…

service apache2 stop

… e remova os links de inicialização do sistema do Apache:

update-rc.d -f apache2 remove

Inicie o nginx depois:

service nginx start

(Se tanto o Apache2 quanto o nginx estiverem instalados, o instalador do ISPConfig 3 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 PHP5 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 php5-fpm

O PHP-FPM é um processo daemon (com o comando de início service php5-fpm start) que executa um servidor FastCGI no socket /var/run/php5-fpm.sock.

Para obter suporte ao MySQL no PHP, podemos instalar o pacote php5-mysql. É uma boa ideia instalar alguns outros módulos do PHP5 também, pois você pode precisar deles para suas aplicações. Você pode procurar por módulos PHP5 disponíveis assim:

apt-cache search php5

Escolha os que você precisa e instale-os assim:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl snmp

O módulo mcrypt do PHP5 deve ser habilitado manualmente:

php5enmod mcrypt

APC é um cache de opcode PHP gratuito e de código aberto para armazenar em cache e otimizar o código intermediário do PHP. É semelhante a outros caches de opcode PHP, como eAccelerator e XCache. É fortemente recomendado ter um desses instalados para acelerar sua página PHP.

O APC pode ser instalado da seguinte forma:

apt-get install php-apc

Em seguida, abra /etc/php5/fpm/php.ini…

vi /etc/php5/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 seus subdiretórios.)

Agora recarregue o PHP-FPM:

service php5-fpm reload

Para obter suporte a CGI no nginx, instalamos o Fcgiwrap.

O 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 fcgiwrap

Apó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 service fcgiwrap para iniciá-lo.

É isso! Agora, quando você criar um vhost nginx, o ISPConfig cuidará da configuração correta do vhost.

14.1 Versões Adicionais do PHP

A partir do ISPConfig 3.0.5, é possível ter várias versões do PHP em um servidor (selecionáveis através do ISPConfig) que podem ser executadas através do PHP-FPM. Para aprender como construir versões adicionais do PHP (PHP-FPM) e como configurar o ISPConfig, consulte este tutorial: Como Usar Múltiplas Versões do PHP (PHP-FPM & FastCGI) Com ISPConfig 3 (Ubuntu 12.10) (funciona para Ubuntu 14.04 também).

14.2 Instalar phpMyAdmin

Instale o phpMyAdmin da seguinte forma:

apt-get install phpmyadmin

Você verá as seguintes perguntas:

Servidor web para reconfigurar automaticamente: <– selecione nenhum (porque apenas apache2 e lighttpd estão disponíveis como opções) Configurar banco de dados para phpmyadmin com dbconfig-common? <– Não

Agora você pode encontrar o phpMyAdmin no diretório /usr/share/phpmyadmin/.

Depois de instalar o ISPConfig 3, 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 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 aba Opções do site no ISPConfig:

| 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/php5-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/php5-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, precisa adicionar a seguinte seção à seção http {} em /etc/nginx/nginx.conf (antes de qualquer linha de inclusão) que determina se o visitante usa http ou https e define a variável $fastcgi_https (que usaremos em nossa configuração do phpMyAdmin) de acordo:

vi /etc/nginx/nginx.conf

| [...] http { [...] ## Detectar quando HTTPS é usado map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

Não se esqueça de recarregar o nginx depois:

service nginx reload

Em seguida, vá novamente para o campo Diretivas do nginx, e em vez de fastcgi_param HTTPS on; você adiciona a linha fastcgi_param HTTPS $fastcgi_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/php5-fpm.sock; fastcgi_param HTTPS $fastcgi_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; } |

15 Instalar Mailman

Desde a versão 3.0.4, o ISPConfig também 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 mailman

Selecione pelo menos um idioma, por exemplo:

Idiomas a suportar: <– en (Inglês) Lista de sites ausentes <– Ok

Antes que possamos iniciar o Mailman, uma primeira lista de discussão chamada mailman deve ser criada:

newlist mailman

root@server1:~# newlist mailman
Digite o e-mail da pessoa que está gerenciando 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 finalizar a criação da 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…

vi /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

newaliases

depois e reinicie o Postfix:

service postfix restart

Em seguida, inicie o daemon do Mailman:

service mailman start

Depois de 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/ ou http://server1.example.com:8081/cgi-bin/mailman/listinfo/ para acessar o Mailman.

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 aba 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:///cgi-bin/mailman/admin/, e a página da web para usuários de uma lista de discussão pode ser encontrada em http:///cgi-bin/mailman/listinfo/.

Em http:///pipermail você pode encontrar os arquivos da lista de discussão.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.