VirtualBox 5.2.10

Vou atualizar o VirtualBox nos dois hosts de máquinas virtuais. Eis os comandos:

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.2.10-122088-Linux_amd64.run
./VirtualBox-5.2.10-122088-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.10.vbox-extpack
cd /root
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Postfix e outras atualizações

Como ainda não tive tempo de estudar a configuração completa do postfix, neste momento mantenho o sendmail, assim como a versão antiga do imapd, ao invés do dovecot.

Assim, no principal servidor de email, não instalo os pacotes postfix, nem dovecot. E não desinstalo o imapd, nem o sendmail. Se por acaso algo falhar numa atualização, removo os dois primeiros e uso as últimas versões do sendmail e do imapd:

removepkg postfix-3.3.0-x86_64-3.txz
removepkg dovecot-2.3.1-x86_64-3.txz

installpkg sendmail-8.15.2-x86_64-2.txz
installpkg sendmail-cf-8.15.2-noarch-2.txz
installpkg imapd-2.20-x86_64-2.txz

Noutra máquina, tenho uma aplicação Web que recebe um ficheiro cifrado com uma função que o PHP descartou a partir da versão 7.1.0. Assim, nessa máquina, não devo atualizar o PHP, enquanto não arranjar solução alternativa. Caso me esqueça, aqui fica a solução para reverter a versão:

removepkg php-7.2.4-x86_64-2.txz
installpkg php-5.6.23-x86_64-1.txz
cp /tmp/mod_php.conf.example /etc/httpd/mod_php.conf

Costumo guardar os ficheiros das versões antigas na pasta /tmp.

Configurar o Postfix

O Slackware passou a usar o Postfix, em vez do Sendmail como ferramenta de MTA. Eu já tinha uma série de configurações complexas dos meus servidores com o Sendmail e deixei de conseguir enviar emails de todos eles. Todos eles faziam Relay através de um servidor já aceite pelos grandes serviços de email da rede, nomeadamente pelo hotmail da Microsoft, com quem tive que assinar um acordo de não Spam.

Agora com o Postfix, tenho que reconfigurar tudo de novo. Para já fica aqui registado o processo que usei para conseguir enviar emails para fora.

No ficheiro /etc/postfix/main.cf adicionei as linhas seguintes, no fim do ficheiro:

mynetworks = 127.0.0.0/8 192.168.0.0/16
smtp_generic_maps = hash:/etc/postfix/generic
smtpd_client_restrictions = permit_mynetworks, reject

No ficheiro /etc/postfix/generic adicionei a linha seguinte, no fim do ficheiro:

@localhost eu@meuservidor.pt
maria@localhost maria@meuservidor.pt

Depois, foi necessário criar o ficheiro /etc/postfix/generic.db pois comecei a receber o erro abaixo, quando lançava o servidor Postfix:

Postfix: error: open database /etc/postfix/generic.db: No such file or directory

Para criar o ficheiro /etc/postfix/generic.db usei a linha de comando seguinte:

postmap /etc/postfix/generic

Por fim, relancei o Postfix:

postfix stop
postfix start

Ainda faltam muitas configurações, nomeadamente, os ACCEPT e REJECT do ficheiro access.db do Sendmail, assim como o reencaminhamento de outros servidores para o servidor principal. Mas isso fica para uma próxima crónica.

PHP 7

A versão current do Slackware passou a usar o PHP7. Depois de fazer a atualização para o PHP7, passei a receber a mensagem seguinte, sempre que arrancava com o Apache:

httpd: Syntax error on line 654 of /etc/httpd/httpd.conf: Syntax error on line 6 of /etc/httpdmod_php.conf: Cannot load lib64/httpd/modules/libphp5.so into server: /usr/lib64/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory

Enviei uma mensagem ao Patrick e ele respondeu o seguinte:

The new file won't copy over your old one.
Try: mv /etc/httpd/mod_php.conf.example /etc/httpd/mod_php.conf
Take care,
Pat

e acrescentou

I will add better handling of this file in the next build.
Thanks,
Pat

dovecot

O Slackware está a usar um novo servidor de IMAP/POP. À conta disto, fiquei sem email durante 3 dias. Não consegui logo configurá-lo e tive que voltar ao anterior. Desistalei o dovecot, fui buscar o pacote do Slackware 14.2, imapd-2.20-x86_64-2.txz, e instalei-o de novo. Mas continuei com alguns problemas. Neste momento não consigo enviar emails, apenas receber.

Decidi, então, tentar configurar o dovecot. Na pasta /etc/dovecot há um ficheiro README que diz que é necessário criar um certificado SSL/TLS e que há um script para criar um certificado autogerado.

O script está na pasta /usr/doc/dovecot-2.* (o * é a versão) e chama-se mkcert.sh.

Mas antes, é necessário configurar o ficheiro dovecot-openssl.cnf que está na mesma pasta. É um ficheiro com os dados para o certificado: nome e morada da empresa, endereço do sítio, etc.

O script mkcert.sh cria o certificado e coloca-o no local seguinte: /etc/ssl/private/dovecot.pem.

É, também, conveniente editar o ficheiro /etc/dovecot/conf.d/10-auth.conf e descomentar a linha:
#disable_plaintext_auth = yes

Por fim, é necessário indicar, no ficheiro /etc/dovecot/dovecot.conf, quais os protocolos a usar:
protocols = imap

Para lançar o dovecot, executar /etc/rc.d/rc.dovecot start.

Mailbox cheia

Comecei a receber umas mensagens do tipo:

Cannot Update Mailbox /var/mail/root For User Root. Error Writing Message: File Too Large

Encontrei a solução aqui.

Se executar postconf -n verifico que não está definido um limite para a caixa, o que faz assumir o limite por omissão de 51200000 bytes ou aproximadamente 50MB. Para aumentar para 500MB, usei:

postconf -e mailbox_size_limit=512000000

Kernel 4.14.2 e VirtualBox 5.2.2

Estou a atualizar as máquinas para o Kernel 4.14.2 do Linux. Vou também atualizar o VirtualBox nos dois hosts de máquinas virtuais. Eis os comandos:

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.2.2-119230-Linux_amd64.run
./VirtualBox-5.2.2-119230-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.2-119230.vbox-extpack
cd /root
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.14.2 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot

Módulos do PERL

Nas últimas atualizações do kernel do Linux, o meu sistema de alertas deixou de perceber qual o último kernel instalado.

Na máquina que faz o gateway para a DMZ, tenho um script em PERL que acede a uma BD para atualizar os números das versões dos vários pacotes de software instalados, incluindo o kernel. Nenhum deles estava a ser atualizado.

Esse script corre, normalmente, a partir do crontab, de foram automática. Corri esse script manualmente e recebi uma mensagem que dizia haver um conflito entre o PERL e um módulo. Só estava a usar o DBI, para acesso a uma BD, por isso atualizei-o da seguinte forma:

# cpan
cpan> upgrade DBI

Kernel 4.9.38 e VirtualBox 5.1.26

Estou a atualizar as máquinas para o Kernel 4.9.38 do Linux. Vou também atualizar o VirtualBox nos dois hosts de máquinas virtuais. Eis os comandos:

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.1.26-117224-Linux_amd64.run
./VirtualBox-5.1.26-117224-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.26-117224.vbox-extpack
cd -
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.9.38 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot

Kernel 4.9.31 e manter o VirtualBox 5.1.12

Estou a atualizar as máquinas para o Kernel 4.9.31 do Linux. Eis os comandos:

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.1.12-112440-Linux_amd64.run
./VirtualBox-5.1.12-112440-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.12-112440.vbox-extpack
cd -
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.9.31 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot