Arquivo da categoria 'Linux'

Hypertext Access: htaccess

Postado por Yoshio Iwamoto em 9/02/2010

O "Hypertext Access" ou apenas "htaccess" é um arquivo (oculto) com diretrizes de configuração do servidor HTTP Apache que são aplicadas por diretório.

Basicamente o htaccess utiliza a mesma sintaxe do arquivo de configuração principal do Apache, porém obedece as regras estabelecida pela diretriz AllowOverride.

Para utiliza-lo crie um arquivo ".htaccess" no diretório onde você deseja que as regras sejam aplicadas e adicione dentro dele as diretrizes. As regras são aplicadas sem a necessidade de reiniciar o Apache.

Quando utilizar?

Por questões de performance e segurança: NUNCA!!!!!!!!!!!!11...

Obviamente se o htaccess existe é porque há um motivo. Utilize nas seguintes condições:

  • Se sua hospedagem não permitir alterações nas configurações principais do Apache (permissão).
  • Se você precisar permitir que seus usuários possam alterar as configurações do Apache (ex: servidor compartilhado), mas com uma certa limitação (hospedagem é um bom exemplo novamente).

De toda forma evite o uso do htaccess.

Dicas

As dicas abaixo funcionam não só no ".htaccess", mas também no arquivo de configuração principal do Apache (onde é mais recomendável).

Algumas dicas podem necessitar do módulo Mod-Rewrite habilidado.

301 Redirect

O "301 redirect" é a melhor forma de ser fazer um redirecionamento de uma página, além de Search Engine Friendly.

Exemplo 1: Redirecionando todo o website para um outro domínio

Redirect 301 / http://outrodominio.com.br/



Exemplo 2: Redirecionando uma página específica

Redirect 301 /pagina_de.html http://dominio.com.br/pagina_para.html



404 Redirect

Redirecionando erros 404, o famoso "Page not found" (Página não Encontrada), para um outra página.

ErrorDocument 404 /pagina_404_customizada.html



O mesmo vale para redirecionar outras página de erro como 403, 500 e 666. o.O

DirectoryIndex

A diretriz "DirectoryIndex" permite escolher uma lista de recursos/páginas/arquivos que serão retornados para a requisição de um index de diretório. Se o arquivo index não for especificado será feita a listagem do diretório (se for permitido).

Por padrão é procurado pelo "index.html" (ou index.php ou outras extensões mais caóticas).

Exemplo:

  • De http://seudominio.com.br/ para http://seudominio.com.br/index.html
  • De http://seudominio.com.br/diretorio/ para http://seudominio.com.br/diretorio/index.html
DirectoryIndex index.html index.txt index.exe


Negando listagem de diretório

Já que eu comentei, para não permitir a listagem de diretórios adicione o seguinte comando no htaccess.

Options -Indexes


Mudando extensões dos arquivos

Se você quiser migrar/trocar suas páginas *.html para *.php poderá utilizar o seguinte comando.

RedirectMatch 301 (.*)\.html$ http://www.seudominio.com.br$1.php



Só fique esperto com o uso de iframes ;)

Tradução do Google

Traduz o site automaticamente através do Google Translate. Este até que é interessante (apesar de ainda não ter pensado em como poderá ser útil) e encontrei hoje no site da Dreamhost.

Fiz alterações para que seja de Português para outros idiomas e aviso que ainda não testei.

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)-(en|es|it|jp|fr)$ http://www.google.com/translate_c?hl=$2&sl=pt&u=http://seudominio.com.br/$1 [R,NC]



Funciona da seguinte forma, quando alguém acessar "http://seudominio.com.br/-en" ele será traduzido de Português(pt) para Inglês(en) pelo Google Translate.

AccessFileName

Permite alterar o nome do arquivo htaccess (que por padrão é ".htaccess") para qualquer outra coisa como ".config". Esta diretriz na verdade deve ser utilizada no arquivo de configuração principal do Apache.

AccessFileName .config


Make e Makefile

Postado por Yoshio Iwamoto em 25/11/2009

