Cópiar filtros e personalizações do usuário no Protheus

Segue uma dica para cópiar os filtros personalizados de um usuário para outros usuários.

Ao criar filtros personalizados, os mesmos ficam gravados na pasta \Protheus_Data\profile, o arquivo profile.usr contém as configurações realizadas para todos os usuários do Protheus. O arquivo profile.cdx é o índice desta tabela.

Abra o arquivo pela apsdu, escolhendo o driver Ctree

Edite o arquivo, a coluna P_NAME contém o código do usuário, os filtro de browse podem ser encontrados na coluna P_TASK pelo conteúdo FWFILTER, já as personalizações de aparencia podem ser encontradas pela colna P_TYPE pelo conteúdo BROWSE+TABELA no caso abaixo BROWSESB2.

Para copiar configurações de um usuário para o outro, recomendo fazer um backup do pasta profile, filtrar as informações que serão copiadas, e realizar o processo de copiar e apendar pela apsdu.

Anúncios

Atualizar o Webacula 5.0.2 para nova versão 5.5

Segue algumas informações sobre essa atualização, achei que seria simples, mas tive alguns imprevistos…

Primeira etapa:

Baixei a versão nova do Webacula, extrai os arquivos e quando executei a aplicação apareceu o primeiro erro.

Notice: Use of undefined constant __DIR__ – assumed ‘__DIR__’ in /var/www/html/webacula-5.5/html/index.php on line 39

Warning: include(Zend/Loader.php) [function.include]: failed to open stream: No such file or directory in /var/www/html/webacula-5.5/html/index.php on line 43

Warning: include() [function.include]: Failed opening ‘Zend/Loader.php’ for inclusion (include_path=’.:__DIR__/../library:../application/models/:../application/forms/:.:/usr/share/pear:/usr/share/php’) in /var/www/html/webacula-5.5/html/index.php on line 43

Fatal error: Class ‘Zend_Loader’ not found in /var/www/html/webacula-5.5/html/index.php on line 45

Esta bug já é conhecido e registrado.

Problema: A constante __DIR__ só funciona apartir da versão 5.3 do PHP.
Solução: Atualizar o PHP ou fazer a alteração dessa função no arquivo html/index.php na linha 39, pela função dirname(__FILE__) que terá o mesmo efeito nesse caso.

Segunda etapa:

Agora vou atualizar o banco de dados, neste caso PostgreSQL 8.1, novos erros e descobri que preciso atualizar o postgreSQL para nova versão 8.4, segue os erros exibidos:

[root@db PostgreSql]# ./10_make_tables.sh –host localhost
psql: FATAL:  autenticação do tipo password falhou para usuário “root”
PostgreSql : create of Webacula tables failed!
[root@gaius PostgreSql]# ./10_make_tables.sh –host localhost -U postgres
psql:<stdin>:16: ERRO:  função to_tsvector(“unknown”, text) não existe
DICA:  Nenhuma função corresponde com o nome informado e os tipos de argumento. Você precisa adicionar conversões de tipo explícitas.
psql:<stdin>:29: ERRO:  erro de sintaxe em ou próximo a “,” no caracter 70
psql:<stdin>:29: LINHA 2:    (10, ‘Info’),
psql:<stdin>:29:                         ^
PostgreSql : create of Webacula tables succeeded.

[root@db PostgreSql]# ./20_acl_make_tables.sh –host localhost -U postgres
psql:<stdin>:70: ERRO:  erro de sintaxe em ou próximo a “,” no caracter 66
psql:<stdin>:70: LINHA 2:     (10,2),
psql:<stdin>:70:                    ^
psql:<stdin>:90: ERRO:  erro de sintaxe em ou próximo a “,” no caracter 100
psql:<stdin>:90: LINHA 2:     (10, ‘index’,     ‘Home page’),
psql:<stdin>:90:                                            ^
psql:<stdin>:172: ERRO:  erro de sintaxe em ou próximo a “,” no caracter 105
psql:<stdin>:172: LINHA 2:     (1,   ‘*all*’,       ‘All commands’),
psql:<stdin>:172:                                                  ^
PostgreSql : create of Webacula ACL tables succeeded.

Problema: Essa atualização não funciona simplesmente com yum upgrade. Ela deverá ser manual.
Solução: Este howto explica como fazer essa atualização passo a passo.

http://blog.lystor.org.ua/2010/05/upgrading-postgresql-81-to-84-centos-55.html

Caso encontre o erro abaixo ao iniciar o banco de dados.

Problema: /usr/bin/initdb: error while loading shared libraries: libxslt.so.1: cannot open shared object file: Permission denied
Solução: desabilite SELinux

Terceira etapa:

Eu tive que reinstalar vários pacotes novamente, ex: httpd, php etc.

Outras dúvidas podem ser tiradas lendo o manual do webacula 5.5, dentro do diretório docs dos arquivos.

Depois de muita dor de cabeça e um pouco de trabalho consegui fazer tudo funcionar corretamente. Valeu a pena o sistema Webacula 5.5 está show de bola 😀

Latinoware 2010

Pessoal mesmo um pouco tarde, gostaria de deixar minha mera opinião como participante do Latinoware 2010.

