Categoria: Linux

Migração de mensagens imap

Pesquisando pela Internet, descobri que existe uma maneira muito legal de migração de mensagens entre contas IMAP. De um servidor para outro por exemplo.

Nessas horas é bem comum administradores de rede usarem um cliente de email qualquer como um Thunderbird, Evolution ou o próprio Outlook, e cadastrar a conta antiga e a nova.

Uma vez cadastradas, basta copiar as mensagens e pastas da conta antiga para uma pasta local, e logo em seguida copiar da pasta local para a conta nova.

O problema é que muitas vezes os clientes de email e/ou ambos os servidores são falhos nessa tarefa. Não sincronizam direito. As vezes simplesmente param. Não geram mensagem de erro. Não dizem quais mensagens copiaram com sucesso, e não alertam em qual mensagem parou.

Então, descontente com esta situação, encontrei o imapsync.

É desenvolvido em Perl por Gilles Lamiral, um francês que comercializa este software por 50 euros, mas que também disponibiliza o código opensource para implementação no github. Para instalar em Ubuntu-based é fácil:

[root@localhost]# apt-get install \
libauthen-ntlm-perl \
libcrypt-ssleay-perl \
libdigest-hmac-perl \
libfile-copy-recursive-perl \
libio-compress-perl \
libio-socket-inet6-perl \
libio-socket-ssl-perl \
libio-tee-perl \
libmodule-scandeps-perl \
libnet-ssleay-perl      \
libpar-packer-perl \
libterm-readkey-perl \
libtest-pod-perl \
libtest-simple-perl     \
libunicode-string-perl \
liburi-perl \
cpanminus

Agora, insale manualmente o módulo do Perl Mail::IMAPClient:

  [root@localhost]# cpanm Data::Uniqid Mail::IMAPClient

Faça o download do repositório:

 [user@localhost]$ git clone https://github.com/gilleslamiral/imapsync.git

Dentro da pasta do repositório:

 [user@localhost]$ ./imapsync –host1 imap.server1.com.br –user1 username@dominio.com.br –password1 senha_da_conta_antiga –host2 imap.server2.com.br –user2 username@dominio.com.br –password2 senha_da_conta2

E se por acaso tiver SSL em alguma das contas, é só usar parâmetro:  –ssl1 –port1 993 ou –ssl2 –port2 993

Ao final da execução, o legal é que ele mostra as estatísticas confiáveis:

++++ Calculating sizes on Host2
Host2 folder [Archive]                           does not exist yet
Host2 folder [Drafts]                            Size:         0 Messages:     0 Biggest:         0
Host2 folder [INBOX]                             Size: 232358928 Messages:  3799 Biggest:   5536365
Host2 folder [Junk]                              does not exist yet
Host2 folder [Sent]                              Size:  35289450 Messages:    48 Biggest:  11040301
Host2 folder [Trash]                             Size:         0 Messages:     0 Biggest:         0
Host2 Nb messages:            3847 messages
Host2 Total size:        267648378 bytes (255.25 MiB)
Host2 Biggest message:    11040301 bytes (10.53 MiB)
Host2 Time spent:             20.4 seconds
++++ Statistics
Transfer started on               : Wed Jan 27 18:55:17 2016
Transfer ended on                 : Wed Jan 27 19:46:45 2016
Transfer time                     : 3087.7 sec
Messages transferred              : 1336
Messages skipped                  : 1485
Messages found duplicate on host1 : 0
Messages found duplicate on host2 : 671
Messages void (noheader) on host1 : 0
Messages void (noheader) on host2 : 0
Messages deleted on host1         : 0
Messages deleted on host2         : 0
Total bytes transferred           : 67540850 (64.41 MiB)
Total bytes duplicate host1       : 0 (0.00 KiB)
Total bytes duplicate host2       : 54656054 (52.12 MiB)
Total bytes skipped               : 100381257 (95.73 MiB)
Total bytes error                 : 0 (0.00 KiB)
Message rate                      : 0.4 messages/s
Average bandwidth rate            : 21.4 KiB/s
Reconnections to host1            : 0
Reconnections to host2            : 0
Memory consumption                : 133.2 MiB
Biggest message                   : 5536303 bytes
Initial difference host2 – host1  : -311 messages, 32149440 bytes (30.66 MiB)
Final   difference host2 – host1  : 1026 messages, 99726271 bytes (95.11 MiB)
Detected 0 errors

New imapsync release 1.678 available
Homepage: http://imapsync.lamiral.info/

Referências:

http://imapsync.lamiral.info/INSTALL.d/INSTALL.Ubuntu.txt
https://github.com/gilleslamiral/imapsync

bash: acessar display do X com outro usuário

Quem usa linux dificilmente larga o famoso prompt de comando.
Isso se deve ao grande poder e à conhecida versatilidade do BASH.

Entretando, existem sempre algumas dificuldades que a grande maioria passa.
Neste POST está mais uma dessas, bem como a solução.