Você que utiliza algum *nix da vida já deve ter passado pelo momento mágico de ter executado o comando make em algum código fonte, não?

O make (GNU make) é uma ferramenta que executa os comandos inclusos dentro de um arquivo. É normalmente utilizado na compilação e instalação de programas.

Uma das vantagens do make é que ele identifica quais partes do programa devem ser recompiladas de acordo com as mudanças efetuadas desde a última compilação.

Dependendo do tamanho do programa pode-se economizar minutos ou horas entre as recompilações, pois não será necessário recompilar o programa inteiro.

Exemplo de uso:

$ make -f arquivo_com_os_comandos

Se você chamar o comando make sem passar nenhum parâmetro ele tentará utilizar o arquivo com nome de Makefile do diretório atual.

É o que normalmente acontece quando você precisa compilar e instalar um programa pelo código fonte.

  • Descompactar o código fonte (se for um "*.tar.gz").
  • Entrar na pasta descompactada. Haverá um arquivo Makefile dentro.
  • Executar o comando "make" para compilar.
  • Executar o comando "make install" como root para instalar.

Makefile

Se você quiser utilizar o comando make só é necessário criar um arquivo Makefile e dentro dele colocar as instruções que o make deve executar.

Formato do Makefile:

regra: dependências...
	comandos
	...

Os comandos são comandos normais do shell (bash). Pode-se colocar vários comandos, porém devem estar identados com tabulações. Isto é importante, não utilize espaços pois não irá funcionar.

A regra é só um nome para identificar um bloco de comandos. Fazendo uma analogia com programação, a "regra" seria semelhante a uma função.

As dependências são os arquivos necessários para a execução dos comandos da regra, o make irá fazer a verificação deles. Também podem ser outras regras que serão chamadas antes da execução dos comandos. Se houver mais de uma dependência elas devem ser separadas com espaços.

Aqui vai um exemplo de um Makefile que compila um programa em C:

program:
	gcc -o meuprograma meuprograma.c

Um exemplo com dependências:

program: cod1.c cod2.c lib1.a
	gcc -c cod1.c cod2.c
	gcc cod1.o cod2.o lib1.a -o program

lib1.a: lib1.c cod3.c
	gcc -c lib1.c cod3.c
	ar rcs lib1.a lib1.o cod3.o
	ranlib lib1.a

Pode-se utilizar variáveis também. A declaração é simples, mas devem ser chamados com a notação "$(variável)". Repare também que elas podem ser concatenadas:

CC=gcc
CFLAGS=-O2
CFLAGS=$(CFLAGS) -Wall

program:
	$(CC) $(CFLAGS) -o program program.c

Olha que legal no Makefile a seguir, advinha o que acontece ao executar o comando `make clean' no terminal?

program: program.c
        gcc -o program program.c

clean:
        rm *.o
        rm program

O que aconteceria também se houvesse um arquivo no diretório atual que se chamasse "clean"? O `make clean' não iria executar a lista de comandos da regra. Para evitar este tipo de conflito utilize a regra ".PHONY":

program: program.c
        gcc -o program program.c

.PHONY: clean
clean:
        rm *.o
        rm program

Agora a regra "clean" será executada mesmo se houver um arquivo no diretório atual com mesmo nome.

API do Twitter para Python

Postado por Yoshio Iwamoto em 14/10/2009

Hoje vou mostrar como fazer uso da API do Twitter para Python, a Python Twitter API. Sua utilização é bem simples e podemos criar vários aplicativos ou scripts para automatizar algumas tarefas no microblog, como o script que fiz no meu último post.

Instalação no Linux
Baixe o código fonte da última versão aqui.

Descompacte com o comando:
$ tar -zxvf python-twitter-XXX.tar.gz

Após descompactar entre no diretório criado e execute o seguinte comando como usuário root:
# python setup.py install


Utilização
Para utilizar a API importe o módulo twitter:

import twitter
...

As principais classes que você deve conhecer são:
twitter.Api
twitter.User
twitter.Status
twitter.DirectMessage