Neste ano de 2010, participei novamente do evento Latinoware (VII Conferência Latino-Americana de Software Livre), gostaria de registrar minhas impressões sobre o evento. O mesmo ocorreu em Foz do Iguaçu – Paraná, nos dias 10, 11 e 12 de novembro no Parque Tecnológico Itaipu.

Neste ano tivemos uma vasta gama de palestras sobre diversas áreas ligada a cultura SW, entre elas eu destaco uma ideia muito original e interessante, uma apresentação no formato de teatro sobre TDD (Desenvolvimento Orientado a Testes) realizada por Sylvestre Mergulhão e Henrique Andrade com o tema “Por que eu sou fanático por testes e você é um bundão?”, realmente é impressionante como o teatro tem o poder de transmitir informações/mensagens para as pessoas de uma forma suave e engraçada.

Outra coisa que gostei muito neste ano foi a infraestrutura das salas de palestras, estava perfeito! Apenas achei que a parte de exposição estava muito fraca, alguns stands nem haviam pessoas lá, acredito que isso é um ponto a ser melhorado, uma sugestão seria além de ter stands tradicionais de empresas (expondo seus produtos) e stands de comunidade (mas com informações relevantes, neste ano eu vi muitos stands com um ou dois nerds com seus notebooks acessando internet ou programando, os caras não sabiam nem conversar e muito menos mostrar para o publico de fato o que estavam expondo ali), acrescentar stands com projetos interessantes (demonstrando de fato o que foi executado, com o intuito de atrair curiosos).

Uma outra sugestão é sobre o material de divulgação da programação do evento, o pessoal poderia sugerir os palestrantes compor títulos mais sugestivos a suas apresentações, e/ou adicionar um mini resumo do escopo da palestra no material, pois tinham vários títulos de palestras que realmente não fazia sentido para uma pessoa leiga em um determinado assunto, talvez essas pessoas quisessem muito assistir essas palestras se ela tivesse pelo menos uma noção do conteúdo a ser abordado.

Com tudo gostaria de dizer que o evento foi um sucesso, deixar minhas impressões e sugestões.

Topic 202: System Startup

Tags

, ,

202.1 Customising system startup and boot processes

Weight 4
Description Candidates should be able to query and modify the behaviour of system services at various run levels. A thorough understanding of the init structure and boot process is required. This objective includes interacting with runlevels.

Key Knowledge Areas

  • Linux Standard Base Specification (LSB) – Conjunto de padrões que aumentarão a compatibilidade entre distribuições Linux.

The following is a partial list of the used files, terms and utilities:

  • /etc/inittab – Define quais processos serão iniciados no boot (id:runlevels:action:process).
  • /etc/init.d/ – Onde fica os scripts de inicialização dos serviços. (System-V (debian)).
  • /etc/rc.d/ – Onde fica os scripts de inicialização dos serviços. (BSD (redhat)).
  • chkconfig – Ferramenta para administração de inicialização dos serviços. (BSD)
    • chkconfig –list <nome>
    • chkconfig –add <nome>
    • chkconfig –del <nome>
    • chkconfig [–level <níveis>] <nome> <on|off|reset|resetpriorities>
  • update-rc.d – Ferramenta para administração de inicialização dos serviços (System-V).
    • update-rc.d [-n] [-f] <nome> remove
    • update-rc.d [-n] <nome> defaults [NN | SS KK]
    • update-rc.d [-n] <nome> start|stop NN runlvl [runlvl] […] .
    • update-rc.d [-n] <nome> disable|enable [S|2|3|4|5]
    • -n: not really (apenas testa o comando sem afetar o sistema)
    • -f: force (força a remoção dos links mesmo que o script ainda exista)

202.2 System recovery

Weight 4
Description Candidates should be able to properly manipulate a Linux system during both the boot process and during recovery mode. This objective includes using both the init utility and init-related kernel options.

Key Knowledge Areas

  • inittab – Descreve o processo de inicialização normal do boot.
  • GRUB – É um multi-carregador de um sistema operacional (boot-loader).
  • grub shell – Área de comandos interativos do grub.

The following is a partial list of the used files, terms and utilities:

  • init – É responsável por invocar todos os serviços do sistema, por meio dos scripts de inicialização.
  • mount – Monta uma partição em um diretório.
  • fsck – Verifica e rapara um sistema de arquivos (link para o e2fsck).
  • telinit – Troca o runlevel em tempo de execução (Link para o comando init).

Topic 201: Linux Kernel

Tags

, ,

201.1 Kernel Components

Weight 2
Description Candidates should be able to utilise kernel components that are necessary to specific hardware, hardware drivers, system resources and requirements. This objective includes implementing different types of kernel images, identifying stable and development kernels and patches, as well as using kernel modules.

Key Knowledge Areas

  • Kernel 2.6.x documentation

The following is a partial list of the used files, terms and utilities:

  • /usr/src/linux – Local de armazenamento do código fonte do kernel.
  • /usr/src/linux/Documentation – Local de armazenamento da documentação oficial.
  • zImage – Compilação que utiliza o método de compreensão zlib (possui um limite de tamanho porque é descompactado na memória básica).
  • bzImage – Compilação que utiliza o método de compreensão zlib, porém é descompactada na memória estendida e não possui as limitações da zImage.

201.2 Compiling a kernel

