<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Claudinei Pereira [Blog]</title><link>http://blog.claudineipereira.com/</link><description>Blog Pessoal</description><atom:link href="http://blog.claudineipereira.com/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>pt_br</language><lastBuildDate>Tue, 23 Apr 2024 12:03:02 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>VPS: configuração básica</title><link>http://blog.claudineipereira.com/vps-configuracao-basica/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;div id="tutorial"&gt;

&lt;p&gt;Este artigo integra o tutorial em três partes sobre como 
&lt;strong&gt;&lt;a href="http://blog.claudineipereira.com/o-que-e-vps/" title="VPS: O que é?"&gt;Configurar e Administrar um VPS&lt;/a&gt;&lt;/strong&gt;
para diversos usos, como hospedagem de sites, backups, etc. Para ter acesso às 
outras partes visite os links a seguir:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/vps-instalacao-nginx-php5-fpm/" title="Instalação e configuração do nginx com php5-fpm"&gt;VPS: Servidor Web nginx com php5-fpm&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/vps-backup-remoto/" title="Configuração de um VPS para backup remoto"&gt;VPS: backup remoto&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;O presente texto objetiva documentar os passos gerais para a configuração inicial
de um &lt;strong&gt;VPS&lt;/strong&gt; (Virtual Private Server). Optou-se por escolher softwares e 
configurações que ofereçam um consumo baixo de memória, visto que o servidor de 
teste possui 128 MB de memória RAM disponível.&lt;/p&gt;
&lt;h3&gt;Segurança Básica&lt;/h3&gt;
&lt;p&gt;Os primeiros passos na configuração do servidor devem ser aqueles relacionados
à segurança básica. É necessária a criação de um usuário que executará tarefas
administrativas por intermédio do comando &lt;strong&gt;sudo&lt;/strong&gt;. O acesso seguro será feito
pelo servidor &lt;strong&gt;dropbear&lt;/strong&gt; (mais leve que o &lt;strong&gt;openssh&lt;/strong&gt;) via par de chaves 
pública/privada e o firewall &lt;strong&gt;iptables&lt;/strong&gt; deixará abertas apenas as portas
necessárias.&lt;/p&gt;
&lt;h3&gt;Senhas e Usuários&lt;/h3&gt;
&lt;p&gt;Fazer o primeiro login com a senha de root oferecida pela empresa. Mudar a
senha do root para uma forte (que pode ser gerada no site www.random.org).&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# passwd
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Criar um usuário para administração, instalar o programa &lt;strong&gt;sudo&lt;/strong&gt; (caso ainda
não esteja instalado) e adicionar o usuário ao grupo &lt;strong&gt;sudo&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;adduser&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;usu&lt;/span&gt;á&lt;span class="nv"&gt;rio&lt;/span&gt;
#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;upgrade&lt;/span&gt;
#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;sudo&lt;/span&gt;
#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;adduser&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;usu&lt;/span&gt;á&lt;span class="nv"&gt;rio&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;sudo&lt;/span&gt;
#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;visudo&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;O comando &lt;strong&gt;visudo&lt;/strong&gt; abre o arquivo &lt;em&gt;/etc/sudoers&lt;/em&gt; para edição. A seguinte
linha deve ser descomentada e alterada de:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# %sudo ALL=NOPASSWD: ALL&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;para:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;%sudo&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ALL&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;ALL&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ALL
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Assim, já é possível sair da conta root e fazer login com o novo usuário
paraos próximos passos.&lt;/p&gt;
&lt;h3&gt;SSH&lt;/h3&gt;
&lt;h4&gt;Instalação do Dropbear&lt;/h4&gt;
&lt;p&gt;O &lt;strong&gt;openssh&lt;/strong&gt; será substituído pelo &lt;strong&gt;dropbear&lt;/strong&gt; que, por sua vez, será
gerenciado pelo &lt;strong&gt;xinetd&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# apt-get update &amp;amp;&amp;amp; apt-get upgrade
# apt-get install dropbear
# apt-get install xinetd
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Configurar o &lt;strong&gt;xinetd&lt;/strong&gt;, criando o arquivo &lt;em&gt;/etc/xinetd.d/dropbear&lt;/em&gt; com o
seguinte conteúdo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;service&lt;span class="w"&gt; &lt;/span&gt;dropbear
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;socket_type&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;stream&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;only_from&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.0.0.0&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nb"&gt;wait&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;no&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;user&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;root&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;protocol&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;server&lt;/span&gt;&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/usr/sbin/dropbear&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;server_args&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;-w&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;disable&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;no&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;port&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;número-da-porta&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;unlisted&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;É interessante mudar o valor de &lt;em&gt;port&lt;/em&gt; para uma porta de acesso que seja
diferente da padrão (22). Talvez 2222 ou alguma porta mais alta, como 50000.
Os valores de &lt;em&gt;server_args&lt;/em&gt; significam:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;-i = Roda como serviço&lt;/li&gt;
&lt;li&gt;-w = Não permite login do usuário root&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Parar o servidor &lt;strong&gt;openssh&lt;/strong&gt;, evitar que ele inicie ao boot e reiniciar o
&lt;strong&gt;xinetd&lt;/strong&gt; para que o &lt;strong&gt;dropbear&lt;/strong&gt; passe a ser o servidor ssh padrão:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# invoke-rc.d ssh stop
# update-rc.d -f ssh remove
# invoke-rc.d xinetd restart
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Login via chaves pública/privada&lt;/h4&gt;
&lt;p&gt;O login utilizando-se de um par de chaves pública/privada adiciona uma camada 
extra de segurança. Caso ainda não se possua um par de chaves, deve gerá-lo localmente 
(assumindo-se que há uma distribuição GNU/Linux instalada com &lt;strong&gt;openssh&lt;/strong&gt;):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;ssh-keygen&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;dsa
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Isso criará duas chaves, uma pública (&lt;em&gt;id_dsa.pub&lt;/em&gt;) e uma privada (&lt;em&gt;id_dsa&lt;/em&gt;)
no diretório &lt;em&gt;~/.ssh&lt;/em&gt;. Será requisitada uma senha, que pode ser definida ou
não. &lt;/p&gt;
&lt;p&gt;Caso se possua uma chave privada, basta extrair a pública com o seguinte comando:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;ssh-keygen&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;~/.ssh/id_rsa&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;~/.ssh/id_rsa.pub
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Em poder da chave pública, deve-se copiá-la para o servidor:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;scp&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;porta&lt;span class="w"&gt; &lt;/span&gt;~/.ssh/id_dsa.pub&lt;span class="w"&gt; &lt;/span&gt;usuário@servidor:~
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Fazer login no servidor e adicionar o conteúdo do arquivo &lt;em&gt;id_dsa.pub&lt;/em&gt; ao
arquivo &lt;em&gt;~/.ssh/authorized_keys&lt;/em&gt;, configurando as permissões necessárias:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;ssh&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;porta&lt;span class="w"&gt; &lt;/span&gt;usuário@servidor
$&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;~/.ssh
$&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;~/.ssh
$&lt;span class="w"&gt; &lt;/span&gt;touch&lt;span class="w"&gt; &lt;/span&gt;~/.ssh/authorized_keys
$&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;600&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;~/.ssh/authorized_keys
$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;~/id_dsa.pub&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;~/.ssh/authorized_keys
$&lt;span class="w"&gt; &lt;/span&gt;rm&lt;span class="w"&gt; &lt;/span&gt;~/id_dsa.pub
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Modificar o arquivo &lt;em&gt;/etc/xinetd.d/dropbear&lt;/em&gt; para permitir somente o login sem
senha, adicionando a opção &lt;em&gt;-s&lt;/em&gt; a &lt;em&gt;server_args.&lt;/em&gt; Reiniciar o &lt;strong&gt;xinetd&lt;/strong&gt; para
que a mudança tenha efeito.&lt;/p&gt;
&lt;h3&gt;Firewall&lt;/h3&gt;
&lt;p&gt;A configuração do Firewall seguinte libera apenas as portas necessárias (por
enquanto, 80 para o servidor web e a porta para acesso seguro). Colocar o
seguinte conteúdo no arquivo &lt;em&gt;/etc/iptables.up.rules&lt;/em&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;*filter