Para iniciar, crie uma instancia da classe twitter.Api:

import twitter
api = twitter.Api()

Com este objeto você pode utilizar os métodos da API que não necessitam de autenticação do usuário. Um Exemplo é o método GetPublicTimeline, que sem parâmetros retorna as últimas 20 mensagens de status dos usuários.

import twitter
api = twitter.Api()
status_list = api.GetPublicTimeline()
for status in status_list:
    print status.user.name

No exemplo anterior o status é um objeto da classe twitter.Status. A classe twitter.Status possui um atributo user que é um objeto da classe twitter.User.

Para realizar a autenticação de um usuário, instancie a classe twitter.Api, porém passando o usuário e a senha como parâmetros:

import twitter
api = twitter.Api(username='joao', password='abc123')

Para enviar uma mensagem utilize o método PostUpdate:

# -*- encoding: utf-8 -*-
import twitter
api = twitter.Api(username='joao', password='abc123')
status = api.PostUpdate('''Yohohoho! Enviei uma mensagem! Mas cuidado
com os limite de 140 caracteres.''')

Repare que ele retorna o status da mensagem enviada.

Várias mensagens contínuas
Um método interessante da API é o PostUpdates, que permite que seja enviada uma mensagem com mais de 140 caracteres. A mensagem na verdade é enviada como se fosse várias mensagens com no máximo 140 caracteres.

Você também pode indicar uma string de continuação no segundo parâmetro, esta string é colocada no final das mensagens para indicar a continuação.

# -*- encoding: utf-8 -*-
import twitter
api = twitter.Api(username='joao', password='abc123')
status = api.PostUpdates('''Yohohoho! Enviei uma mensagem bem grande!
Agora você não precisa se preocupar com o tamanho da mensagem pois
este método irá dividi-la para você em várias mensagens, você também
pode utilizar uma string de continuação ao lado.''', '…')

Obs: Segundo a documentação da API, o Twitter remove as reticências ("...") das strings das mensagem, por isso utilize o caractere UNICODE \u2026 ("…"). Também não ultrapasse o limite dos 150 requests permitidos por hora pelo Twitter.

VIM – Substituir Tab por Espaços

Postado por Ricardo Perez em 6/10/2009

Uma dica muito rápida!

Se você estiver precisando trocar "Tab" por espaços para identação do seu código fonte, como eu preciso para editar alguns scripts python em um servidor, basta fazer o seguinte:

:set tabstop=n // seta para cada tab o numero n de espaços
:set expandtab // troca a tab por espaço

Note que para as tabs já existentes no código estes comandos não funcionarão, para ajusta isto basta fazer:

:retab

Para setar permanentemente esses ajuste em seu Vim basta colocar estes comandos dentro do ~/.vimrc

Monitorando sua internet 3G

Postado por Rafael Sierra em 2/08/2009

Em decorrência da minha mudança de imóvel por conta do meu (em breve) casamento fiquei sem internet. O prédio atual onde moro não tem suporte a cabeamento da Net/Virtua e a Telefônica foi, legalmente, proibida de vender novas assinaturas telefônicas, o que significa que eu não tinha até então internet em casa, e pra resolver isso a sempre sábia @pathiene sugeriu que utilizássemos uma internet 3G qualquer, e como eu já tinha feito um teste com o Claro 3G, que funcionou muito bem por eu estar em um lugar onde geralmente não se tem muita atenção das operadoras de celular, resolvi então ver qual seria a melhor opção, que dentre as disponíveis a OI/Velox se destacou.

O problema começa na assinatura do contrato, quando você lê no mesmo: "...até um limite de 10GB por mês..." caso eu ultrapasse o limite será cobrado R$0,10 por MB adicional, ou R$102,40 por GB adicional, e no caso da Claro com 1GB por mês tendo como punição ao abuso o corte da velocidade de 1Mbps para 128Kbps. Naturalmente, não existe de forma clara e abertamente disponível aos seus clientes (ao menos no caso da Oi, não posso confirmar quanto a outras operadoras) um link como o http://consumo.virtua.com.br que lhe disponibiliza um relatório diário com o seu consumo, bastando saber qual o mac address de seu dispositivo.