Weight 2
Description Candidates should be able to properly configure a kernel to include or disable specific features of the Linux kernel as necessary. This objective includes compiling and recompiling the Linux kernel as needed, updating and noting changes in a new kernel, creating an initrd image and installing new kernels.

Key Knowledge Areas

  • /usr/src/linux/
  • GRUB configuration files
  • Kernel 2.6.x make targets

The following is a partial list of the used files, terms and utilities:

  • mkinitrd/mkinitramfs – Cria um conjunto de arquivos que é carregado na memoria RAM durante o carregamento do kernel e montado como se fosse uma partição, porém sem que haja um sistema de arquivos (o sistema de arquivos é carregado como modulo pelo kernel).
  • mkinitrd – (mkinitrd -c -k 2.6.30 -m xfs -o /boot/initrd-2.6.30.gz)
  • mkinitramfs – (/etc/initramfs-tools/initramfs.conf) (mkinitramfs -o /boot/initramfs-2.6.30 2.6.30)
  • make – Utilitário que auxilia o processo de compilação.
  • make targets (config, xconfig, menuconfig, oldconfig, mrproper, zImage, bzImage, modules, modules_install)
    config – Atualiza a configuração do kernel através de uma interface de linha de comando.
    xconfig – Atualiza a configuração do kernel através de uma interface gráfica baseada em QT.
    gconfig – Atualiza a configuração do kernel através de uma interface gráfica baseada em GTK.
    menuconfig – Atualiza a configuração do kernel através de uma interface ncurses.
    oldconfig – Mantem a configuração do kernel antigo no novo a ser compilado.
    mrproper – Remove os arquivos gerados pela compilação anterior e também as configurações realizadas.
    zImage – Compilação que utiliza o método de compreensão zlib (possui um limite de tamanho porque é descompactado na memória básica).
    bzImage – Compilação que utiliza o método de compreensão zlib, porém é descompactada na memória estendida e não possui as limitações da zImage.
    modules – Compila os módulos do kernel.
    modules_install – Instala os módulos compilados com o comando make modules.

201.3 Patching a kernel

Weight 1
Description Candidates should be able to properly patch a kernel to add support for new hardware. This objective also includes being able to properly remove kernel patches from already patched kernels.

Key Knowledge Areas

  • Kernel Makefiles

The following is a partial list of the used files, terms and utilities:

  • patch – Aplica uma correção gerada através do comando diff.
  • gzip – (compactar = gzip file.tar, descompactar = gzip -d file.tar.gz)
  • bzip2 – (compactar = bzip2 file.tar, descompactar = bzip2 -d file.tar.bz2)

201.4 Customise, build and install a custom kernel and kernel modules

Weight 2
Description Candidates should be able to customise, build and install a 2.6 kernel for specific system requirements, by patching, compiling and editing configuration files as required. This objective includes being able to assess requirements for a kernel compile as well as build and configure kernel modules.

Key Knowledge Areas

  • Customize the current kernel configuration.
  • Build a new kernel and appropriate kernel modules.
  • Install a new kernel and any modules.
  • Ensure that the boot manager can locate the new kernel and associated files.
  • /usr/src/linux/
  • Module configuration files

