anúncios

sábado, 8 de setembro de 2018

Configurando Webmail RainLoop

O que é RainLoop Webmail?

RainLoop Webmail é um moderno cliente de e-mail que pode instalar em um servidor próprio e permite adicionar os domínios permitidos na respectiva conta do e-mail correspondente.
Possui suporte aos protocolos IMAP e SMTP, incluindo SSL e STARTTLS.
Integração com Facebook, Google, Twitter e Dropbox.

Requerimentos:
Servidores de aplicação web: Apache, Nginx, Lighttp e qualquer outro que tenha suporte a linguagem PHP com a versão mínima 5.4.
PHP extensions: cURL, iconv, json, libxml, dom, openssl, DateTime, PCRE, SPL
Browser: Google Chrome, Firefox, Opera 10+, Safari 3+, Internet Explorer 11 or EDGE RainLoop Webmail foi projetado com o uso eficiente de memória em mente, para que ele funcione bem em servidores web de baixo custo.

Depois de conhecer o RainLoop Webmail e pra que ser serve, podemos seguir os procedimentos de instalação e configuração do RainLoop Webmail em seu servidor GNU/Linux Debian/CentOS/Ubuntu Server.

Procedimentos de instalação e configuração
Considerando que já tenha o Apache+PHP com as extensões do PHP instalados, caso ainda não tenha, segue o howto de instalação do ambiente PHP 7 no Linux
Caso já tenha o ambiente PHP 7 no Debian, então segue os procedimentos abaixo
$ wget -c "https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip"
# mkdir /var/www/html/rainloop
# unzip rainloop-community-latest.zip -d /var/www/html/rainloop
# chown -R www-data:www-data /var/www/html/rainloop

Permissões no /var/www/html/rainloop
# cd /var/www/html/rainloop
# find . -type d -exec chmod 755 {} \;
# find . -type f -exec chmod 644 {} \;


VirtualHost no Apache para o RainLoop Webmail
# vim /etc/apache/sites-available/rainloop.conf
< VirtualHost *:80 >
    ServerAdmin root.saitam@saitam.int
    ServerName webmail.saitam.int
    DocumentRoot "/var/www/html/rainloop"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    < Directory "/var/www/html/rainloop" >
 DirectoryIndex index.php index.html index.htm
 AllowOverride All
 Order allow,deny
 Allow from all
    < /Directory >
< /VirtualHost >
ESC +:wq (salva e sai do editor Vim)
Ativar Vhost RainLoop Webmail
#a2ensite rainloop.conf
Reload do Apache
#systemctl reload apache2

Caso estiver configurando o RainLoop Webmail em um servidor na intranet, então para ser acessível nas máquinas de sua rede deve adicionar o IP do servidor RainLoop Webmail no arquivo hosts com o mesmo nome definido no ServerName.

No Windows o arquivo host o caminho é: C:\Windows\System32\drivers\etc\hosts
Abrir com Bloco de Notas como Administrador o arquivo hosts no caminho mencionado.

No GNU/Linux o caminho do arquivo hosts é: /etc/hosts

O conteúdo do arquivo hosts deve ter a seguinte linha
x.y.z.w webmail.dominio.int
Trocar x.y.z.w pelo respectivo endereço IP do servidor RainLoop Webmail e o webmail.dominio.int pelo mesmo nome definido no ServerName do Vhost.

Acesso ao RainLoop Webmail
Painel de administração do RainLoop Webmail, onde adiciona os domínios do servidor de e-mail e as configurações dos protocolos IMAP e SMTP, incluindo SSL e STARTTLS.
No browser é: http://webmail.dominio.int/?admin OU https://webmail.dominio.com.br/?admin
Por default, o usuário e password administrativo é admin/12345. Obviamente trocar o usuário/password default pelo de sua preferência.

Após adicionar os domínios e configurar os protocolos IMAP e SMTP do servidor de e-mail, pode acessar no browser acesse: http://webmail.dominio.int OU https://webmail.dominio.com.br

Feito!

terça-feira, 21 de agosto de 2018

7 anos de blog

O blog esta completando hoje, 21 de Agosto de 2018, 7 anos!

Gostaria de agradecer a todos pelo prestígio e a paciência de ler os posts que são publicados. Espero continuar compartilhando conhecimentos no blog para nossos leitores. Continuem prestigiando e divulgando o blog Mundo da Computação Integral, assim aumentamos nossa comunidade.