Talvez você precise executar um programa no modo gráfico, mas com sua inicialização partindo dum comando.
Isso talvez aconteça pois você quer visualizar os erros/outputs deste programa em específico.

Pra isso, simplesmente você faz:

hudson@vostrolab ~/ $ programa

Mas talvez a idéia seja simplesmente executar um programa com outro usuário. Então você pensa:

hudson@vostrolab ~/ $ su – usuario -c “xlogo”

E aí você obtém:

Password:
No protocol specified
Error: Can’t open display: :0

Isso acontece pois as chaves usadas para autenticar sua sessão do X (modo gráfico) não são mais válidas a partir do momento em que você troca de usuário.
Tal medida de segurança parece exagero, mas é uma herança de quando as sessões X eram muito usadas em rede.

Pra resolver essa, basta liberar sua sessão X para autenticar outros usuários, usando o comando xhost.
Isso deve ser feito antes de trocar de usuário.

hudson@vostrolab ~/ $ xhost +local:local
non-network local connections being added to access control list
hudson@vostrolab ~/ $ su – usuario -c “xlogo”
Password:
hudson@vostrolab ~/ $

xlogo foi usado como exemplo de aplicação, pois abre uma simples ‘janela’ na tela.
Nesse ponto da execução, você deve ver sua aplicação normalmente, seja um mozilla ou um thunderbird =).

Não esqueça de desfazer a autorização com o ‘menos’ ao invés do ‘mais’:

hudson@vostrolab ~/ $ xhost -local:local
non-network local connections being removed from access control list

Referências: http://www.tuxradar.com/content/command-line-tricks-smart-geeks

nginx Error: 413 Request Entity Too Large

Ao instalar um WordPress, um dos problemas que talvez enfrente seja: Erro: 413 Request Entity Too Large
Costuma aparecer ao fazer upload de um plugin, tema, mídia ou arquivo qualquer para seu wordpress. Indica que o tamanho do que você está ‘upando‘ é muito grande. Maior do que o esperado.

O que é necessário fazer pra solucionar?

Basta adicionar a seguinte instrução ao arquivo de configuração do nginx que define o wordpress (/etc/nginx/sites-available/seu_wordpress.conf):

server {
client_max_body_size <Tamanho Desejado>M;

}

 
Dessa maneira, passamos a barreira do nginx.
Daí seu blog começa a avisar que o limite encontrado foi no upload_max_filesize do php.ini.
Então, visando ultrapassar a barreira do php.ini, basta incluir isso no final do .htaccess que esta na raiz do blog(/var/www/seu_wordpress/):

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

 
Feito, isso, ultrapassamos a barreira do php.
Agora sim. Tudo funcionando:

Instalando tema do arquivo enviado: meutema.zip

Descompactando o pacote…

 

Referências:
http://www.wpbeginner.com/wp-tutorials/how-to-increase-the-maximum-file-upload-size-in-wordpress/
http://pt.stackoverflow.com/questions/41619/enviando-arquivos-no-nginx-erro-413-request-entity-too-large

eSpeak: O Linux também fala!

Pra quem costuma elogiar o Linux dizendo: “Só falta falar”.
Agora vai ter que mudar um pouco o discurso.

O Linux também fala!

Um dos nomes dessa tecnologia é text-to-speech (texto pra fala). Já faz algum tempo que essa tecnologia vem evoluindo. Ótimo recurso para quem desenvolve aos portadores de necessidades especiais, como os deficientes visuais, por exemplo.

Mas ainda ainda tem muito o que evoluir. Não está pronta para ser usada na narração de um vídeo institucional por exemplo, para evitar gastos com um estúdio de gravação profissional (que não é nada barato).

Pra explorar text-to-speech em Linux, basta instalar o espeak e se divertir:

[root@vostrolab ~]# yum install espeak

O que eu tenho instalado aqui por exemplo, é esse:

[root@vostrolab ~]# rpm -qa|grep espeak
espeak-1.46.02-1.fc16.i686

Agora é só mandar falar:

[hudson@vostrolab ~]$ espeak -v pt “CiaLinux, compartilhando o que é livre.”

Perceba que usei o parâmetro opcional -v pt, para determinar a voz que me interessa.

Para verificar as vozes disponíveis:

[hudson@vostrolab ~]$ espeak –voices

A título de curiosidade, essas vozes ficam indexadas em /usr/share/espeak-data/voices/ e demais dicionários junto em /usr/share/espeak-data/.

O que segue é informação adicional:
eSpeak  was  written  by  Jonathan  Duddington  <jonsd@jsd.clara.co.uk>.  The  webpage  for  this  package  can  be  found  at http://espeak.sourceforge.net/.

Por: Hudson Murilo dos Santos
Referências: man espeak
http://elcio.com.br/o-linux-tambem-fala/

Clonando um banco de dados do MySQL