The following is a partial list of the used files, terms and utilities:

  • patch – Aplica uma correção gerada através do comando diff.
  • make – Utilitário que auxilia o processo de compilação.
  • module tools
  • /usr/src/linux/* – Local de armazenamento do código fonte do kernel.
  • /usr/src/linux/.config – Armazena as configurações realizadas para compilação do kernel.
  • /lib/modules/kernel-version/* – Armazena os módulos compilados do kernel.
  • /boot/* – Contem os arquivos do kernel que são carregados durante o processo de inicialização.
  • make targets: all, config, menuconfig, xconfig, gconfig oldconfig, modules, install, modules_install, depmod, rpm-pkg, binrpm-pkg, deb-pkg
    rpm-pkg – Gera um pacote RPM compilado e com código fonte.
    binrpm-pkg – Gera um pacote compilado RPM.
    deb-pkg – Gera um pacote compilado Deb.

201.5 Manage/Query kernel and kernel modules at runtime

Weight 3
Description Candidates should be able to manage and/or query a 2.6.x kernel and its loadable modules.

Key Knowledge Areas

  • Use command-line utilities to get information about the currently running kernel and kernel modules.
  • Manually load and unload kernel modules.
  • Determine when modules can be unloaded.
  • Determine what parameters a module accepts.
  • Configure the system to load modules by names other than their file name.

The following is a partial list of the used files, terms and utilities:

  • /lib/modules/kernel-version/modules.dep – Arquivo gerado pelo comando depmod.
  • module configuration files in /etc (/etc/modules) – Módulos que serão carregados durante o boot do sistema.
  • /proc/sys/kernel/ – Contem arquivos de configuração que afetam operações do kernel diretamente.
  • depmod – Cria o arquivo modules.dep com uma lista de módulos e suas dependências.
  • insmod – Insere um modulo no kernel para uso.
  • lsmod – Lista os módulos atualmente carregados pelo kernel.
  • rmmod – Remove um modulo carregado pelo kernel.
  • modinfo – Exibe informações sobre um modulo do kernel.
  • modprobe – Carrega módulos do kernel com suas dependências.
  • uname – Exibe informações sobre o sistema (-r versão do kernel, -a todas informações).

Fundamentos em gerenciamento de projetos

Tags

,

Recentemente iniciei meu curso de especialização MBA em gerenciamento de projetos, no primeiro módulo tivemos um nivelamento sobre fundamentos. Estou gostando muito do curso, principalmente porque na empresa que trabalho sobrevive de projetos e a cada aula consigo ter uma visão real de como a gestão de projetos é indispensável. Para ter uma noção básica de GP veja este slide .

Depois de assistir todas as aulas do módulo de fundamentos de GP, escrevi algumas questões respondidas para estudar e fixar a matéria:

O que é um projeto?
Projeto é um empreendimento temporário com objetivo de criar um produto único.

O que e restrição tripla?
É o conjunto de três restrições, tempo, escopo e custo; simbolizada por uma pirâmide, caso haja uma alteração em uma dessas restrições, todas elas são afetadas diretamente impactando na qualidade do projeto.

Quais são as certificações do PMI?
CAPM – Certified Associate in Project Management (demonstra entendimento nos fundamentos dos conhecimentos, processos e terminologia no PMBOK)
PMP – Project Management Professional (reconhece o entendimento dos conhecimentos e habilidades para liderar e dirigir equipe de projetos)
PgMP – Program Management Professional (demonstra experiência, conhecimento e produtividade em alcançar objetivos organizacionais)
PMI-SP – PMI Sheduling Professional (demonstra experiência na criação e gerenciamento do cronograma do projeto)
PMI-RPM – PMI Risc Management Professional (demostra experiência no gerenciamento dos riscos do projeto)

Quais são os aspectos mais considerados em gerenciamento de projeto?
Prazo 80% , Escopo 79% , Custo 69% , Riscos 56% , Qualidade 53% , Comunicação 51% , Recursos humanos 49% , Integração 44%  e Aquisições 38% .

Quais são os stakeholders de um projeto?
São indivíduos ou organizações diretamente envolvidos no projeto ou aqueles cujos interesses podem ser afetados positiva ou negativamente durante ou após o projeto (gerente do projeto, cliente, organização executora, patrocinados, usuário, entre outros.

O que é requisito de um projeto, quais são os principais problemas ligados a sua definição?

São característica específicas do projeto, devem ser levantadas através de reuniões e entrevistas, geralmente ocorre problemas quando os requisitos são incorretos baseados em necessidades mal definidas, requisitos ambíguos e mudança de requisitos.

Quais são os tipos de organização em gerenciamento de projeto?
Organização funcional, Organização por projetos, Matricial fraca, Matricial balanceada e Matricial forte;

Qual é o papel de um gerente de projetos?
Coordenar e integrar atividades

Qual é o papel de um gerente funcional?
Definir como e onde a atividade será executada, prove recursos suficientes para atingir objetivos e responsabilidade pelas entregas.

Qual é o papel de um gerente executivo?
Definir os objetivos de alto nível, resolução de conflitos e definir prioridades.

O que é um programa?
Possui um grupo de projetos relacionados, gerenciados de modo coordenado para a obtenção de benefícios e controle.

O que é portfólio?

É um conjunto de projetos e programas agrupados a fim de atender aos objetivos de negócios estratégicos.

O que é sub-projetos?

São sub-divisões de um projeto, normalmente contratados de uma empresa externa ou de outra unidade funcional.

Qual é a responsabilidade de um escritório de projetos (PMO)?
Prover politicas, metodologias e padrões de projeto, fornecer gerentes de projetos e acompanhar seus resultados.

Qual é a estrutura de um processo de um projeto?

Entradas, Ferramentas e técnicas e saídas.

Quais são as nove áreas do conhecimento em gerenciamento de projeto?

Integração, escopo, tempo, custo, qualidade, recursos humanos, comunicações, riscos e  aquisições.

Quais são os grupos de processos?

Iniciação, planejamento, controle e monitoramento, execução e encerramento.

Como funciona o ciclo de vida de um produto?
Introdução, crescimento, maturidade e declínio.

O que é caminho crítico?
É o caminho formado pelas atividades que se atrasarem, atrasam a duração do projeto todo.

Como funciona a recuperação de cronograma por compressão (crashing)?
A ideia é adicionar mais recursos às atividades no cominho crítico a fim de concluir a tarefa mais rapidamente, sua desvantagem é o aumento de custo.

Como funciona a recuperação de cronograma por paralelismo (fast tracking)?
A ideia é avaliar o caminho crítico para ver quais atividades poderiam ser realizadas em paralelo, sua desvantagem é o aumento no risco.

Quais são as causas de falha em gerenciamento de projeto?
Interpretação errada do trabalho a ser realizado, omissão na definição do escopo, cronograma definido com pobreza ou excessivamente otimista, fracasso na avaliação e na qualificação dos riscos, wbs mal definida, parâmetros de qualidade mal estabelecidos e fracasso na estimativa dos custos indiretos e administrativos do projeto.

Quais são as causas de sucesso em gerenciamento de projeto?
Envolvimento do usuário, suporte da diretoria executiva, planejamento efetivo, requirimento claramente definidos e anunciados e expectativas realistas.

Deming
Criou o ciclo PDCA.

Juran
Define qualidade “com adequação de uso”.

Crosby
Criou o conceito de zero defect.

O que é matriz de responsabilidade?
Define quem faz o que e quem decide o que.

O que é plano de comunicações?

Define quem tem que produzir a informação, quem recebe, onde busca a informação, quando produzir, quando divulgar e qual o formato.

O que é plano de risco no gerenciamento de projeto?
É o processo necessário para garantir a correta identificação, análise e resposta aos riscos do projeto, maximizando os efeitos positivos e minimizando os negativos.

O que faz um plano de projeto?
É um documento formal, utiliza saída de outros processos, controla e gerencia a execução do projeto, documenta as decisões de planejamento, defini as revisões, distribuído de acordo com o plano de comunicações e é um documento vivo.

O que contém o plano de projeto?
Project charter, estratégia de gp, wbs, declaração de escopo, premissas e restrições, baselines, cronograma, custos, recursos humanos, comunicações, aquisições, qualidade, riscos, pendências, etc.

Compilando e instalando o bacula no Centos

Tags

, , , ,

Recentemente montei um servidor de backup na empresa em que trabalho, tive um pouco de dificuldade para realizar a instalação do bacula no Centos, segue algumas dicas:

Compilação dos pacotes

Faça download dos pacotes fontes do bacula

wget http://downloads.sourceforge.net/project/bacula/rpms/5.0.1/bacula-5.0.1-1.src.rpm
wget http://downloads.sourceforge.net/project/bacula/rpms/5.0.1/bacula-bat-5.0.1-1.src.rpm
wget http://downloads.sourceforge.net/project/bacula/rpms/5.0.1/bacula-docs-5.0.1-1.src.rpm

Instale os pacotes necessários para compilação dos pacotes fontes do bacula

yum install rpm-build gcc gcc-c++ autoconf glibc-devel ncurses-devel \
 readline-devel libstdc++-devel zlib-devel openssl-devel libacl-devel \
 pkgconfig libxml2-devel libtermcap-devel

Qual banco de dados será utilizado? Sqlite, mysql ou postgres?

yum install sqlite-devel
yum install postgresql-devel
yum install mysql-devel

Instalação dos pacotes sources

rpm -ivh bacula-5.0.1-1.src.rpm
rpm -ivh bacula-bat-5.0.1-1.src.rpm
rpm -ivh bacula-docs-5.0.2-1.src.rpm

Compile o pacote bacula com o banco de dados escolhido

rpmbuild -bb --clean /usr/src/redhat/SPECS/bacula.spec \
--define "contrib_packager Diorgenes Felipe Grzesiuk <diorgenes@itai.org.br>" \
--define "build_centos5 1" \
--define "build_postgresql 1" 

# Outros banco de dados: build_sqlite, build_mysql ou build_postgresql.

Instale os pacotes necessários para compilação dos pacotes fontes do bacula bat (bacula administration tool)

yum install mesa-libGLU-devel libXau-devel mesa-libGL-devel xorg-x11-proto-devel \
libXdmcp-devel libX11-devel mesa-libGLU-devel libXext-devel libXcursor-devel \
libXfixes-devel libXrandr-devel libXrender-devel libXinerama-devel \
libXi-devel libICE-devel libSM-devel libXt-devel dbus-devel \
fontconfig-devel libpng-devel freetype-devel

Compile o pacote bacula-bat

rpmbuild --bb --clean /usr/src/redhat/SPECS/bacula-bat.spec \
--define "contrib_packager Diorgenes Felipe Grzesiuk <diorgenes@itai.org.br>" \
--define "build_centos5 1" --define "centos5 1"
rpmbuild --bs /usr/src/redhat/SPECS/bacula-bat.spec \
--define "contrib_packager Diorgenes Felipe Grzesiuk <diorgenes@itai.org.br>" \
--define "build_centos5 1" --define 'centos5 1'

Instalação do Bacula no Centos

Caso for utilizar fitas no backup, instale os seguintes pacotes

yum install mt-st mtx

Instale os pacotes rpms do bacula compilados para Centos

cd /usr/src/redhat/RPMS/i386
rpm -ivh bacula-libs-5.0.2-1.i386.rpm
rpm -ivh bacula-postgresql-5.0.2-1.i386.rpm
rpm -ivh bacula-bat-5.0.2-1.i386.rpm
rpm -ivh bacula-updatedb-5.0.2-1

Configuração do serviços Bacula

Director

O arquivo de configuração padrão do serviço Director é /etc/bacula/bacula-dir.conf

Altere as configurações de bando de dados neste arquivo:

# Generic catalog service
Catalog {
 Name = MyCatalog
 # Uncomment the following line if you want the dbi driver
 dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport = 5432
 dbname = "bacula"; dbuser = "postgres"; dbpassword = "postgres"
}

Populando as estruturas e dados no banco:

cd /usr/lib/bacula
chmod o+rx create_postgresql_database make_postgresql_tables grant_postgresql_privileges
su postgres -c "./create_postgresql_database"
su postgres -c "./make_postgresql_tables"
su postgres -c "./grant_postgresql_privileges"
chmod o-rx create_postgresql_database make_postgresql_tables grant_postgresql_privileges

Iniciando o serviço director

service bacula-dir start

Storage

O arquivo de configuração padrão do serviço Storage é /etc/bacula/bacula-sd.conf, nele contém as informações sobre qual dispositivo e formato será armazenado o backup.

Iniciando o serviço storage

service bacula-sd start

File

O arquivo de configuração padrão do serviço File é /etc/bacula/bacula-fd.conf, nele contém as informações sobre onde será será armazenado o backup.

Iniciando o serviço file

service bacula-fd start

Limpando registros antigos

Caso você faça alguns testes com seu servidor de backup e depois queira apagar essas informações, utilize o comando dbcheck:

dbcheck -C Catalog /var/lib/bacula/ bacula postgres postgres localhost

Instalando o Dspam no Expresso Livre

Tags

, , , , , ,

Depois de alguns dias sofrendo para concretizar a instalação do Dspam, deixo aqui um pequeno tutorial com algumas dicas:

Instalando o Dspam

Faça download da ultima versão estável no endereço http://sourceforge.net/projects/dspam/

No meu caso, baixei a versão dspam-3.9.0.tar.gz e vou utilizar banco de dados postgreSQL e autenticar os usuários no Ldap, integrando o Dspam com o Expresso Livre.

Antes de começar o processo de compilação necessitamos instalar alguns pacotes:

Adicione o repositório EPELRepo:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

Instale o seguintes pacotes:

yum install autoconf automake libtool libedit postgresql-devel openldap-devel

Executando o processo de configuração, compilação e instalação:

tar xvf dspam-3.9.0.tar.gz
cd dspam-3.9.0

./autogen.sh
./configure –enable-shared –enable-large-scale –enable-daemon –enable-clamav –with-dspam-home-owner=dspam –with-dspam-home-group=mail –enable-debug –enable-syslog –with-logdir=/var/log/dspam –enable-preferences-extension –with-storage-driver=pgsql_drv –with-pgsql-includes=/usr/include/pgsql –enable-virtual-users –enable-external-lookup

make && make install

Preparando o banco de dados:

su postgres
$ psql
CREATE USER dspam NOINHERIT;
ALTER USER dspam WITH PASSWORD ‘dspam’;
CREATE DATABASE dspam OWNER dspam;

Importando as estruturas iniciais do banco:

$ createlang plpgsql dspam

cd dspam-3.9.0/src/tools.pgsql_drv
psql dspam -U dspam < pgsql_objects.sql
psql dspam -U dspam < virtual_users.sql

Configurando o cron para fazer uma limpeza diária no banco de dados:

mkdir -p /usr/local/share/dspam
cp purge.sql /usr/local/share/dspam/

Adicione essa linha no /etc/crontab

00 0 * * *  postgres /usr/bin/psql dspam < /usr/local/share/dspam/purge.sql

Configurando o Dspam

Altere as seguintes parâmetros do seu arquivo de configuração /usr/local/etc/dspam.conf:

DeliveryHost            127.0.0.1
DeliveryPort            10026
DeliveryIdent           localhost
DeliveryProto           SMTP

FallbackDomains on

EnablePlusedDetail      on

QuarantineMailbox       +Spam

OnFail error

WebStats no

Preference “spamAction=tag”     # { quarantine | tag | deliver } -> default:quarantine
Preference “signatureLocation=headers”  # { message | headers } -> default:message

PgSQLServer             127.0.0.1
PgSQLPort               5432
PgSQLUser               dspam
PgSQLPass               dspam
PgSQLDb                 dspam

PgSQLConnectionCache    3

PgSQLUIDInSignature     on

PgSQLVirtualTable               dspam_virtual_uids
PgSQLVirtualUIDField            uid
PgSQLVirtualUsernameField       username

ExtLookup                      on                              # Turns on/off external lookup
ExtLookupMode           strict                          # available modes are ‘verify’, ‘map’ and ‘strict’.
# ‘strict’ enforces both verify and map
ExtLookupDriver          ldap                           # Currently only ldap and program are supported.
# There are plans to support both MySQL and Postgres.
ExtLookupServer          ldap.org.br              # Can either be a database hostname or the full path to
# an executable lookup program and its arguments.
ExtLookupPort             389                             # Desired port when connecting to the lookup database.
ExtLookupDB             “ou=users,dc=org,dc=br”  # Can either be an LDAP search base or a database name (TODO).
ExtLookupQuery          “(&(mail=%u)(accountStatus=active))”    # Can either be an LDAP search filter or an SQL query (TODO)
ExtLookupLDAPAttribute  “mail”               # Attribute to be used when ExtLookupDriver is ‘ldap’
# and ExtLookupMode ‘map’ or ‘strict’
ExtLookupLDAPVersion    3

ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse on

ServerPID               /var/run/dspam.pid

ServerMode auto

ServerParameters        “–deliver=innocent,spam”
ServerIdent             “localhost”

ServerDomainSocketPath  “/tmp/dspam.sock”

Integrando o Postfix com o Dspam

Edite o arquivo /etc/postfix/master.cf e na primeira linha faça a seguinte alteração:

smtp      inet  n       –       n       –       –       smtpd   -o content_filter=lmtp:unix:/tmp/dspam.sock

No final do arquivo adicione as seguintes linhas:

localhost:10026 inet  n –       n       –       –        smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

Iniciando os serviços afim de testar a solução:

/etc/init.d/postfix reload

dspam –daemon –debug

Envie um e-mail para o postfix e acompanhe os logs gerados pelo dspam, utilize o comando dspam_stats -H para gerar um relatório da base dspam.

Verifique o código fonte do e-mail tem as seguintes linhas no cabeçalho:

X-DSPAM-Result: Innocent
X-DSPAM-Processed: Tue Jun 29 04:02:26 2010
X-DSPAM-Confidence: 0.6764
X-DSPAM-Probability: 0.0000
X-DSPAM-Signature: 3,4c299a82314523618417981

Após finalizar a configuração da solução, crie um script de inicialização automática para o serviço Dspam.

Integrando o Dspam com Expresso Livre

Verifique qual usuário do servidor Web que o Expresso está utilizando, no meu caso é o apache, então conceda as permissões necessárias para que o usuário apache consiga executar o comando dspam.

Dica: Verifique as permissões do executavel (/usr/local/bin/dspam) e seu arquivo de configuração (/usr/local/etc/dspam.conf).

Então habilite a opção Spam no Expresso Livre, clique no ícone Administrador -> Expresso Mail -> Configuração do Servidor:

Você gostaria de utilizar o filtro anti-spam? Marque (SIM)

Comando que será executado ao marcar como spam (/usr/local/bin/dspam –client –user ##EMAIL## –class=spam –source=error –signature=##SIGNATURE## &)

Comando que será executado ao marcar como não-spam  (/usr/local/bin/dspam –client –user ##EMAIL## –class=innocent –source=error –signature=##SIGNATURE## &)

Então execute os comandos Marcar como Spam e Não é spam no Expresso e verifique o resultado com o comando dspam_stat -H email@org.br se a integração está funcionando corretamente.

Legenda do comando dspam_stat

  • TP: mensagens corretamente classificadas como spam
  • TN: mensagens corretamente classificadas como normais
  • FP: mensagens erradamente classificadas como spam (conforme retreinamento)
  • FN: mensagens erradamente classificadas como normais (conforme retreinamento)
  • TL: quanto falta para 2500 mensagens – a partir daí, o Dspam muda o algoritmo de aprendizado
  • SHR: porcentagem de spams corretamente classificados
  • HSR: porcentagem de normais incorretamente classificados como spam
  • OCA: porcentagem de mensagens corretamente classificadas

Aumentar o tamanho do anexo no Expresso Livre

Tags

, , , , , ,

Recentemente tive um pequeno trabalho para configurar o tamanho do limite de anexo no Expresso Livre, então resolvi compartilhar essa dica, vamos as configurações:

Ajustar as variáveis do PHP:

  • memory_limit = 256M (Define o tamanho máximo de memória disponível para ser utilizada pelo PHP);
  • upload_max_filesize = 25M (Define o tamanho máximo de um arquivo para upload);
  • post_max_size = 25M (Define o tamanho máximo de dados em uma requisição POST);

Obs: O tamanho das variáveis upload_max_filesize e post_max_size reflete diretamente na variável memory_limit, pois o PHP necessita de mais memória para trabalhar com volumes de dados maiores. Ex: upload_max_filesize = 50M, post_max_size = 50M e memory_limit = 512M.

No meu caso, utilizo virtualhost no apache, segue minha configuração:

<VirtualHost *:80>
 ServerAdmin suporte@domain.org.br
 ServerName expresso.domain.org.br
 DocumentRoot /var/www/html/expresso.domain.org.br

 HostnameLookups Off
 UseCanonicalName Off
 ServerSignature Off

 <IfModule prefork.c>
 php_value memory_limit 256M
 php_value upload_max_filesize 25M
 php_value post_max_size 25M
 </IfModule>

RewriteEngine on
 RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
 RewriteRule .* - [F]

 # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
 LogLevel warn
 ErrorLog /var/log/httpd/expresso-error_log
 CustomLog /var/log/httpd/expresso-access_log combined
</VirtualHost>

Ajustar o tamanho de anexo no Postfix:

No arquivo /etc/postfix/main.cf procure por message_size_limit, altere para o tamanho em bytes desejado. Ex:

# Tamanho maximo de anexo
message_size_limit = 35651584

Carregando as novas configurações dos serviços:

/etc/init.d/httpd reload
/etc/init.d/postfix reload

Configurar o tamanho limite de anexo no Expresso Livre:

Clique no ícone Administrador e depois altere o campo Tamanho máximo de anexos, no meu caso 25Mb.

O tamanho do anexo no Expresso Livre é diferente do tamanho real do anexo:

Segue a justificativa da diferença, de acordo com algumas pesquisas o PHP utiliza codificação base64 para os arquivos anexados.

A codificação de base 64 foi definida originalmente para anexos do correio electrónico: RFC 2045: “Multipurpose Internet Mail Extensions”.

A codificação de base 64 usa o sub-conjunto de 65 caracteres do US-ASCII que são os caracteres mais “universais”, ou seja, caracteres que são iguais em practicamente todos os códigos: A-Z, a-z, 0-9, +, / = pad.

24 bits são representados em 4 caracteres
6 bits úteis por caracter
Aumenta tamanho do conteúdo em 33%, por causa dos 2 bits “desperdiçados”.

Ou seja, um arquivo de “5Mb” anexado no Expresso Livre, será exibido como “6.8Mb”.

Topic 207: Domain Name Server

Tags

, , , , ,

207.1 Basic DNS server configuration

Weight 2
Description Candidates should be able to configure BIND to function as a caching-only DNS server. This objective includes the ability to convert older BIND configuration files to newer format, managing a running server and configuring logging.

Key Knowledge Areas

  • BIND 9.x configuration files, terms and utilities
  • Defining the location of the BIND zone files in BIND configuration files
  • Reloading modified configuration and zone files

The following is a partial list of the used files, terms and utilities:

  • /etc/named.conf
  • /var/named/*
  • /usr/sbin/rndc
  • kill

Caching-Only – Um servidor caching-only, em resposta à solicitação de um cliente, encaminha uma consulta a servidores DNS na Internet e, uma vez obtida a resposta, armazena estas informações localmente. Da próxima vez em que a mesma informação for solicitada, a resposta será fornecida diretamente a partir da consulta local ao cache de informações. As informações no cache serão reutilizadas até que o seu prazo de validade (TTL – Time to Live), se expire. Servidores caching-only não fornecem informação oficial sobre domínios. Tudo o que sabem é resultado de suas consultas e de sua operação diária. Se o processo for encerrado, todo o cache é descartado e começamos do zero novamente.

/etc/named.conf – Como em qualquer tipo de configuração DNS, todo o trabalho começa no arquivo /etc/named.conf, que define as opções de funcionamento do servidor e quais são e onde se encontram os arquivos utilizados.

/var/named/* – Diretório padrão para armazenar os arquivos de zonas do dns.

/usr/sbin/rndc – Comando utilizado para forçar a leitura de novas configurações de zone, sem interromper o serviço. Além de controlar o servidor local o comando rndc pode exibir status, transferir zonas e interromper o serviço em um servidor remoto.

Kill – O comando kill pode ser utilizado para recarregar as configurações do dns sem interromper o serviço, enviando o sinal HUP para o processo (kill -HUP pid).

207.2 Create and maintain DNS zones

Weight 2
Description Candidates should be able to create a zone file for a forward or reverse zone or root level server. This objective includes setting appropriate values for records, adding hosts in zones and adding zones to the DNS. A candidate should also be able to delegate zones to another DNS server.

Key Knowledge Areas

  • BIND 9 configuration files, terms and utilities
  • Utilities to request information from the DNS server
  • Layout, content and file location of the BIND zone files
  • Various methods to add a new host in the zone files, including reverse zones

The following is a partial list of the used files, terms and utilities:

  • /var/named/*
  • zone file syntax
  • resource record formats
  • dig
  • nslookup
  • host

Zone file syntax – O arquivo de zona contém várias informações dos nomes do domínio em questão, geralmente o nome do arquivo de zona segue o padrão domínio com os prefixos/sufixos zone ou db.

$TTL    1800 // Indica o tempo de vida que os dados devem ser mantidos no cache dns.
@   IN  SOA postmaster.domain.org.br. ( // Determina o servidor de e-mail do administrador
2010031201     ; Serial // Numero de identificação da zona (data + número decimal)
28800               ; Refresh (8 horas) //  8H
7200                 ; Retry (2 horas) // 2H
2419200           ; Expire (4 semanas) // 4W
86400               ; Negative Cache TTL (1 dia) 1D
)
;

@ NS ns1.domain.org.br. // NS especifica quem é o servidor de nomes do domínio

@ NS ns2.domain.org.br.

@ MX 10 mail.domain.org.br. // MX determina quem é o servidor de e-mail do domínio e sua prioridade

backup A 192.168.0.10 // A mapeia o nome especificado para o IP (backup.domain.org.br = 192.168.0.10)

www CNAME domain.org.br. // CNAME cria um alias para um nome já definido em outro registro

10 PTR backup.domain.org.br. // PTR mapeia o número IP para um nome (dns reverso)

resource record formats

dig – Ferramenta específica para diagnóstica de servidores dns.

nslookup – Realiza consultas no servidor dns (/etc/resolv.conf) atrvés de um endereço IP ou nome.

host – Realiza consultas no servidor dns (/etc/resolv.conf) atrvés de um endereço IP ou nome.

reverse zones – O DNS reverso é um recurso que permite que outros servidores verifiquem a autenticidade do seu servidor, checando se o endereço IP atual bate com o endereço IP informado pelo servidor DNS, isso evita que alguém utilize um domínio que não lhe pertence para enviar spam.

zone "23.234.64.in-addr.arpa" { // 64.234.23.12
type master;
file "/etc/bind/db.domain.rev";
};

207.3 Securing a DNS server

Weight 2
Description Candidates should be able to configure a DNS server to run as a non-root user and run in a chroot jail. This objective includes secure exchange of data between DNS servers.

Key Knowledge Areas

  • BIND 9 configuration files
  • Configuring BIND to run in a chroot jail
  • Split configuration of BIND using the forwarders statement

The following is a partial list of the used files, terms and utilities:

  • /etc/named.conf
  • /etc/passwd
  • DNSSEC
  • dnssec-keygen

DNSSEC – Realiza as transferências de informações entre servidores dns autenticadas por uma chave criptográfica.

Dnssec-keygen – Comando para gerar a chave criptográfica

http://www.dicas-l.com.br/sysadmin/sysadmin_20070308.php
http://www.dicas-l.com.br/dicas-l/20060508.php
http://www.unitednerds.org/thefallen/docs/index.php?area=DNS&tuto=SlackwareShow