domingo, 13 de maio de 2018

Upgrade PHP 5.6/7.0 para 7.2 no Debian

De acordo com a postagem no Twitter sobre a recomendação de atualizar a versão do PHP para versão atual. Até a data de publicação deste post, a versão atual do PHP é 7.2.

"#PHP 5.6 is now in security fix only mode, which runs until the end of 2018. Plan your upgrades to PHP 7!"
https://twitter.com/official_php

Então, chega de conversa e vamos seguir os procedimentos seguintes para atualizar a versão do PHP no Debian.

# apt-get install apt-transport-https lsb-release ca-certificates
# wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
# apt-get update
# apt-get install php7.2-cli php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml php7.2-fpm libapache2-mod-php7.2
Teste a versão do PHP com o comando seguinte: php --version
Se o retorno for 7.2, então está OK, pode desabilitar o módulo da versão anterior do PHP.
# a2dismod php5.6 ou
# a2dismod php7.0
# a2enmod php7.2
# service apache2 restart
# apt-get purge php5.6* ou
# apt-get purge php7.0*

Referência
https://tecadmin.net/install-php-debian-9-stretch/
Feito!

sábado, 10 de março de 2018

Configurando um servidor DNS no Debian

O que é DNS e pra que serve?

O Domain Name System (DNS) é um sistema de gerenciamento de nomes hierárquico e distribuído para computadores, serviços ou qualquer recurso conectado à Internet ou numa rede privada.

O DNS apresenta uma arquitetura cliente/servidor, podendo envolver vários servidores DNS na resposta a uma consulta. A função do servidor DNS é resolver nomes para os endereços IP e de endereços IP para nomes respectivos, e permitindo a localização de hosts no determinado domínio.

O software mais utilizado para configurar servidor DNS no GNU/Linux e FreeBSD é o BIND. Este software geralmente se encontra localizado no servidor DNS primário. O servidor DNS secundário é uma espécie de cópia de segurança do servidor DNS primário.

Depois de conhecer o DNS e para que serve, pode-se seguir o howto seguinte para configurar o servidor DNS na sua rede, apenas adapte o endereço IP e o nome de domínio.

Observação 1: Para uso de servidor DNS na rede interna é comum usar o sufixo .int para representar interno e não confundir com um domínio externo. Já se for configurar o servidor DNS na rede externa disponível na Internet, usa normal, só antes deve registrar o domínio no https://registro.br

Observação 2: O presente howto foi configurado e testado na distribuição Linux Debian 9, mas pode ser configurado na distro Ubuntu também.

Ok. Vamos nessa então? Abre o terminal, logue como root e segue os procedimentos seguintes.

# apt-get update
# apt-get install bind9 dnsutils whois
Observação: Este howto será utilizado o editor de texto Vim, mas o leitor pode usar outro editor que achar melhor.
Para novatos no editor Vim, para salvar e sair é ESC + :x

Configurando endereço IP fixo
# vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.1.6
netmask 255.255.255.0
gateway 192.168.1.1
# This is an autoconfigured IPv6 interface
iface enp0s3 inet6 auto
Alterar os arquivos hosts e hostname respectivamente
# vim /etc/hosts
Adicione a linha
127.0.0.1       localhost
127.0.1.1       perolanegra
192.168.1.6     perolanegra.saitam.int perolanegra
192.168.1.6     saitam.int
192.168.1.6     app.saitam.int
192.168.1.6     adm.saitam.int
192.168.1.6     carreiras.saitam.int

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# vim /etc/hostname
perolanegra.saitam.int
Acessar até o diretório onde estão os arquivos do Bind
# cd /etc/bind
Criar as zona direta e reversa no arquivo named.conf.local
# vim named.conf.local
//Zona direta
zone "saitam.int" { //nome de domínio
  type master;
  file "/etc/bind/db.saitam"; //nome do arquivo que contém os endereços DNS
};