&lt;span class="c1"&gt;# http://articles.slicehost.com/2010/4/30/ubuntu-lucid-setup-part-1&lt;/span&gt;

&lt;span class="c1"&gt;#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;lo&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;ACCEPT
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;!&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;lo&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;127&lt;/span&gt;.0.0.0/8&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;REJECT

&lt;span class="c1"&gt;#  Accepts all established inbound connections&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;state&lt;span class="w"&gt; &lt;/span&gt;--state&lt;span class="w"&gt; &lt;/span&gt;ESTABLISHED,RELATED&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;ACCEPT

&lt;span class="c1"&gt;#  Allows all outbound traffic&lt;/span&gt;
&lt;span class="c1"&gt;#  You can modify this to only allow certain traffic&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;OUTPUT&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;ACCEPT

&lt;span class="c1"&gt;# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;--dport&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;80&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;ACCEPT
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 443 -j ACCEPT&lt;/span&gt;

&lt;span class="c1"&gt;# UN-COMMENT THESE IF YOU USE INCOMING MAIL!&lt;/span&gt;

&lt;span class="c1"&gt;# Allows POP (and SSL-POP)&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 110 -j ACCEPT&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 995 -j ACCEPT&lt;/span&gt;

&lt;span class="c1"&gt;# SMTP (and SSMTP)&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 25 -j ACCEPT&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 465 -j ACCEPT&lt;/span&gt;

&lt;span class="c1"&gt;# IMAP (and IMAPS)&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 143 -j ACCEPT&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -p tcp --dport 993 -j ACCEPT&lt;/span&gt;

&lt;span class="c1"&gt;#  Allows SSH connections (only 3 attempts by an IP every minute, drop the rest to prevent SSH attacks)&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;--dport&lt;span class="w"&gt; &lt;/span&gt;PORTA&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;state&lt;span class="w"&gt; &lt;/span&gt;--state&lt;span class="w"&gt; &lt;/span&gt;NEW&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;recent&lt;span class="w"&gt; &lt;/span&gt;--set&lt;span class="w"&gt; &lt;/span&gt;--name&lt;span class="w"&gt; &lt;/span&gt;DEFAULT&lt;span class="w"&gt; &lt;/span&gt;--rsource
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;--dport&lt;span class="w"&gt; &lt;/span&gt;PORTA&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;state&lt;span class="w"&gt; &lt;/span&gt;--state&lt;span class="w"&gt; &lt;/span&gt;NEW&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;recent&lt;span class="w"&gt; &lt;/span&gt;--update&lt;span class="w"&gt; &lt;/span&gt;--seconds&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--hitcount&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--name&lt;span class="w"&gt; &lt;/span&gt;DEFAULT&lt;span class="w"&gt; &lt;/span&gt;--rsource&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;DROP
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;state&lt;span class="w"&gt; &lt;/span&gt;--state&lt;span class="w"&gt; &lt;/span&gt;NEW&lt;span class="w"&gt; &lt;/span&gt;--dport&lt;span class="w"&gt; &lt;/span&gt;PORTA&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;ACCEPT

&lt;span class="c1"&gt;# Allow ping&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;icmp&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;icmp&lt;span class="w"&gt; &lt;/span&gt;--icmp-type&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;ACCEPT

&lt;span class="c1"&gt;# log iptables denied calls (Can grow log files fast!)&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7&lt;/span&gt;

&lt;span class="c1"&gt;# Reject all other inbound - default deny unless explicitly allowed policy&lt;/span&gt;
&lt;span class="c1"&gt;#-A INPUT -j REJECT&lt;/span&gt;
&lt;span class="c1"&gt;#-A FORWARD -j REJECT&lt;/span&gt;

&lt;span class="c1"&gt;# It's safer to just DROP the packet&lt;/span&gt;
-A&lt;span class="w"&gt; &lt;/span&gt;INPUT&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;DROP
-A&lt;span class="w"&gt; &lt;/span&gt;FORWARD&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;DROP

COMMIT
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;IMPORTANTE: mudar o valor de PORTA para a porta que reflita sua configuração de
acesso do dropbear. Para que as regras tenham efeito a cada boot, é necessário 
adicionar o script na inicialização. Para tanto, adicionar um arquivo com o 
seguinte conteúdo em &lt;em&gt;/etc/network/if-pre-up./iptables&lt;/em&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
/sbin/iptables-restore&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;&lt;span class="w"&gt; &lt;/span&gt;/etc/iptables.up.rules
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Também é necessário fazê-lo executável com o comando:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;chmod&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;network&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;up&lt;/span&gt;.&lt;span class="nv"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;iptables&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Logs&lt;/h3&gt;
&lt;p&gt;O logwatch é uma ferramenta útil para acompanhar os logs do sistema via email.
Instalação:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# apt-get install logwatch
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Para configuração, verificar os arquivos de exemplo em 
&lt;em&gt;/usr/share/logwatch/default.conf/&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;Servidor de email&lt;/h3&gt;
&lt;p&gt;Por fim, é interessante deixar um servidor de email rodando, para receber via
email os logs do sistema gerados pelo logwatch. Para tanto, vamos instalar o 
exim configurado com uma conta comum do gmail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instalação:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# apt-get install exim4-daemon-light mailutils
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Configuração:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# dpkg-reconfigure exim4-config
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;passwd.client&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="nv"&gt;@gmail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;senha&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;exim4.conf.localmacros&lt;/strong&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;MAIN_TLS_ENABLE = 1
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Para outros detalhes sobre este tipo de configuração de email, verificar a página
&lt;a href="https://wiki.debian.org/GmailAndExim4" title="GmailAndExim4"&gt;GmailAndExim4&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Outras ações&lt;/h3&gt;
&lt;h4&gt;Syslog&lt;/h4&gt;
&lt;p&gt;Para gerenciar os logs do sistema iremos utilizar o daemon syslog. O VPS de teste
possui o rsyslogd, então vamos removê-lo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# invoke-rc.d rsyslog stop
# update-rc.d -f rsyslog remove
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Instalar syslogd:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# apt-get install inetutils-syslogd
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Configurar syslogd:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# invoke-rc.d inetutils-syslogd stop&lt;/span&gt;
&lt;span class="c1"&gt;# rm -rf /var/log/*.log&lt;/span&gt;
&lt;span class="c1"&gt;# rm -rf /var/log/mail.*&lt;/span&gt;
&lt;span class="c1"&gt;# rm -rf /var/log/debug&lt;/span&gt;
&lt;span class="c1"&gt;# rm -rf /var/log/syslog&lt;/span&gt;
&lt;span class="c1"&gt;# rm -rf /var/log/fsck&lt;/span&gt;
&lt;span class="c1"&gt;# rm -rf /var/log/news&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Arquivo de configuração do syslog (&lt;em&gt;/etc/syslog.conf&lt;/em&gt;):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;*.*&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;cron&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;cron&lt;/span&gt;&lt;span class="o"&gt;.*&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="o"&gt;-/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cron&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;&lt;span class="o"&gt;.*&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="o"&gt;-/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Adicionar ao logrotate (/etc/logrotate.d/inetutils-syslogd):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;cron&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;weekly&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;missingok&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;notifempty&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;compress&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;sharedscripts&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;postrotate&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;init&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;inetutils&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;syslogd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reload&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb nb-Type"&gt;null&lt;/span&gt;
&lt;span class="n"&gt;endscript&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Reiniciar syslog:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# invoke-rc.d inetutils-syslogd start
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Remoção de pacotes&lt;/h4&gt;
&lt;p&gt;Alguns pacotes pré instalados no VPS não são necessários, ou serão substituídos
por outros, então vamos removê-los:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gh"&gt;#&lt;/span&gt; apt-get remove bind9
&lt;span class="gh"&gt;#&lt;/span&gt; apt-get remove 'samba*'
&lt;span class="gh"&gt;#&lt;/span&gt; apt-get remove portmap
&lt;span class="gh"&gt;#&lt;/span&gt; invoke-rc.d apache2 stop
&lt;span class="gh"&gt;#&lt;/span&gt; update-rc.d -f apache2 remove
&lt;span class="gh"&gt;#&lt;/span&gt; apt-get remove 'apache2*'
&lt;span class="gh"&gt;#&lt;/span&gt; invoke-rc.d nscd stop
&lt;span class="gh"&gt;#&lt;/span&gt; update-rc.d -f nscd remove
&lt;span class="gh"&gt;#&lt;/span&gt; apt-get remove nscd  
&lt;span class="gh"&gt;#&lt;/span&gt; invoke-rc.d sendmail stop
&lt;span class="gh"&gt;#&lt;/span&gt; update-rc.d -f sendmail remove
&lt;span class="gh"&gt;#&lt;/span&gt; apt-get remove 'sendmail*'
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Locales e tempo do servidor&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# dpkg-reconfigure locales
# dpkg-reconfigure tzdata
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Mudar Shel&lt;/h4&gt;
&lt;p&gt;Para mudar o shell de bash para mksh:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;# apt-get install mksh
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Mudar &lt;em&gt;/etc/passwd&lt;/em&gt; trocando o bash pelo mksh.&lt;/p&gt;
&lt;h3&gt;Conclusão&lt;/h3&gt;
&lt;p&gt;Estes foram os passos inicais para configurar um VPS de 128 mb, procurando deixá-lo
preparado para a instalação de outros servidores (web, base de dados, backup).
Ãpós o conjunto de instruções relatadas neste artigo, o VPS em questão está
consumindo 15 mb de memória RAM, deixando espaço para um servidor web com suporte
a PHP, que será o foco do próximo tutorial.&lt;/p&gt;</description><category>administração</category><category>configuração</category><category>setup</category><category>tutorial</category><category>virtual private server</category><category>vps</category><guid>http://blog.claudineipereira.com/vps-configuracao-basica/</guid><pubDate>Thu, 16 Apr 2015 04:00:00 GMT</pubDate></item><item><title>VPS: O que é?</title><link>http://blog.claudineipereira.com/o-que-e-vps/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;div id="tutorial"&gt;