Pois bem, para resolver esse problema recorri, naturalmente, à programação e criei um script que para ser adicionado ao crontab que irá gerar um relatório constante do seu consumo. O script é feito em Ruby (ahh Rafael, pq Ruby e não Python/Java/C/PHP??, simples: porque eu quis) e pode ser baixado em http://blog.stiod.com/wp-content/uploads/2009/08/net_counter.rb .

O funcionamento do script é muito simples:
sdm@sdm:~$ ./net_counter.rb -h
Usage: net_counter.rb [OPTIONS]
Utilize este script para mensurar o consumo de sua rede
-i, --interface=val Interface que deve ser analizada. Padrão: ppp0
-f, --file=val Arquivo onde deve ser armazenado os dados.
Evite usar o mesmo arquivo para diferentes interfaces. Padrão: report_ppp0.txt
-h, --help Exibe esta mensagem.

Edite o seu crontab e adicione o comando nele, você pode customizar ele para gerar logs mensais, adicionando o comando net_counter.rb --file /qualquer/lugar/report_ppp0_`date +%m`.txt. Lembre-se apenas de dar permissão de execução no script (chmod +x) e de coloca-lo no PATH do seu crontab (/usr/bin/ costuma servir).

Para saber como esta o consumo da sua rede basta analizar o arquivo report_ppp0.txt ou seja lá qual for o nome que você escolher, o arquivo está disposto da seguinte forma:

  • Primeira linha: Trafego de download total (somatório desde a primeira execução para aquele arquivo)
  • Segunda linha: Trafego de upload total (idem)
  • Terceira linha: Trafego de download desde a última vez que você se conectou
  • Quarta linha: Trafego de upload desde a última vez que você se conectou

Em todos os casos o número sera em bytes, em um post futuro talvez eu faça o script que calcula em K, M ou GB.

Observações:

  • O script utiliza os dados do arquivo /proc/net/dev
  • A internet 3G da Claro e Oi funcionam muito bem em Praia Grande/SP, se você vier passar um feriado aqui, pode trazer seu notebook e modem tranquilamente :)
  • O modem oferecido pela Oi funcionou perfeitamente no Ubuntu 9.04 e foi extremamente simples e intuitiva sua configuração
  • Desculpem pelos 4 meses e 1 dia sem atualização no blog :S
  • Sim, o ultimo post foi de primeiro de abril

Shell Script – Tratamento de querystring como cgi

Postado por Gabriel Verta em 24/03/2009

Como fazemos para pegar os valores de uma querystring rodando um shell script por cgi?

Vamos ao código:


for var in `echo $QUERY_STRING | tr "&" "\t"`
do
key=$(echo $var | tr = " " | awk '{print $1}';);
value=$(echo $var | tr = " " | awk '{print $2}';);
declare "query_$key"="$value";
done

Agora a lógica:

Quando chamamos um script via cgi, este cria a variavel de ambiente QUERY_STRING, que conterá o valor do GET em uma string única. Assim temos que tratar esta string para que tenhamos as variáveis com os valores que enviamos.

Vamos começar com este trecho:

`echo $QUERY_STRING | tr "&" "\t"`