//Zona reversa
zone "1.168.192.in-addr.arpa" { //último quarteto do IP
  type master;
  file "/etc/bind/db.192";
};
Verificar se o arquivo de configuração contém erros
# named-checkconf
Criar os arquivos da zona direta e reversa
Zona direta
# vim db.saitam
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     perolanegra.saitam.int root.saitam.int (
                         2018031000     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@               IN      NS      perolanegra.
@               IN      A       192.168.1.6
@               IN      AAAA    ::1
router          IN      A       192.168.1.1
gateway         CNAME   router
app             IN      A       192.168.1.6
adm             IN      A       192.168.1.6
carreiras       IN      A       192.168.1.6
www             CNAME   saitam.int

Zona reversa
# vim db.192
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     perolanegra.saitam.int root.saitam.int. (
                         2018031000     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      perolanegra.saitam.int.
6       IN      PTR     perolanegra.saitam.int.
6       IN      PTR     saitam.int.
1       IN      PTR     router.saitam.int.
6       IN      PTR     app.saitam.int.
6       IN      PTR     adm.saitam.int.
6       IN      PTR     carreiras.saitam.int.

Verificar se o arquivo de zona direta e reversa contém erros
# named-checkzone saitam.int /etc/bind/db.saitam.int
zone saitam.int/IN: loaded serial 2018031000
OK
# named-checkzone 1.168.192.in-addr /etc/bind/db.192
zone 1.168.192.in-addr/IN: loaded serial 2018031000
OK

Caso tenha ocorrido algum erro nos testes acima no seu servidor DNS, revise os arquivos de configuração com atenção, pois um ";" pode fazer a diferença na configuração do Bind.

Reiniciar o serviço Bind9
# /etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.

Para podermos usar o domínio configurado deve adicionar no arquivo /etc/resolv.conf Nas máquinas clientes deve trocar o IP do servidor DNS que utiliza pelo o IP da máquina que configurou o servidor DNS para poder resolver nomes usando o servidor DNS configurado.

# vim /etc/resolv.conf
domain saitam.int
search saitam.int
nameserver 192.168.1.6
Agora vamos verificar a resolução de nomes
# nslookup saitam.int
Server: 192.168.1.6
Address: 192.168.1.6#53

Name: saitam.int
Address: 192.168.1.6
# nslookup router
Server:         192.168.1.6
Address:        192.168.1.6#53

Name:   router.saitam.int
Address: 192.168.1.1
# nslookup 192.168.1.6
Server:         192.168.1.6
Address:        192.168.1.6#53

6.1.168.192.in-addr.arpa        name = carreiras.saitam.int.
6.1.168.192.in-addr.arpa        name = saitam.int.
6.1.168.192.in-addr.arpa        name = app.saitam.int.
6.1.168.192.in-addr.arpa        name = adm.saitam.int.
6.1.168.192.in-addr.arpa        name = perolanegra.saitam.int.
Referências
[1] https://pt.wikipedia.org/wiki/Domain_Name_System
[2] http://tldp.org/HOWTO/DNS-HOWTO-5.html
[3] https://www.isc.org/downloads/bind/

Feito!

sábado, 10 de fevereiro de 2018

Instalando o módulo SSH2 no PHP

O objetivo deste post, é instalar e habilitar o módulo SSH2 no PHP. Com isso pode implementar um script PHP que conecta em alguma máquina ou servidor com Linux via SSH e executar comandos.

No final do post, tem um exemplo de script PHP que mostra como fazer.

No Windows com Xampp
Acesse http://windows.php.net/downloads/pecl/releases/ssh2/1.1.2/
Faça o download do arquivo php_ssh2-1.1.2-7.1-ts-vc14-x86.zip ou php_ssh2-1.1.2-7.1-ts-vc14-x64.zip, extrair e copiar os arquivos php_ssh2.dll e php_ssh2.pdb para c:/xampp/php/ext
Adicionar extension=php_ssh2 no php.ini
Reiniciar o Apache, no Xampp abre o Shell, digite php -m, verifique se tem o módulo ssh2

No Linux (Debian/Ubuntu)
PHP 5: # apt-get install php5-ssh2
PHP 7.0: # apt-get install php7.0-ssh2

Exemplo
Script PHP que conecta no servidor via SSH e cria um diretório abc na máquina Linux remota.
< ?php
$IP = '';
$POST = ;
$USER = '';
$PASS = '';
$connection = ssh2_connect($IP, $PORT);

if (ssh2_auth_password($connection, $USER, $PASS)) {
echo "Autenticado!\n";
$shell = ssh2_exec($connection, "mkdir abc");
}
else {
  die('Autenticação falhou!');
}
Feito!

quarta-feira, 27 de dezembro de 2017

Instalando e Configurando o phpPgAdmin no Debian

O presente post, tem como objetivo explicar a instalação e configuração do phpPgAdmin no GNU/Linux Debian 7.
phpPgAdmin é uma ferramenta web de gerenciamento do SGBD PostgreSQL.

No Debian 8 precisa adicionar o pacote do PHP 7 no arquivo /etc/apt/sources.list
# echo -e "deb http://packages.dotdeb.org jessie all\n deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list

Download da chave do pacote
# wget https://www.dotdeb.org/dotdeb.gpg
Adiciona a chave
# apt-key add dotdeb.gpg
Atualização do repositório
# apt-get update
Instalação do Apache2, módulos do PHP 7 e postgresql
PS: O "x" corresponde o release da versão PHP, troque pelo release corrente.
# apt-get install apache2 php7.x libapache2-mod-php7.x php7.x-fpm php7.x-pgsql php7.x-gd php7.x-mcrypt php7.x-mbstring php7.x-gettext php7.x-gd php7.x-json php-gettext php7.x-readline postgresql-9.4 postgresql-client-9.4
Instalação do phppgadmin
# apt-get install phppgadmin

Ao acessar no navegador http://IPSERVIDOR/phppgadmin ocorreu erro HTTP ERROR 500, verifiquei o log de erros /var/log/apache/error.log sobre o erro.

Solução:
Editar o arquivo /etc/phppgadmin/apache2.conf na linha 9
< IfModule mod_php5.c > trocar por < IfModule mod_php7.x.c >
Reinicia o Apache: # /etc/init.d/apache2 restart
Após fazer isso, deve acessar normal no navegador http://IPSERVIDOR/phppgadmin

Algumas recomendações caso o acesso do phpPgAdmin seja externo
  • Jamais o usuário root do PostgreSQL deve ter acesso direto pelo phpPgAdmin;
  • Criar um usuário para o sistema com as permissões: select, insert, update, delete já são suficiente;
  • Criar um usuário para o migrations com as permissões: create, alter, drop, insert, update, delete, select, lock tables, trigger, view, event.
O usuário migrations é o responsável por criar a estrutura das tabelas (migrate), popular (seed) e fazer o dump por meio do script shell agendado no crontab.

Feito!

quinta-feira, 21 de dezembro de 2017

Instalando e Configurando o PHPMyAdmin no Debian

O presente post, tem como objetivo explicar a instalação e configuração do PHPMyAdmin no GNU/Linux Debian 7.
PHPMyAdmin é uma ferramenta web de gerenciamento do SGBD MySQL/MariaDB.

No Debian 8 precisa adicionar o pacote do PHP 7 no arquivo /etc/apt/sources.list
# echo -e "deb http://packages.dotdeb.org jessie all\n deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list

Download da chave do pacote
# wget https://www.dotdeb.org/dotdeb.gpg
Adiciona a chave
# apt-key add dotdeb.gpg
Atualização do repositório
# apt-get update
Instalação do Apache2, módulos do PHP 7 e mysql-server
# apt-get install apache2 php7.0 libapache2-mod-php7.0 php7.0-fpm php7.0-mysql php7.0-gd php7.0-mysql php7.0-mcrypt php7.0-mbstring php7.0-gettext php7.0-gd php7.0-json php-gettext php7.0-readline mysql-server
Instalação do phpmyadmin
# apt-get install phpmyadmin

Ao acessar no navegador http://IPSERVIDOR/phpmyadmin ocorreu erro HTTP ERROR 500, verifiquei o log de erros /var/log/apache/error.log sobre o erro.

Solução:
Editar o arquivo /etc/phpmyadmin/apache2.conf na linha 9
trocar por
Reinicia o Apache: # /etc/init.d/apache2 restart
Após fazer isso, deve acessar normal no navegador http://IPSERVIDOR/phpmyadmin

Algumas recomendações caso o acesso do PHPMyAdmin seja externo
  • Jamais o usuário root do MySQL/MariaDB deve ter acesso direto pelo PHPMyAdmin;
  • Criar um usuário para o sistema com as permissões: select, insert, update, delete já são suficiente;
  • Criar um usuário para o migrations com as permissões: create, alter, drop, insert, update, delete, select, lock tables, trigger, view, event.
O usuário migrations é o responsável por criar a estrutura das tabelas (migrate), popular (seed) e fazer o dump por meio do script shell agendado no crontab.

Confira no post a criação e as permissões de usuário no SGBD MySQL/MariaDB

Feito!