Então prezado leitor,

Depois de um tempo sem postar, tenho mais uma à apresentar;
Presta atenção com calma, lê bem antes de executar!

Os tempo sem postar não quer dizer eu desistí;
Quer dizer prepara aí, que tem vários POST por vir!

Se liga nessa, não tenha pressa, que o tal do BASH é bom à beça.

Essa dica é pra comunidade ligada na administração de MySQL. Maneira simples de fazer uma clonagem de um banco pra outro:

Em suma, isso gera um dump:

$ mysqldump > dumpfile

E isso faz load no novo banco recém criado:

$ mysq < dumpfile

Por exemplo, agora com todos os parâmetros na íntegra, veja como os comandos ficariam em meu ambiente.
Vamos supor que tenho um banco chamado banco01 e desejo cloná-lo em cima do banco02:

$ mysqldump -u smallbee -p –host mysql.smallbee.com.br banco01 > dumpfile.sql

Para fazer load no banco novo (depois de criado é lógico):

$ mysql -u smallbee -p –host mysql.smallbee.com.br banco02 < dumpfile.sql

Por: Hudson Murilo dos Santos
Referências: man mysql && man mysqldump

Recuperando a senha de root do MySQL

Quem nunca perdeu a senha de root do MySQL?
Poisé, aqui tem bem resumido como fazer pra recuperar.. Vamos aos comandos:

Primeiro passo é verificar se o seu MySQL está realmente parado:

[root@vostrolab ~]# /etc/init.d/mysqld status
mysqld is stopped

Segundo passo é criar um arquivo de inicialização pro banco de dados:

[root@vostrolab ~]# vim /var/lib/mysql/mysql-init

No exemplo acima utilizei o vim mas você pode utilizar o seu editor de texto predileto(nano, jed, joe, gedit, emacs e por aí vai…). Dentro do arquivo de configuração você pode colocar o seguinte conteúdo:

UPDATE mysql.user SET Password=PASSWORD(‘123456‘) WHERE User=’root’;
FLUSH PRIVILEGES;

Este comando acima será responsável por alterar a tabela mysql.user configurando sua nova senha para o usuário root. Note que grifei em vermelho acima onde você deve configurar sua nova senha.

Agora basta iniciar o MySQL em modo seguro e apontando para o seu arquivo de inicialização que acabamos de configurar. Para isso usamos o mysqld_safe conforme abaixo:

mysqld_safe –init-file=/var/lib/mysql/mysql-init &

Para testar, basta tentar conectar novamente no MySQL com a nova senha:

[root@vostrolab ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.1.56 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

mysql>

Feito… Agora basta parar o serviço mysqld_safe e iniciá-lo do modo convencional, que tudo estará funcionando normalmente com sua nova senha…

[root@vostrolab ~]# /etc/init.d/mysqld stop
110609 22:45:59 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Stopping mysqld:                                           [  OK  ]
[1]+  Done                    mysqld_safe –init-file=/var/lib/mysql/mysql-init

[root@vostrolab ~]# /etc/init.d/mysqld start
Starting mysqld:                                           [  OK  ]

Por: Hudson Murilo dos Santos
Referências: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

Convertendo um vídeo de formato FLV para MPG

Dica rápida pra quem precisa converter um vídeo de formato .FLV para .MPG.

Basta usar um software chamado ffmpeg.

Segue pacote/versão que testei:

[hudson@vostrolab ~]$ rpm -qa| grep ffmpeg
ffmpeg-0.6-3.fc13.x86_64

Comando utilizado:

$ ffmpeg -i arquivo.flv arquivo.mpg

Pronto, seu vídeo nomeado arquivo.mpg está lá.. convertido e pronto para uso.

Por: Hudson Murilo dos Santos

Referências: Dank, google, man ffmpeg, e testes práticos.

Firefox 4.0 ! Instalação no Fedora 64bits

Pessoal, finalmente saiu a versão final do Firefox 4… Depois de alguns RCs, eis a versão “estável”.

A versão para linux disponibilizada pela mozilla é 32bits, e até onde sei, ainda não há versão .rpm do navegador para plataformas x86_64, então segue dica para instalação da versão 32bits no Fedora 64 bits (testado no Fedora 14).

Read More

Arquivos deletados e espaço em disco não liberado

Olá pessoal, vamos para mais uma dica sobre File Systems…

Alguém já presenciou uma situação em que um grande arquivo ou milhares de pequenos arquivos foram eliminados com rm -rf e o espaço em disco não foi liberado ? pois bem, eu já presenciei várias vezes em FileServers Samba e hosts com bancos de dados Oracle.

Trata-se de uma situação comum que dependendo da situação pode ser uma dor de cabeça e tanto. Quando temos um arquivo sendo usado por um processo de aplicativo, e que durante este “lock” o removemos o filesystem marca este arquivo como deletado e não libera os blocos usados pelo(s) arquivo(s)…

Read More