&lt;p&gt;O tutorial ao qual esta introdução se refere foi dividido em trê partes e
tem o objetivo de mostrar como &lt;strong&gt;Configurar e Administrar um VPS&lt;/strong&gt;
para diversos usos, como hospedagem de sites, backups, etc. Para ter acesso às 
partes visite os links a seguir:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/vps-configuracao-basica/" title="Configuração básica de um VPS"&gt;VPS: Configuração Básica&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/vps-instalacao-nginx-php5-fpm/" title="Instalação e configuração do nginx com php5-fpm"&gt;VPS: Servidor Web nginx com php5-fpm&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/vps-backup-remoto/" title="Configuração de um VPS para backup remoto"&gt;VPS: backup remoto&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;Um VPS (do inglês &lt;em&gt;Virtual Private Server&lt;/em&gt;) é uma máquina virtual que executa
um sistema operacional completo. É instalada em um hardware real que pode trazer
várias máquinas virtuais rodando ao mesmo tempo dividindo os recursos existentes
entre si. Podem ser utilizados de diversas maneiras, sendo a hospedagem de websites 
um dos usos mais correntes. &lt;/p&gt;
&lt;p&gt;A utilização de um VPS requer um certo conhecimento do sistema operacional em uso, 
visto que o administrador precisa executar tarefas pertinentes ao gerenciamento 
de usuários, instalação, configuração e atualização de pacotes, segurança, etc. 
O acesso a essas máquinas, via de regra, é feito por SSH (Secure SHell) e, nesta
modalidade de acesso, as ações nelas executadas são por linha de comando. &lt;/p&gt;
&lt;p&gt;Eu adquiri um VPS em 2011, com o intuito de aprendizado e para hospedar alguns
websites. Ele possui 256 mb de memória RAM disponível, 10 gb de disco rígido e
transferência mensal de 250 gb. Ele roda atualmente um servidor de banco da 
dados (MySQL) e um servidor web (nginx) com suporte a PHP. Com esta configuração
possuo um website pessoal (HTML + CSS), este blog (HTML + CSS), um website de
empresa (PHP) e um ambiente virtual de aprendizagem (PHP + MySQL).&lt;/p&gt;
&lt;p&gt;O que me motivou a escrever este conjunto de artigos foi a obtenção de mais
uma máquina virtual, desta vez para configurar um servidor de backup remoto. 
Resolvi escrevê-los para referência pessoal futura e também para compartilhar
o conhecimento que adquiri durante o processo de administração destes sistemas.&lt;/p&gt;
&lt;p&gt;Caso alguém tenha interesse adquirir uma máquina virtual para aprendizado,
pode obter uma na mesma empresa em que adquiri a que me servirá de backup remoto:
a &lt;a href="http://u.claudineipereira.com/ramnode" title="RamNode OpenVZ e KVM VPS's"&gt;RamNode&lt;/a&gt;. Por 15 doláres AO ANO é possível adquirir um VPS com
128 mb de memória RAM, 12 gb de espaço em disco e 500 gb de transferência mensal.&lt;/p&gt;
&lt;p&gt;Vamos botar a mão na massa? :)&lt;/p&gt;</description><category>administração</category><category>configuração</category><category>setup</category><category>tutorial</category><category>virtual private server</category><category>vps</category><guid>http://blog.claudineipereira.com/o-que-e-vps/</guid><pubDate>Thu, 09 Apr 2015 01:00:00 GMT</pubDate></item><item><title>Google Apps: Configuração de DKIM</title><link>http://blog.claudineipereira.com/google-apps-configuracao-de-dkim/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;div id="tutorial"&gt;
&lt;p&gt;Este artigo integra o tutorial em duas partes sobre como
&lt;strong&gt;configurar SPF e DKIM para os emails do 
&lt;a href="http://blog.claudineipereira.com/google-apps-emails-personalizados-para-seu-dominio/" title="Google Apps: Emails personalizados para seu domínio"&gt;Google Apps&lt;/a&gt;
&lt;/strong&gt; de forma a demonstrar sua legitimidade. Para ter acesso à outra 
parte visite o link a seguir:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/google-apps-configuracao-de-spf/" title="Configuração de SPF para o Google Apps"&gt;Google Apps: Configuração de SPF&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;A configuração de &lt;a href="http://www.google.com/support/a/bin/answer.py?answer=174124" title="Autenticar e-mails com uma chave de domínio"&gt;DKIM&lt;/a&gt; (do inglês &lt;em&gt;DomainKeys Identified Mail&lt;/em&gt;) é
outra ferramenta que inibe a utilização de determinado domínio de forma
não lícita por spammers. Consiste em adicionar uma assinatura digital aos 
email, por meio de um &lt;a href="http://cartilha.cert.br/conceitos/sec8.html#subsec8.2" title="Cartilha de segurança do CERT"&gt;par de chaves pública e privada&lt;/a&gt;. Com esta
configuração, cada email é assinado no servidor de origem pela chave
privada e, em seguida, a assinatura é verificada pelo servidor de 
destino por meio da chave pública disponível vi DNS.&lt;/p&gt;
&lt;p&gt;Geralmente, ao configurarmos um servidor de emails, as chaves são criadas 
no próprio servidor. A chave privada fica gravada num arquivo protegido
no sistema de arquivos da máquina e a chave pública é publicada como
registro DNS do tipo TXT. Já no Google Apps, a geração das chaves é feita 
via interface de administração do domínio. O caminho é o que se segue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logar na conta de administração do Google Apps e clicar no link 
  &lt;em&gt;Administrar este domínio&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Clicar no menu &lt;em&gt;Ferramentas Avançadas&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Clicar no link &lt;em&gt;Configurar autenticação de e-mails (DKIM)&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Clicar no link &lt;em&gt;Gerar novo registro&lt;/em&gt;. Abrirá uma caixa de diálogo
  perguntado sobre o "selecionador de prefixo". É uma configuração opcional
  e pode ser deixada no padrão (&lt;em&gt;google&lt;/em&gt;). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Após os passos anteriores, a chave pública é informada, tendo o seguinte