Neste estamos mandando exibir o valor da variável QUERY_STRING e jogando a saida para o comando tr, que faz uma tradução de um texto em outro, transformando todos os & em \t no caso.
E o que é esta ` (crase) antes e depois do comando? Serve para você efetivamente executar um comando do shell, onde o resultado é retornado para o script.

Vamos para a próxima linha do script:

key=$(echo $var | tr = " " | awk '{print $1}';);

A partir desta linha, dentro do for, já temos a variavel var com o valor parametro=valor, então temos que pegar este parametro e valor. Exibimos o valor de var, jogando a saída padrão para o tr novamente, só que agora transformamos = em espaço, para aí jogarmos esta saída em outro programa para separar os argumentos, no caso o awk, onde mandamos exibir somente o primeiro parâmetro, rodando direto no shell seria algo como:


$ awk '{print $1}';
parametro valor
parametro

Digitando parametro e valor no awk e mandando exibir apenas o primeiro parâmetro ele retorna somente o primeiro.

Na linha seguinte do nosso script, a mesma coisa é feita, com a diferença de que o segundo parâmetro é pego para termos o valor e não a chave desta vez.

Agora já temos key com a chave do parâmetro do GET, e value com o valor da chave. Vamos a próxima linha:

declare "query_$key"="$value";

Agora estamos criando a variável com o valor de key com o valor de value. Como assim?

Se no GET tivessemos algo como stiod=nozes, $key teria o valor de stiod e $value o valor nozes. Então estariamos criando uma variável stiod com o valor nozes. Seria algo como se estivessemos digitado stiod=nozes no código. Ou seja, a partir deste momento, com o fim do for, temos uma variável com cada chave do GET com o prefixo "query_", e seus respectivos valores.

Seguindo o exemplo anterior, se tivessemos passado arquivo.sh?stiod=nozes, mandando exibir o valor da variável query_stiod seria exibido o valor nozes (echo $query_stiod)

É isso ai,
;)

Como extrair o conteúdo de um arquivo rpm?

Postado por Gabriel Verta em 16/03/2009

O comando que extrai todo o conteudo de um arquivo rpm, criando as pastas que o rpm criaria a partir do diretório atual:

rpm2cpio arquivo.rpm | cpio -idmv
;)

Link sobre cpio

Postfix II

Postado por pathi em 26/02/2009

Demorou mas chegou!!

Ai está a segunda parte do servidor de email que subi com Postfix + Squirrelmail um tempo atrás...

Instalando o Squirrelmail:

  
  # aptitude install squirrelmail
  # aptitude install php5

  
Quando instalarmos o pacote do squirrelmail, será instalado também o apache2 e outros pacotes e dependências necessárias para o funcionamento dessas ferramentas. 
Depois de instalado, uma das primeiras coisas que temos que fazer, é criar uma espécie de alias para abrir o squirrelmail no browser. Portanto, adicione as duas linhas abaixo no httpd.conf:

  # vim /etc/apache2/httpd.conf
  Alias /webmail "/usr/share/squirrelmail/"
  DirectoryIndex index.php

  Para definir algumas configurações do Squirrelmail, basta usar o comando abaixo. Esse comando abre várias opções de configurações que podemor alterar para deixar o squirrelmail com uma cara mais pessoal. 
  # squirrelmail-configure

  Para acessar o squirrelmail do seu browser, basta usar:
  http://IP.IP.IP.IP/webmail
  ou
  http://www.dominio.com.br/webmail

  Lembrando que a principio, os logins dos usuários são os mesmos usuários que estão criados dentro de /etc/passwd.
  Execute agora o comando que cria a pasta dentro do diretório /etc/skel, para que todos os homes dos novos usuários criados daqui em diante já sejam criados com o diretório Maildir, fundamental para o armazenamento de mensagens no Postfix:

  # maildirmake /etc/skel/Maildir

 Se você já tem usuários criados mas não tem o Maildir dentro do home deles, basta usar o comando abaixo que será criado o Maildir de maneira correta. Caso não seja criado, é bem provável que apareçam erros quando tentar enviar/receber emails:

  # maildirmake /home/usuario/Maildir

  Para trabalhar com o Postfix autenticado usando o módulo SASL e TLS.

  # aptitude install libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail
  # vim /etc/default/saslauthd

  
  Substitua a linha "START=no" por: "START=yes"
E confirme se a linha abaixo está igual:

MECHANISMS="pam"

Também é necessário fazer mais algumas alterações:

  # vim /etc/postfix/sasl/smtpd.conf"

pwcheck_method: saslauthd

mech_list: plain login

Crie o diretório:

# mkdir -p /var/spool/postfix/var/run/saslauthd

  Novamente edite o arquivo e substitua uma linha:

# vim /etc/default/saslauthd
  OPTIONS="-c"  por: OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

  Reinicie o serviço:

  # /etc/init.d/saslauthd restart
    
  Adicione no postfix o  grupo SASL:

  # adduser postfix sasl

  O proximo passo é adicionar o SASL no  Postfix:

  # vim /etc/postfix/main.cf
  
  Adicione as seguintes linhas:

  smtpd_sasl_local_domain =
  smtpd_sasl_auth_enable = yes
  smtpd_sasl_security_options = noanonymous
  broken_sasl_auth_clients = yes
  smtpd_recipient_restrictions = permit_sasl_authenticated,
  permit_mynetworks,
  reject_unauth_destination
  smtpd_tls_auth_only = no

  Reinicie o Postfix:

  # /etc/init.d/postfix reload
  # /etc/init.d/postfix restart

 

E então, desfrute!! :-D

Postfix I

Postado por pathi em 7/01/2009

People,

Esses dias tive que estudar um pouco sobre Postfix para entender marromenos como que funciona um server de email. Então ai vai um passo-a-passo do que eu fiz para subir  esse servidor de email com Postfix usando o squirrelmail para testar os envios e recebimentos dos emails ;-)

Usei Ubuntu Server (não gosto muito mas era o que eu tinha na mão) e gerenciador de pacote aptitude. O mesmo funciona com apt-get se preferir :-p

Primeiramente, vamos instalar os pacotes básicos na máquina. Esses pacotes não são necessariamente só do Postfix.

# aptitude install openssh-server vim-full mutt nmap postfix

Durante a instalação, provavelmente serão feitas algumas perguntas. Por enquanto, apenas dê ENTER para todas elas. Porque assim que a instalação terminar, iremos reconfigurar algumas opções e depois editar o arquivo de configuração direto.

Feita a instalação, vamos reconfigurar algumas opções básicas:

# dpkg-reconfigure postfix

Abaixo, segue um exemplo de configuração que foi definida:

=> OK
=> Internet Site
=> dominio.com.br
=> (em branco)
=> $myhostname, localhost.$mydomain, $mydomain
=> yes
=> 127.0.0.0/8 192.168.1.0/24
=> yes
=> 0
=> +
=> all

Depois que definirmos todas essas configurações, então automaticamente o postfix será recarregado (reload) e reiniciado.
Nesse server básico de Postfix, estou usando a mesma base de usuários comuns do sistema, como usuários que terão email no postfix. Lembrando que todos esses usuários comuns, são os que possuem ID maior que 1000 e estão dentro de /etc/passwd.

Para esse primeiro teste, vou adicionar um usuário novo no sistema:

# adduser joao

Como o postfix já está instalado e com uma pré-configuração, então vamos enviar alguns emails entre os usuários comuns do sistema. Para isso, vamos usar o telnet mesmo:

$ telnet localhost 25

HELO smtp.dominio.com.br
MAIL From: user@dominio.com.br
RCPT to: joao@dominio.com.br
DATA
Mensagem do email.
.
QUIT

Como estamos fazendo tudo na máquina local por enquanto, então usei um telnet localhost na porta 25. Na linha HELO como o próprio nome já fala, estou dando um "Olá" para o meu server de email e domínio. Na linha MAIL From estou avisando qual o usuário que irá enviar o email e na linha RCPT to está o usuário que irá receber o email. Para escrever a mensagem, chamamos o DATA e então basta escrever o que você quiser. Para finalizar a mensagem, basta dar um . único e ele entenderá como fim da mensagem. E para finalizar o telnet, basta dar um QUIT.
É importante prestar atenção nas palavras e letras maiúsculas.

Quando enviarmos esse email para o joao@dominio.com.br, será criado um arquivo com o nome do usuário em /var/mail/.
Por exemplo:

# ls /var/mail
joao

Então para ler o email, pode-se dar um cat nesse arquivo, ou então usar uma ferramenta chamada mutt, que lê emails em linha de comando.

# cat /var/mail/joao
ou
# su joao
$ mutt

Abaixo, segue a estrutura do arquivo /etc/hostname:

# cat /etc/hostname
dominio.com.br

Abaixo, segue a estrutura do arquivo /etc/hosts:

# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 dominio.com.br dominio.com.br
IP.ex.ter.no dominio.com.br dominio.com.br

A estrutura desses arquivos é importante, porque dependendo dos casos, o hostname e o domínio tem que estar com o mesmo nome.

O arquivo de configuração do Postfix está localizado em /etc/postfix/main.cf.
Abaixo vou colocar umas linhas básicas desse arquivo de configuração para analisar o conteúdo. Não vou explicar o que todas as linhas fazem, mas sites como o do próprio postfix explica o conteúdo de cada linha e muitas vezes cita exemplos =p

# vim /etc/postfix/main.cf
myhostname = IP.ex.ter.no.dominio.com.br
mydomain = dominio.com.br
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, $mydomain
relayhost =
relay_domains = $mydomain
mynetworks = 127.0.0.0/8 192.168.1.0/24
home_mailbox = Maildir/
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0

Vamos configurar os serviços de pop e imap. Para isso, será necessário instalar os seguintes pacotes:

# aptitude install courier-pop courier-pop-ssl
# aptitude install courier-imap courier-imap-ssl

Quando instalarmoas esses pacotes, será criado um diretório courier dentro do /etc/ e dentro desse diretório, teremos diversos arquivos. Antesde editar os arquivos e fazer as alterações, aconselho renomear os arquivos originais:

# cd /etc/courier
# mv imapd.pem imapd.pem.old
# mv pop3d.pem pop3d.pem.old

O próximo passo, é editar os arquivos imap.cnf e pop3d.cnf e alterar as informações necessárias. Por exemplo coloque em Country=BR, State=Sao Paulo e etc:

# vim imapd.cnf
# vim pop3d.cnf

Quando os arquivos forem alterados, devemos devemos criar novamente os arquivos imapd.pem e pop3d.pem com os comandos:

# mkimapdcert
# mkpop3dcert

O próximo passo agora é instalar o squirrelmail, que é uma ferramenta para testar o envio e recebimento de mensagens de email através de uma interface web mesmo. Se preferir, pode usar alguma outra ferramenta, como eu já tinha comentado antes:

# aptitude install squirrelmail
# aptitude install php5

Continua... :-p

Links de Referências:

http://www.postfix.org/documentation.html

https://help.ubuntu.com/7.04/server/C/postfix.html

http://virtual01.lncc.br/~licht/linux/servidores.postfix.arq.html

http://www.gdhpress.com.br/redeseservidores/leia/index.php?p=cap10-2

Gerando pacotes de atualização com base no SVN

Postado por Rafael Monteiro em 27/11/2008

Olá galera,

Hoje vou dar uma dica sobre geração de pacotes utilizando o Subversion.

O cenário é o seguinte: você desenvolve um projeto que utiliza o SVN como controlador de versões.
Periodicamente, você deve enviar pacotes para o cliente com atualizações do sistema (novas implementações, correções, ajustes, enfim...).
Entretanto, tais pacotes são incrementais, já que não é necessário enviar toda a estrutura do sistema a cada atualização.

Pelo Windows, é possível fazer a exportação dos arquivos mediante a utilização da ferramenta TortoiseSVN.
Através da opção Log, é obtido o histórico das revisões. Com base nesse histórico, podemos selecionar a última revisão que fora enviada ao cliente e a revisão desejada, comparar as revisões (a fim de obter os arquivos alterados) e, finalmente, exportá-los para uma pasta que manterá a estrutura do sistema.

Continue Reading »

Av. Conselheiro Nébias, 368A, Cj. 413
Vila Mathias - Santos - SP
Telefone: (13) 3345-4580

© 2008 - 2009 Stiod. Todos os direitos reservados.