formato:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;v=DKIM1; k=rsa; p=VALOR-DA-CHAVE
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Também é informado o "selecionador de prefixo", por padrão:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;google._domainkey
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Devemos atualizar o DNS com um registro TXT com esses valores, sendo que
o selecionador deve ser informado como subdomínio. Após a atualização,
a propagação da informação pode levar até 48 horas. Para verificar se foi
feita a propagação, podemos utilizar o comando &lt;strong&gt;host&lt;/strong&gt; no Linux ou
o &lt;strong&gt;nslookup&lt;/strong&gt; no Windows. No Linux, o comando é o seguinte:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;host&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;TXT&lt;span class="w"&gt; &lt;/span&gt;google._domainkey.dominio.com&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;.8.8.8
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;No Windows:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;nslookup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;TXT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_domainkey&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dominio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m m-Double"&gt;8.8.8.8&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Conclusão&lt;/h4&gt;
&lt;p&gt;Tanto a configuração de SPF quanto de DKIm são desejáveis e até mesmo
necessárias para demonstrar a legitimidade dos emails enviados por um
domínio, aumentando sua proteção contra uso indevido por spammers. O
Google Apps facilita as configurações, ficando a cargo do administrador
de domínio as alterações de DNS necessárias, conforme mostradas neste tutorial. &lt;/p&gt;</description><category>configuração</category><category>dkim</category><category>domínio</category><category>email</category><category>google apps</category><category>tutorial</category><guid>http://blog.claudineipereira.com/google-apps-configuracao-de-dkim/</guid><pubDate>Wed, 06 Jul 2011 11:40:00 GMT</pubDate></item><item><title>Google Apps: Configuração de SPF</title><link>http://blog.claudineipereira.com/google-apps-configuracao-de-spf/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;div id="tutorial"&gt;
&lt;p&gt;Este artigo integra o tutorial em duas partes sobre como
&lt;strong&gt;configurar o SPF e DKIM para os emails do 
&lt;a href="http://blog.claudineipereira.com/google-apps-emails-personalizados-para-seu-dominio/" title="Google Apps: Emails personalizados para seu domínio"&gt;Google Apps&lt;/a&gt;
&lt;/strong&gt; de forma a demonstrar sua legitimidade. Para ter acesso à outra 
parte visite o link a seguir:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/google-apps-configuracao-de-dkim/" title="Configuração de DKIM para o Google Apps"&gt;Google Apps: Configuração de DKIM&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;A configuração de &lt;a href="http://www.google.com/support/a/bin/answer.py?answer=33786" title="Definição de registros SPF"&gt;SPF&lt;/a&gt; (do inglês &lt;em&gt;Sender Policy Framework&lt;/em&gt;) permite
ao administrador do domínio autorizar determinados servidores para envio
de emails. Desta maneira, o servidor que recebe a mensagem pode verificar
que o servidor que a enviou foi autorizado pelo detentor do domínio. &lt;/p&gt;
&lt;p&gt;Ao utilizarmos o Google Apps para email e não termos o SPF configurado,
quem recebe o email pode verificar conteúdo parecido com o seguinte nos
cabeçalhos:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;Received&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nl"&gt;SPF&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;neutral&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;209.85.210.48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;neither&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permitted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="n"&gt;nor&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;denied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;best&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;guess&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="nv"&gt;@dominio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;209.85.210.48&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Authentication&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nl"&gt;Results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;spf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;neutral&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;209.85.210.48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;neither&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permitted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nor&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;denied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;best&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="n"&gt;guess&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="nv"&gt;@dominio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ou seja, o servidor que recebeu o email não pôde determinar se a máquina
que o enviou era autorizada ou não pelo domínio para envio de emails, 
dando a ele uma classificação neutra (&lt;em&gt;spf=neutral&lt;/em&gt;). Pode ocorrer que 
emails com SPF neutro acabem sendo marcados como spam por certos servidores 
receptores, principalmente se o volume de mensagens enviadas for relativamente 
grande.&lt;/p&gt;
&lt;p&gt;Para configurar o SPF para o Google Apps devemos publicar um registro
&lt;a href="http://pt.wikipedia.org/wiki/Domain_Name_System" title="Domain Name System"&gt;DNS&lt;/a&gt; do tipo TXT. Como há variações nos gerenciadores de DNS para
domínios, indicaremos somente a linha a ser adicionada ao registro:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;v=spf1 include:_spf.google.com ~all
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Deve-se esperar um tempo para que o DNS seja propagado (até 48 horas).
Para verificar se o registro já está ativo, podemos usar o com o comando 
&lt;strong&gt;host&lt;/strong&gt; no terminal do Linux:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;host&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;TXT&lt;span class="w"&gt; &lt;/span&gt;dominio.com
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;No Windows, o comando é o &lt;strong&gt;nslookup&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;nslookup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;TXT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;dominio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m m-Double"&gt;8.8.8.8&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Com o registro TXT publicado e funcionando, ao enviarmos um email o
receptor poderá verificar o cabeçalho, que agora terá conteúdo parecido
com o seguinte, indicando que o teste de SPF teve êxito (&lt;em&gt;pass&lt;/em&gt;):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;Received&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nl"&gt;SPF&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="nv"&gt;@dominio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;designates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="mf"&gt;209.85.210.48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permitted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;209.85.210.48&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Authentication&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nl"&gt;Results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;spf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nl"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="nv"&gt;@dominio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;designates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;209.85.210.48&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permitted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>configuração</category><category>domínio</category><category>email</category><category>google apps</category><category>spf</category><category>tutorial</category><guid>http://blog.claudineipereira.com/google-apps-configuracao-de-spf/</guid><pubDate>Wed, 06 Jul 2011 11:35:00 GMT</pubDate></item><item><title>Google Apps: Emails personalizados para seu domínio</title><link>http://blog.claudineipereira.com/google-apps-emails-personalizados-para-seu-dominio/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;div id="tutorial"&gt;
&lt;p&gt;O tutorial ao qual esta introdução se refere foi dividido em duas partes e
tem o objetivo de mostrar como &lt;strong&gt;configurar  SPF e DKIM para os emails do 
Google Apps&lt;/strong&gt; de forma a garantir sua legitimidade. Para ter acesso às 
partes visite os links a seguir:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/google-apps-configuracao-de-spf/" title="Configuração de SPF para o Google Apps"&gt;Google Apps: Configuração de SPF&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="http://blog.claudineipereira.com/google-apps-configuracao-de-dkim/" title="Configuração de DKIM para o Google Apps"&gt;Google Apps: Configuração de DKIM&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Quem deseja dar um aspecto mais profissional ao seu blog, site ou quer
ter endereços de &lt;strong&gt;email&lt;/strong&gt; personalizados deve, inevitavelmente, investir 
num &lt;strong&gt;domínio próprio&lt;/strong&gt;. Domínios &lt;em&gt;.com&lt;/em&gt; custam cerca de R$ 18,00 ao ano, 
os &lt;em&gt;.info&lt;/em&gt; custam menos da metade deste valor e há até mesmo os gratuitos 
como os oferecidos pelo &lt;a href="http://www.co.cc/" title="Domínios gratuitos"&gt;co.cc&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;img alt="google-apps-logo" src="http://blog.claudineipereira.com/images/google-apps-logo.jpg" title="O Google Apps pode ser utilizado para prover emails, documentos, sites e  agenda."&gt;
&lt;br&gt;&lt;small&gt;&lt;em&gt;&lt;a href="http://www.flickr.com/photos/adriarichards/3285777403/" title="Google Apps logo ring of happiness by adria.richards"&gt;Google Apps Logo&lt;/a&gt;&lt;/em&gt;.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Ao se possuir um domínio &lt;em&gt;.com&lt;/em&gt;, o serviço gratuito &lt;a href="http://www.google.com/apps/intl/pt-BR/group/index.html" title="Google Apps"&gt;Google Apps&lt;/a&gt; pode
ser usado para personalizar emails (seunome@dominio.com) e até mesmo 
hospedar sites. Também há a possibilidade de obter uma solução completamente 
gratuita ao &lt;a href="http://www.gerenciandoblog.com.br/2011/07/cocc-google-apps-e-mail-gratis-em-seu.html" title="Configuração de domínio gratuito co.cc com o Google Apps"&gt;configurar um domínio do co.cc com o Google Apps&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Independente do tipo de domínio utilizado com o Google Apps, pode-se
configurar o serviço de maneira que os emails tenham sua origem certificada
e sejam assinados digitalmente. Isto diminui as chances de que o 
endereço de email configurado para o domínio seja utilizado por spammers
e / ou acabe sendo marcado como spam pelo receptor.&lt;/p&gt;
&lt;p&gt;As configurações citadas são opcionais porém &lt;em&gt;altamente recomendáveis&lt;/em&gt;,
visto que visam garantir a autenticidade dos emails enviados por determinado
domínio. Assim, pode-se ter certeza que as mensagens serão entregues aos
seus destinatários, sem serem desviadas para a caixa de spam e podendo não 
serem vistas.&lt;/p&gt;</description><category>configuração</category><category>dkim</category><category>domínio</category><category>email</category><category>google apps</category><category>spf</category><category>tutorial</category><guid>http://blog.claudineipereira.com/google-apps-emails-personalizados-para-seu-dominio/</guid><pubDate>Wed, 06 Jul 2011 11:30:00 GMT</pubDate></item><item><title>CDTC - Cursos online gratuitos</title><link>http://blog.claudineipereira.com/cdtc-cursos-online-gratuitos/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;p&gt;O &lt;a href="http://comunidade.cdtc.org.br" title="CDTC - Centro de Difusão de Tecnologia e Conhecimento"&gt;CDTC&lt;/a&gt; (Centro de Difusão de Tecnologia e Conhecimento)
é uma iniciativa do governo federal que oferece &lt;strong&gt;cursos online
gratuitos&lt;/strong&gt; na área de tecnologia para a comunidade e servidores
públicos federais, estaduais e municipais. É uma ótima oportunidade para
aqueles que desejam fazer cursos de &lt;strong&gt;Ensino a Distância&lt;/strong&gt; via internet.&lt;/p&gt;
&lt;p&gt;&lt;img alt="bs-iv-folie-4" src="http://blog.claudineipereira.com/images/bs-iv-folie-4.jpg" title="CDTC é uma opção para cursos online gratuitos"&gt;
&lt;br&gt;&lt;small&gt;&lt;em&gt;&lt;a href="http://www.flickr.com/photos/59939034@N02/5476290862/" title="bs-iv-folie-2 by algogenius"&gt;bs-iv-folie-4&lt;/a&gt;: Há uma busca cada vez maior por cursos online
para melhorar o currículo.&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Os cursos são realizados na &lt;a href="http://moodle.org/" title="Moodle - Ambiente virtual de aprendizagem"&gt;plataforma Moodle&lt;/a&gt;, um ambiente de
aprendizagem virtual que fornece diversas ferramentas para aprendizado,
tais como fórums de discussão, chats e multimídia. Há vários disponíveis,
sendo que dentre eles podemos citar como exemplo o de &lt;a href="http://comunidade.cdtc.org.br/course/info.php?id=2957" title="Curso no CDTC sobre a Suíte de Escritório BrOffice"&gt;BrOffice&lt;/a&gt;, de 
&lt;a href="http://comunidade.cdtc.org.br/course/info.php?id=826" title="Curso no CDTC sobre programação Python"&gt;programação Python&lt;/a&gt; e o de &lt;a href="http://comunidade.cdtc.org.br/course/info.php?id=709" title="Curso no CDTC sobre Libras (LInguagem BRAsileira de Sinais)"&gt;Libras&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A inscrição nos cursos para a comunidade do CDTC é feita mediante o 
cadastro no sistema com um email válido que possua final &lt;em&gt;.br&lt;/em&gt;. Caso haja
interesse nos cursos para servidores públicos é necessário ter um email
institucional - de órgão públicos ou universidades. Também é necessário 
possuir computador com acesso à internet e disponibilidade de pelo
menos uma hora por dia para a realização das atividades.&lt;/p&gt;
&lt;p&gt;Os cursos na modalidade de &lt;strong&gt;Educação à distância&lt;/strong&gt; do CDTC são uma ótima
forma para atualização profissional. Além disso, dão a oportunidade de
conhecer como funciona um ambiente virtual de aprendizagem, podendo
despertar no cursista o desejo de continuar sua formação com outros
cursos, visto que há graduações e até mesmo pós graduações oferecidas
nesta modalidade.&lt;/p&gt;</description><category>cdtc</category><category>cursos de tecnologia</category><category>cursos online</category><category>ead</category><category>educação à distância</category><category>ensino a distância</category><category>grátis</category><guid>http://blog.claudineipereira.com/cdtc-cursos-online-gratuitos/</guid><pubDate>Sat, 02 Jul 2011 07:50:00 GMT</pubDate></item><item><title>Como criar senhas seguras</title><link>http://blog.claudineipereira.com/como-criar-senhas-seguras/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;p&gt;Um recente ataque de um grupo de hackers / crackers organizados resultou no
&lt;a href="http://meiobit.com/86877/lulzsec-cia-vazamento-senhas/" title="Luzsec vaza 62 mil senhas"&gt;vazamento de 62 mil senhas&lt;/a&gt; do &lt;a href="http://writerspace.com" title="Rede social para escritores e leitores"&gt;writerspace&lt;/a&gt;. Isto mostra a fragilidade
de alguns sites no que se refere a manter o &lt;strong&gt;sigilo&lt;/strong&gt; e &lt;strong&gt;segurança&lt;/strong&gt; dos 
dados de seus usuários. Mostra, também, a falta de cuidado de grande parte dos 
usuários no momento de criarem suas senhas.&lt;/p&gt;
&lt;p&gt;&lt;img alt="123mudar" src="http://blog.claudineipereira.com/images/123mudar.png" title="Nunca use 123mudar como senha novamente!"&gt;&lt;br&gt;
&lt;small&gt;&lt;em&gt;Senhas fracas são porta de entrada para ataques cibernéticos.&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Uma &lt;a href="http://www.rafekettler.com/2011/06/16/analyzing-the-lulzsec-password-leak/" title="LulzSec password leak analysis by Rafe Kettler"&gt;análise das senhas vazadas&lt;/a&gt; &lt;small&gt;(em inglês)&lt;/small&gt; demonstra que de
nada adianta servidores de internet super seguros se o usuário não dá a devida 
importância à criação de senhas seguras. Utilizar sequências numéricas simples
ou palavras de dicionário é um dos erros mais frequentes na criação de senhas. 
Por exemplo, veja as 5 senhas mais comuns, dentre as 62 mil, reveladas pela 
análise citada:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;"123456" foi utilizada &lt;strong&gt;558&lt;/strong&gt; vezes;&lt;/li&gt;
&lt;li&gt;"123456789" foi utilizada &lt;strong&gt;181&lt;/strong&gt; vezes;&lt;/li&gt;
&lt;li&gt;"password" ("senha", em inglês) foi utilizada &lt;strong&gt;132&lt;/strong&gt; vezes;&lt;/li&gt;
&lt;li&gt;"romance" foi utilizada &lt;strong&gt;88&lt;/strong&gt; vezes;&lt;/li&gt;
&lt;li&gt;"102030" foi utilizada &lt;strong&gt;68&lt;/strong&gt; vezes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Outros erros comuns são senhas curtas - a análise demonstra que a extensão de
senha média é 7.63 caracteres - e a pouca complexidade das mesmas - feitas 
somente com letras, ou somente com números, etc. Diante disto, compartilho
a seguir algumas dicas para criar senhas mais seguras.&lt;/p&gt;
&lt;h4&gt;Criando senhas seguras&lt;/h4&gt;
&lt;p&gt;Para garantir a qualidade de senhas podemos seguir os três fatores já expostos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Randomização&lt;/strong&gt;: não utilizar sequências numéricas, palavras de dicionário,
dados pessoais como data de nascimento, iniciais, etc;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensão&lt;/strong&gt;: senhas razoavelmente seguras devem possuir &lt;a href="http://en.wikipedia.org/wiki/Password_strength#Guidelines_for_strong_passwords" title="Diretrizes para senhas fortes na wikipédia em inglês"&gt;entre 12 e 14&lt;/a&gt;
&lt;small&gt;(em inglês)&lt;/small&gt; caracteres. Quanto mais, melhor;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complexidade&lt;/strong&gt;: misturar letras (em caixa alta e baixa), números e símbolos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;Ferramentas&lt;/h5&gt;
&lt;p&gt;O site &lt;a href="http://www.random.org/passwords/" title="Ferramenta para criar senhas randômicas"&gt;random.org&lt;/a&gt; é útil para criar senhas randômicas. Sua utilização é 
simples: devemos informar o número de senhas a gerar e a quantidade de 
caracteres desejada. Para exemplificar, solicitei a geração de 3 com 14 
caracteres cada uma. O resultado foi (&lt;strong&gt;AVISO&lt;/strong&gt;: Não as utilize!!!):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;Here&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;random&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;passwords&lt;/span&gt;:

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;crXFEf5HW6gwks&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="nv"&gt;rKWwFA9hy6mGq&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="nv"&gt;Y6PEZFhUSstTw&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Creio que a memorização de senhas assim esteja fora de questão, então podemos
anotá-las ou, melhor, utilizar um programa para gerenciá-las, como o &lt;a href="http://keepass.info" title="Keepass - Gerenciador de senhas"&gt;KeePass&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Conclusão&lt;/h4&gt;
&lt;p&gt;Embora a ação de hackers / crackers exponha a fragilidade de servidores web, 
o ponto mais fraco na cadeia de segurança muitas vezes é o próprio usuário.
Por isso, não divulgar dados pessoais na internet e criar senhas de qualidade 
são ações que podem garantir uma navegação mais segura.&lt;/p&gt;</description><category>segurança</category><category>senhas</category><guid>http://blog.claudineipereira.com/como-criar-senhas-seguras/</guid><pubDate>Tue, 28 Jun 2011 16:10:00 GMT</pubDate></item><item><title>Bandas e twitcam</title><link>http://blog.claudineipereira.com/bandas-e-twitcam/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;p&gt;&lt;small&gt;&lt;strong&gt;Aviso&lt;/strong&gt;: &lt;em&gt;Este post foi recuperado miraculosamente do cachê do google.
Foi escrito no antigo blog em agosto de 2010&lt;/em&gt;.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Dia 03 de agosto de 2010, acompanhei o ensaio, via &lt;a href="http://twitcam.livestream.com/" title="Streaming de vídeos"&gt;twitcam&lt;/a&gt;, de uma 
banda chamada &lt;a href="http://bandarockafe.com.br/" title="Banda Rockafé - Maringá/PR"&gt;Rockafé&lt;/a&gt;, de Maringá/PR, que tem por baixista o &lt;a href="http://twitter.com/thiagohmelo" title="Perfil de Thiago Melo no twitter"&gt;@thiagohmelo&lt;/a&gt;. 
Ele, além de baixista da banda, também é responsável pela &lt;a href="http://www.walbatroz.com" title="Walbatroz - Softwares e Websites"&gt;walbatroz&lt;/a&gt;, 
empresa de desenvolvimento de softwares e websites, junto com o Ricardo Silva, 
vulgo &lt;a href="http://twitter.com/pensarics" title="Perfil de Ricardo Silva no twitter"&gt;@pensarics&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Músico que sou - bem, toco guitarra, já fiz parte de banda de Heavy Metal 
(Hail Defender!), posso me considerar músico, não? - interessa-me acompanhar 
o uso que músicos fazem das tecnologias e das ferramentas sociais - no caso, 
twitter e twitcam. Basta um computador com acesso à internet, câmera e um 
microfone para que uma banda ou músico possam divulgar sua obra via 
rede mundial de computadores.&lt;/p&gt;
&lt;p&gt;Estou expondo um caso de uma banda local, que faz covers, mas ainda assim 
apresenta uma boa qualidade. Há casos de bandas já consagradas (&lt;a href="http://sepultura.uol.com.br/v7/" title="Sepultura! Sepultura! Sepultura!"&gt;Sepultura&lt;/a&gt;, 
por exemplo) que se utilizam do mesmo expediente para transmitirem seus shows. 
E todos acabam se beneficiando: o público, que passa a conhecer boas novas 
bandas, ou assiste àquelas que já conhece e admira; e os músicos, que divulgam 
seu trabalho e consolidam sua base de fãs.&lt;/p&gt;
&lt;p&gt;Além da questão da divulgação do trabalho artístico, ainda fica evidenciado o 
contato direto que os músicos passam a manter com seus admiradores. Divulga-se 
não só a música ou shows, mas também eles podem saber o que seus ouvintes pensam 
sobre sua obra, tendo um feedback que pode estimulá-los a manter e ampliar sua 
atuação "virtual".&lt;/p&gt;
&lt;p&gt;Músicos, bandas e ouvintes fazendo parte de uma comunidade voltada à produção e 
apreciação musical, ligados pelas ferramentas que hoje em dia são disponibilizadas
pela internet. Democratização da arte e da diversão musical. Espero vivenciar
mais vezes músicos que possuem sua mentalidade voltada para esta nova forma de 
divulgação!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: o Thiago escreveu sobre este &lt;a href="http://bandarockafe.com.br/site/2010/08/nosso-primeiro-ensaio-ao-vivo/" title="Primeiro ensaio da banda Rockafé"&gt;ensaio do Rockafé&lt;/a&gt;. Os vídeos podem ser 
vistos em seu &lt;a href="http://twitcam.livestream.com/user/thiagohmelo" title="Perfil de Thiago Melo no twitcam"&gt;perfil do twitcam&lt;/a&gt;.&lt;/p&gt;</description><category>bandas</category><category>maringá</category><category>rockafe</category><category>twitcam</category><category>twitter</category><guid>http://blog.claudineipereira.com/bandas-e-twitcam/</guid><pubDate>Sun, 26 Jun 2011 07:05:00 GMT</pubDate></item><item><title>Falha no Dropbox e segurança na Web</title><link>http://blog.claudineipereira.com/falha-no-dropbox-e-seguranca-na-web/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;p&gt;O serviço de armazenamento de arquivos &lt;a href="http://db.tt/dZnkUdK" title="Dropbox - Armazenamento de arquivos"&gt;Dropbox&lt;/a&gt; (link de afiliado) sofreu uma 
grave &lt;a href="http://blog.dropbox.com/?p=821" title="Bug de autenticação do Dropbox"&gt;falha de segurança&lt;/a&gt; no dia 19 de junho de 2011. Durante 4 horas qualquer
conta do site pôde ser acessada somente informando-se o email de cadastro,
sem a necessidade de informar a senha. Após a falha ter sido descoberta, foi 
corrigida em 4 minutos. Os proprietários das contas acessadas no período 
(cerca de 1%) já foram contactados pelos criadores do serviço.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Unplug for safety" src="http://blog.claudineipereira.com/images/unplug-for-safety.jpg" title="Desplugar é a solução!"&gt;
&lt;br&gt;&lt;small&gt;&lt;em&gt;&lt;a href="http://www.flickr.com/photos/mag3737/283241107" title="Unplug for safety by mag3737"&gt;Unplug for safety&lt;/a&gt;: A solução para segurança na internet é
não usar a internet.&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Casos assim fazem-nos refletir sobre a segurança de nossos dados na web. 
Usamos emails, comunicadores instantâneos, buscadores e outros serviços
disponibilizados online. Ao utilizá-los, concordamos em fornecer dados
pessoais como nome completo, localização, preferências pessoais, etc. Ao
trocarmos emails com outras pessoas, enviamos fotos, endereços, telefones e
outras informações que, pensamos, só podem ser acessadas pelo destinatário
do email.&lt;/p&gt;
&lt;p&gt;A verdade é que dificilmente alguma informação colocada na internet estará
100% segura. Você utiliza algum serviço do google (como o gmail) ou da
Microsoft (como o Hotmail)? Já leu os termos de serviço destas empresas? 
Se não, veja o que diz os &lt;a href="http://www.google.com.br/accounts/TOS" title="Termos de serviço do Google"&gt;termos de serviço do Google&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;14.3 ESPECIFICAMENTE, O GOOGLE, AS SUAS SUBSIDIÁRIAS E LICENCIADORES NÃO GARANTEM QUE:
&lt;br&gt;[...]&lt;br&gt;
(B) O USO DOS SERVIÇOS SERÁ ININTERRUPTO, PONTUAL, SEGURO E ISENTO DE ERROS;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Agora, os &lt;a href="http://g.msn.com/0TO_/ptbr" title="Contrato de serviço da Microsoft"&gt;termos de serviço da Microsoft&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fornecemos o serviço "no estado em que se encontra", "com todas as falhas" e
"conforme disponível". Não garantimos a precisão ou a atualidade das
informações disponíveis do serviço. Você reconhece que os sistemas de 
computador e telecomunicações não estão livres de falha, e podem ocorrer
períodos eventuais de tempo de inatividade. Não garantimos que o serviço
será ininterrupto, atualizado, seguro ou sem erros, ou que não ocorrerá
perda de dados. [...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Declarações semelhantes podem ser encontradas no Facebook, no próprio Dropbox
ou em qualquer outro serviço online. E nós concordamos com estes termos
cada vez que fazemos um cadastro em um novo site / serviço. &lt;/p&gt;
&lt;p&gt;Diante disto, qual solução podemos encontrar para a segurança de nossos dados? 
Para os paranóicos, com certeza é desplugar-se completamente da internet. 
Particularmente sugiro: bom senso naquilo que enviamos e compartilhamos na 
internet, tendo-se sempre em mente que &lt;em&gt;nunca estaremos seguros&lt;/em&gt;; e 
aprender um pouco sobre &lt;a href="http://pt.wikipedia.org/wiki/Criptografia" title="Artigo sobre criptografia na Wikipédia"&gt;criptografia de dados&lt;/a&gt;.&lt;/p&gt;</description><category>dropbox</category><category>segurança</category><category>web</category><guid>http://blog.claudineipereira.com/falha-no-dropbox-e-seguranca-na-web/</guid><pubDate>Wed, 22 Jun 2011 07:50:00 GMT</pubDate></item><item><title>Blogofile e Git </title><link>http://blog.claudineipereira.com/blogofile-e-git/</link><dc:creator>Claudinei Pereira</dc:creator><description>&lt;p&gt;O &lt;a href="http://www.blogofile.com" title="Site do Blogofile"&gt;Blogofile&lt;/a&gt; é um sistema de gerenciamento de conteúdo, desenvolvido em
&lt;a href="http://www.python.org" title="Python - Linguagem de programação"&gt;Python&lt;/a&gt; e que utiliza a biblioteca &lt;a href="http://www.makotemplates.org" title="Mako - Biblioteca de templates"&gt;Mako&lt;/a&gt; para o sistema de templates,
podendo ser usado em conjunto com o &lt;a href="http://www.git-scm.com" title="Git - Controle de versão"&gt;Git&lt;/a&gt; para controle de versão. 
Ele compila arquivos escritos em diferentes linguagens de marcação - 
como &lt;a href="http://docutils.sourceforge.net/rst.html" title="reStructuredText"&gt;rst&lt;/a&gt; e &lt;a href="http://daringfireball.net/projects/markdown" title="Markdown - Linguagem de marcação"&gt;Markdown&lt;/a&gt;, só para citar dois exemplos - para arquivos
xHTML válidos. É utilizado para gerenciar sites e blogs, com a 
vantagem de produzir arquivos estáticos que não dependem de base de dados 
ou de alguma linguagem instalada no servidor para geração de páginas
dinâmicas. Quando utilizado para gerar blogs, utiliza o &lt;a href="http://disqus.com" title="Disqus - Gerenciamento de comentários"&gt;Disqus&lt;/a&gt; como
gerenciador comentários.&lt;/p&gt;
&lt;h4&gt;Instalação em sistemas Debian&lt;/h4&gt;
&lt;p&gt;Os seguintes passos descrevem a instalação do Blogofile e do Git num servidor 
remoto, que também deverá ter algum servidor web instalado para servir as 
páginas xHTML geradas pelo programa.&lt;/p&gt;
&lt;p&gt;A instalação do Blogofile pode ser simplificada ao utilizarmos o pacote
&lt;strong&gt;setuptools&lt;/strong&gt;, que gerencia a instalação de bibliotecas python. Os seguintes
comandos instalam o setuptools, o git e o Blogofile com todas suas dependências:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;aptitude&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;setuptools
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;aptitude&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;git-core
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;easy_install&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;blogofile
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Com isto feito, podemos iniciar um blog simples numa pasta vazia no diretório 
$HOME do usuário:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
$&lt;span class="w"&gt; &lt;/span&gt;blogofile&lt;span class="w"&gt; &lt;/span&gt;init&lt;span class="w"&gt; &lt;/span&gt;simple_blog
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;O comando &lt;em&gt;blogofile init simple_blog&lt;/em&gt; cria alguns arquivos e pastas que podem 
ser editados para criar um site ou blog. Neste último caso, os &lt;em&gt;posts&lt;/em&gt; ficam na
pasta &lt;em&gt;_posts&lt;/em&gt; e devem possuir o formato 
&lt;strong&gt;nome-do-post.linguagem-de-marcação&lt;/strong&gt;. Após criarmos páginas ou posts, podemos
gerar os arquivos estáticos, que ficam armazenados na pasta &lt;em&gt;_site&lt;/em&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;blogofile&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Configuração&lt;/h4&gt;
&lt;p&gt;Após o processo de instalação no servidor remoto, devemos configurar o git
para iniciar um repositório na pasta do blog ou site para que possamos editar
os arquivos num computador local. No computador local, podemos configurar o
blogofile por meio do arquivo &lt;em&gt;_config.py&lt;/em&gt;, criar páginas ou posts, editar
o estilo CSS e adicionar imagens para, finalmente, gravar as alterações locais
no servidor remoto.&lt;/p&gt;
&lt;h5&gt;Configurando o Git&lt;/h5&gt;
&lt;p&gt;A configuração do Git descrita nesta seção possibilita a geração automática
de arquivos estáticos após cada &lt;strong&gt;push&lt;/strong&gt; do computador local para o remoto.
No computador remoto, devemos inicialmente criar um arquivo de configuração
do usuário (&lt;em&gt;$HOME/.gitconfig&lt;/em&gt;) com o seguinte conteúdo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;[user]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Nome do usuário&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;nomedousuario@dominio.com&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Agora, podemos iniciar o repositório e adicionar os arquivos:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;init
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;.
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Commit Inicial"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;A parte mais importante do processo é a criação do arquivo &lt;strong&gt;post-receive&lt;/strong&gt;,
que deve ser gravado na pasta &lt;em&gt;$HOME/blogofile/.git/hooks/&lt;/em&gt; com o seguinte
conteúdo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nb"&gt;unset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;GIT_DIR
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile
git&lt;span class="w"&gt; &lt;/span&gt;reset&lt;span class="w"&gt; &lt;/span&gt;--hard
/usr/local/bin/blogofile&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Também devemos torná-lo executável:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;+x&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blogofile/.git/hooks/post-receive
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Este arquivo será executado após cada &lt;strong&gt;push&lt;/strong&gt;, gravando as mudanças nos
arquivos do repositório e chamando o comando &lt;em&gt;blogofile build&lt;/em&gt; que cria
as páginas estáticas.&lt;/p&gt;
&lt;p&gt;Ainda na máquina remota, devemos configurar o git para aceitar as mudanças
diretamente no &lt;em&gt;branch&lt;/em&gt; MASTER. Este comportamento é aceitável num único 
repositórios com um único usuário, não devendo ser aplicado em repositórios 
que possuam mais de um usuário ou que sejam idealizados para possuir vários
branches. Para tanto, adicionamos as seguinte linhas no arquivo
&lt;em&gt;$HOME/blogofile/.git/config&lt;/em&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;[receive]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="na"&gt;denyCurrentBranch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;ignore&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h5&gt;Configurando o Blogofile&lt;/h5&gt;
&lt;p&gt;Agora podemos começar a trabalhar na máquina local ao clonarmos o
repositório remoto. Com isto, podemos trabalhar localmente e só enviar as
mudanças para o computador remoto quando as configurações, páginas ou posts
estiverem prontos. Para clonar o repositório remoto:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;ssh://nome-do-usuário@máquina-remota:porta/caminho-do-repositório
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;O comando trará todos os arquivos remotos para a máquina local. Podemos, então,
configurar o blogofile, editando o arquivo &lt;em&gt;_config.py&lt;/em&gt; localmente. Algumas
variáveis deste arquivo que podemos personalizar:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# URL do site ou blog&lt;/span&gt;
&lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="c1"&gt;# Nome do site ou blog&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; 
&lt;span class="c1"&gt;# Descricao do site ou blog&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; 
&lt;span class="c1"&gt;# Zona horaria de Sao Paulo&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timezone&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"America/Sao_Paulo"&lt;/span&gt; 
&lt;span class="c1"&gt;# numero de posts por pagina&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;posts_per_page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; 
&lt;span class="c1"&gt;# Habilita Permalinks automaticos&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;auto_permalink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt; 
&lt;span class="c1"&gt;# Formato do permalink. Neste caso, indicamos para o blogofile que&lt;/span&gt;
&lt;span class="c1"&gt;# desejamos somente o titulo do post no permalink&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;auto_permalink&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"/:title"&lt;/span&gt; 
&lt;span class="c1"&gt;# Habilita comentarios do disqus&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;disqus&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;span class="c1"&gt;# Nome de usuario do disqus&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;disqus&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="c1"&gt;# Desabilita pagina inicial customizada. Util no caso de blogs&lt;/span&gt;
&lt;span class="c1"&gt;# instalados diretamente na raiz do site&lt;/span&gt;
&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;custom_index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Criando Posts&lt;/h4&gt;
&lt;p&gt;Podemos criar posts no blogofile utilizando várias linguagems de marcação,
como rst, markdown e até mesmo html. É importante que o título do arquivo
contenha como "extensão" o nome da linguagem de marcação. O seguinte exemplo
contém o código que foi utilizado para criar o &lt;a href="http://blog.claudineipereira.com/primeiro-post/" title="Primeiro post de Claudinei Pereira"&gt;primeiro post&lt;/a&gt; deste
blog (nomeado &lt;em&gt;1. Primeiro Post.markdown&lt;/em&gt;):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="nl"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Primeiro&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Post&lt;/span&gt;
&lt;span class="nl"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Pessoal&lt;/span&gt;
&lt;span class="nl"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2011&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mo"&gt;06&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt;
&lt;span class="nl"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;teste&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dummy&lt;/span&gt;
&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="n"&gt;Este&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;é&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;primeiro&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;deste&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;blog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;apenas&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;para&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;servir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;template&lt;/span&gt;
&lt;span class="n"&gt;para&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;posteriores&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Hello&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;World&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;png&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Nele utilizei as variáveis &lt;em&gt;title&lt;/em&gt;, &lt;em&gt;categories&lt;/em&gt; e &lt;em&gt;date&lt;/em&gt; para indicar ao
blogofile, respectivamente, o título, a categoria e a data de criação do post.
O uso da variável &lt;em&gt;tags&lt;/em&gt; é opcional.&lt;/p&gt;
&lt;p&gt;Para enviar as mudanças de configuração e algum post:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;_posts/nome-do-post.extensão
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Insere post e configuração do _config.py"&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;push&lt;span class="w"&gt; &lt;/span&gt;origin&lt;span class="w"&gt; &lt;/span&gt;master
&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Conclusão&lt;/h4&gt;
&lt;p&gt;O blogofile é um gestor de conteúdo indicado para ser utilizado em servidores
de baixos recursos de memória ou processamento, pois cria blogs e sites 
estáticos que não necessitam de base de dados ou de linguagens de
programação para geração de páginas dinâmicas. Além disso, permite a 
customização tanto das páginas e estilos do site como também da lógica por 
trás da geração dos conteúdos via modificação ou criação de scripts python.&lt;/p&gt;</description><category>blogofile</category><category>cms</category><category>debian</category><category>git</category><category>python</category><guid>http://blog.claudineipereira.com/blogofile-e-git/</guid><pubDate>Mon, 13 Jun 2011 03:05:00 GMT</pubDate></item></channel></rss>