Differences

This shows you the differences between two versions of the page.

Link to this comparison view

postfix_postgresql_courier_roudcube_webmail_postfixadmin_quota_squeeze_pt_br [2019/08/08 15:24] (current)
Line 1: Line 1:
 +====== Postfix + PostgreSQL + Courier + Roudcube Webmail + Postfixadmin + Quota + Debian Squeeze ======
  
 +
 + Objetivo desse How To, precisamos instalar e configurar o Postfix trabalhando com a sua autenticação no PostgreSQL, vou abordar também a instalação e a configuração do servidor Courier que podemos utilizar para Pop e Imap ele vai utilizar a mesma base do Postfix para autenticar os usuários, para o gerenciamento de contas de Emails e domínios vamos utilizar o Postfixadmin, vou abordar a instalação e configuração do Roundcube Webmail.
 +
 +Prepare o seu sistema com o seguinte script [[https://github.com/douglasqsantos/easy-debian|Easy-Debian]] para que não falte nenhum pacote ou configuração.
 +
 +
 +Download do pacote do Postfix 
 +
 +Para a instalação é necessário que o sistema esteja atualizado. Para isto execute os comandos abaixo: 
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</sxh>
 +Após a atualização do sistema é necessário a adição de repositórios do wheezy para termos a versão mais atual do postfix para podermos aplicar o patch para cotas. 
 +<sxh bash>
 +vim /etc/apt/sources.list
 +[...]
 +#REPOSITORIO PARA O POSTFIX
 +deb ftp://ftp.pucpr.br/debian wheezy main contrib non-free
 +deb-src ftp://ftp.pucpr.br/debian wheezy main contrib non-free
 +</sxh>
 +Vamos atualizar os repositórios com os novos dados. 
 +<sxh bash>
 +aptitude update -y
 +</sxh>
 +Agora vamos obter o código fonte do postfix e o patch para cotas 
 +<sxh bash>
 +cd /usr/src
 +apt-get source postfix
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/mail/postfix-vda-v11-2.9.1.patch
 +</sxh>
 +A última versão do patch para o postfix foi para a versão 2.9.1 do postfix porém funciona na 2.9.3 do postfix só precisamos fazer um ajuste e aplicar o patch 
 +Vamos alterar a versão do postfix no patch 
 +<sxh bash>
 +sed -i 's/2.9.1/2.9.3/g' /usr/src/postfix-vda-v11-2.9.1.patch
 +</sxh>
 +Agora vamos aplicar o patch 
 +<sxh bash>
 +cd /usr/src/postfix-2.9.3 && patch -p1 < /usr/src/postfix-vda-v11-2.9.1.patch
 +patching file README_FILES/VDA_README
 +patching file src/global/mail_params.h
 +patching file src/util/file_limit.c
 +patching file src/virtual/mailbox.c
 +patching file src/virtual/maildir.c
 +patching file src/virtual/virtual.c
 +patching file src/virtual/virtual.h
 +</sxh>
 +Agora vamos comentar as linhas do arquivo "/etc/apt/sources.list" adicionadas para o download do postfix. 
 +<sxh bash>
 +vim /etc/apt/sources.list
 +[...]
 +#REPOSITORIO PARA O POSTFIX
 +#deb ftp://ftp.pucpr.br/debian wheezy main contrib non-free
 +#deb-src ftp://ftp.pucpr.br/debian wheezy main contrib non-free
 +</sxh>
 +Montagem do pacote do Postfix 
 +Agora que já obtemos o pacote do Postfix e aplicamos o patch precisamos instalar as dependências para compilar o pacote. 
 +<sxh bash>
 +aptitude update
 +aptitude install debhelper po-debconf libdb-dev ssl-cert libpcre3-dev libpg-perl libmysqlclient-dev libssl-dev libsasl2-dev libpq-dev libcdb-dev hardening-wrapper -y
 +aptitude install libldap2-dev libsqlite3-dev -y
 +</sxh>
 +Agora vamos criar os pacotes .deb 
 +<sxh bash>
 +dpkg-buildpackage
 +cd ../
 +apt-get remove --purge postfix -y
 +dpkg -i postfix_*.deb
 +</sxh>
 +Aqui vamos ter que responder algumas perguntas na instalação dos pacotes. 
 +  * Irá perguntar o tipo de configuração do Postfix, informe Site Internet 
 +  * Irá perguntar o nome do domínio kque será utilizado, informe douglasqsantos.com.br 
 +
 +Agora vamos instalar os pacotes adicionais necessários. 
 +<sxh bash>
 +dpkg -i postfix-pcre*.deb
 +dpkg -i postfix-pgsql*.deb
 +dpkg -i postfix-doc*.deb
 +</sxh>
 +Será instalado agora o mailx que é o tradicional agente de mail do utilizador de linha de comandos. 
 +<sxh bash>
 +aptitude install bsd-mailx
 +</sxh>
 +Agora vamos acertar alguns parâmetros do sistema 
 +Nome e ip do servidor 
 +<sxh bash>
 +vim /etc/hosts
 +127.0.0.1       localhost
 +ip_servidor     mail.douglasqsantos.com.br    mail
 +</sxh>
 +Agora vamos acertar o hostname 
 +<sxh bash>
 +vim /etc/hostname
 +mail.douglasqsantos.com.br
 +</sxh>
 +Agora vamos acertar o mailname do servidor 
 +<sxh bash>
 +vim /etc/mailname
 +mail.douglasqsantos.com.br
 +</sxh>
 +Agora vamos reiniciar o servidor para acertar o resto do sistema 
 +<sxh bash>
 +reboot
 +</sxh>
 +Instalação do Apache para a utilização do Postfixadmin 
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +aptitude install apache2 php5 php5-pgsql php5-imap libpam-pgsql -y
 +</sxh>
 +Agora precisamos instalar alguns pacotes para que o postfixadmin funcione corretamente 
 +<sxh bash>
 +aptitude install php5-gd php5-mcrypt php5-json php5-xmlrpc php5-dev php5-common \
 +libapache2-mod-php5 php-pear php5-intl php5-curl -y
 +</sxh>
 +
 +Agora vamos instalar o PostgreSQL
 +<sxh bash>
 +aptitude install postgresql postgresql-client postgresql-common postgresql-contrib postgresql-doc postgresql-server-dev-all -y
 +</sxh>
 +
 +Aqui vamos configurar em qual endereço ip o servidor vai escutar vamos colocar * para ele escutar em todas as interfaces disponíveis, e vamos desativar o ssl.
 +<sxh bash>
 +vim /etc/postgresql/8.4/main/postgresql.conf
 +[...]
 +listen_address = '*'
 +[...]
 +ssl = false 
 +[...]
 +</sxh>
 +
 +Agora precisamos liberar o acesso no PostgreSQL caso precisemos conectar nele de alguma máquina fora o servidor
 +<sxh bash>
 +vim /etc/postgresql/8.4/main/pg_hba.conf
 +[...]
 +#no final do arquivo adicione a seguinte linha
 +host    all         all         192.168.1.0/24             md5
 +</sxh>
 +
 +Agora vamos mandar reiniciar o nosso PostgreSQL
 +<sxh bash>
 +/etc/init.d/postgresql restart
 +</sxh>
 +
 +Agora vamos definir uma senha para o usuário postgres
 +<sxh bash>
 +su - postgres
 +psql
 +postgres=# ALTER USER postgres WITH PASSWORD 'senha';
 +ALTER ROLE
 +postgres=# \q
 +postgres@mail:~$ exit
 +logout
 +</sxh>
 +
 +Agora vamos criar o usuário e o banco que vamos utilizar para o Postfix
 +<sxh bash>
 +psql -h localhost -U postgres
 +Senha para usuário postgres: #senha
 +psql (8.4.13)
 +Digite "help" para ajuda.
 +postgres=# create user mail with password '123';
 +CREATE ROLE
 +postgres=# create database mail with owner mail;
 +CREATE DATABASE
 +postgres=# \q
 +</sxh>
 +====== Instalação e configuração do PostFixAdmin  ======
 +
 +A versão 2.3.5 do postfixadmin ta com bug no envio de email para Alias, por isso estou utilizando a versão 2.3.3. 
 +<sxh bash>
 +cd /var/www
 +rm -rf *
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/mail/postfixadmin-2.3.3.tar.gz
 +tar -xzvf postfixadmin-2.3.3.tar.gz
 +mv postfixadmin-2.3.3 postfixadmin
 +rm -rf postfixadmin-2.3.3*
 +chown -R www-data:www-data *
 +</sxh>
 +Faça as alterações necessárias para o postfixadmin, aqui o que você vai precisar mudar com certeza é douglasqsantos.com.br que é o domínio e a senha que eu coloquei como 123 ;) 
 +<sxh bash>
 +sed -i "s/change-this-to-your.domain.tld/douglasqsantos.com.br/g" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['configured'\] = false;/\$CONF\['configured'\] = true;/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['database_type'\] = 'mysql';/\$CONF\['database_type'\] = 'pgsql';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['default_language'\] = 'en';/\$CONF\['default_language'\] = 'pt-br';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['database_user'\] = 'postfix';/\$CONF\['database_user'\] = 'mail';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['database_password'\] = 'postfixadmin';/\$CONF\['database_password'\] = '123';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['database_name'\] = 'postfix';/\$CONF\['database_name'\] = 'mail';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['domain_path'\] = 'NO';/\$CONF\['domain_path'\] = 'YES';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['domain_in_mailbox'\] = 'YES';/\$CONF\['domain_in_mailbox'\] = 'NO';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['quota'\] = 'NO';/\$CONF\['quota'\] = 'YES';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['transport'\] = 'NO';/\$CONF\['transport'\] = 'YES';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['vacation'\] = 'NO';/\$CONF\['vacation'\] = 'YES';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['emailcheck_resolve_domain'\]='YES';/\$CONF\['emailcheck_resolve_domain'\]='NO';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['used_quotas'\] = 'NO';/\$CONF\['used_quotas'\] = 'YES';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['new_quota_table'\] = 'NO';/\$CONF\['new_quota_table'\] = 'YES';/" /var/www/postfixadmin/config.inc.php
 +sed -i "s/\$CONF\['maxquota'\] = '10';/\$CONF\['maxquota'\] = '10000';/" /var/www/postfixadmin/config.inc.php
 +</sxh>
 +Insira as configurações adicionais do vacation no final do arquivo config.inc.php 
 +<sxh php>
 +vim /var/www/postfixadmin/config.inc.php
 +$CONF['transport_options'] = array (
 +    'virtual',   //for virtual accounts
 +    'local',     //for system accounts
 +    'vacation',  //for system accounts
 +    'relay'  //for backup mx
 +);
 +</sxh>
 +Reinicie o serviço do Apache 
 +<sxh bash>
 +/etc/init.d/apache2 restart
 +</sxh>
 +Acesse pelo seu navegador o menu de configuração do PostfixAdmin para terminar a instalação pelo endereço:  http://ip_servidor/postfixadmin/setup.php 
 +  * Na primeira tela ele irá fazer a verificação se todos os critérios para funcionar estão intalados e funcionando. 
 +  * No final da página, informe a senha para de acesso como administrador 
 +  * Depois de alterada a senha, ele vai mostrar a linha com a senha, copie a linha e substitua a linha no arquivo config.inc.php 
 +
 +<sxh php>
 +vim /var/www/postfixadmin/config.inc.php
 + In order to setup Postfixadmin, you MUST specify a hashed password here.
 + To create the hash, visit setup.php in a browser and type a password into the field,
 + on submission it will be echoed out to you as a hashed value.
 +#$CONF['setup_password'] = 'changeme';
 +$CONF['setup_password'] = '0faa114f15c60534ff34a8248dfaeafc:0c7fcd264027316b45619a99af58f25a1cb1b130';
 +</sxh>
 +Depois de alterado o arquivo, volte na tela do postfixadmin e informe o e-mail do aministrador e a senha, para testar a autenticação. Agora vamos continuar a nossa configuração. 
 +
 +====== Vacation  ======
 +
 +O Vacation funciona para gerenciar as mensagens de ausência ou ferias do usuários. Útil quando você sai de férias por exemplo e não vai ler e-mails por um tempo e deixa uma mensagem pré-definida com as informações sobre as pessoas que vão ser contactadas no tempo que você estará fora. 
 +Preparando o ambiente: 
 +
 +Vamos criar o grupo e o usuário vacation 
 +<sxh bash>
 +groupadd vacation
 +useradd -d /var/spool/vacation -g vacation -s /bin/false -m vacation
 +</sxh>
 +Agora vamos copiar o arquivo do vacation para o seu home 
 +<sxh bash>
 +cp /var/www/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/
 +</sxh>
 +Agora vamos criar o diretório que vai armazenar os logs e acertar as permissões dos diretórios e arquivos 
 +<sxh bash>
 +mkdir /var/log/vacation/
 +chown -R vacation:vacation /var/spool/vacation/
 +chown -R vacation:vacation /var/log/vacation/
 +chmod 750 /var/spool/vacation/
 +chmod 700 /var/spool/vacation/vacation.pl
 +touch /var/log/vacation.log
 +chown vacation:vacation /var/log/vacation.log
 +</sxh>
 +Agora vamos instalar as dependências para o vacation funcionar corretamente 
 +<sxh bash>
 +aptitude install libmail-sender-perl libemail-valid-perl libmime-perl liblog-log4perl-perl liblog-dispatch-perl -y
 +aptitude install libgetopt-argvfile-perl libmime-charset-perl libmime-encwords-perl  -y
 +</sxh>
 +Vamos acertar as configurações no arquivo vacation.pl 
 +<sxh perl>
 +vim /var/spool/vacation/vacation.pl
 +[...]
 +our $db_type = 'Pg'; 
 +#our $db_type = 'mysql';
 + 
 +# leave empty for connection via UNIX socket
 +our $db_host = '';
 + 
 +# connection details
 +our $db_username = 'mail';
 +our $db_password = '123';
 +our $db_name     = 'mail';
 + 
 +our $vacation_domain = 'autoreply.douglasqsantos.com.br';
 + 
 +[...]
 +our $syslog = 1;
 +our $log_to_file = 1; 
 +
 +[...]
 +my $interval = 1*1*1;
 +# disabled by default
 +#our $interval = 0; -> comentar essa linha e deixar my $interval = 60*60*24;
 +</sxh>
 +Agora vamos criar dois domínios um principal e um domínio para o vacation que vão ser as auto repostas de ferias ou ausência. 
 +Logue na tela web  http://ip_servidor/postfixadmin 
 +  * Selecione Domínios/Criar domínio 
 +  * Agora informe o domínio 
 +  * A sua descrição 
 +  * Informe uma cota ou deixe ela como 0 
 +  * Transporte deixe o virtual 
 +  * Selecione Adicionar aliases padrão 
 +  * E selecione Criar domínio 
 +  * Agora vamos criar o domínio do vacation 
 +  * Domínio agora vai ser autoreply.douglasqsantos.com.br “douglasqsantos.com.br” é o domínio anteriormente criado 
 +  * Coloque uma descrição para ele exemplo domínio de ferias 
 +  * Selecione em transporte como vacation 
 +  * Selecione criar domínio 
 +  * Pode sair dessa tela. 
 +
 +====== Configuração do Postifx  ======
 +Vamos instalar os módulos que serão usados para autenticação. 
 +<sxh bash>
 +aptitude install libsasl2-2 libsasl2-modules-sql -y
 +aptitude install libsasl2-modules libsasl2-dev sasl2-bin openssl   -y
 +</sxh>
 +
 +Agora vamos obter o gid do Postfix 
 +<sxh bash>
 +grep postfix /etc/passwd
 +postfix:x:104:107::/var/spool/postfix:/bin/false
 +</sxh>
 +Como podemos notar o gid do postfix é 107 esse valor vai ser usado para criarmos o vmail que vai ser responsável pelas mensagens e pela identificação dos modulos do courierauthmysql 
 +<sxh bash>
 +adduser --system --shell /bin/false --uid 107 --gid 107 vmail
 +Adicionando usuário de sistema 'vmail' (UID 107) ...
 +Adicionando novo usuário 'vmail' (UID 107) com grupo 'postfix' ...
 +Criando diretório pessoal '/home/vmail' ...
 +</sxh>
 +
 +Agora vamos acertar as permissões do diretório do vmail
 +<sxh bash>
 +chown -R vmail:postdrop /home/vmail
 +</sxh>
 +
 +Vamos fazer um backup do arquivo original 
 +<sxh bash>
 +cp -Rfa /etc/postfix/main.cf{,.bkp}
 +</sxh>
 +Agora vamos configurar o nosso postfix 
 +<sxh bash>
 +vim /etc/postfix/main.cf
 +#---------------------------------MAIN-----------------------------------------
 +smtpd_banner                    = $myhostname ESMTP
 +biff                            = no
 +append_dot_mydomain             = no
 +readme_directory                = no
 +alias_maps                      = hash:/etc/postfix/aliases
 +alias_database                  = hash:/etc/postfix/aliases
 +myhostname                      = mail.douglasqsantos.com.br
 +mydomain                        = douglasqsantos.com.br
 +myorigin                        = $myhostname
 +mydestination                   = $myhostname, localhost
 +relayhost                       =
 +mynetworks                      = 127.0.0.0/8, 10.0.0.0/24
 +relay_domains                   = $mydestination
 +home_mailbox                    = Maildir/
 +mailbox_command                 = /usr/bin/procmail -a "$EXTENSION" DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir/
 +mailbox_size_limit              = 0
 +message_size_limit              = 10240000
 +recipient_delimiter             = +
 +mynetworks_style                = subnet
 +inet_interfaces                 = all
 +default_transport               = smtp
 +smtpd_recipient_limit           = 30
 +bounce_queue_lifetime           = 300s
 +maximal_queue_lifetime          = 300s
 +#-----------------------------END MAIN-----------------------------------------
 +#-----------------------------SASL--------------------------------------------- 
 +smtpd_sasl_auth_enable          = yes
 +smtpd_sasl_security_options     = noanonymous
 +broken_sasl_auth_clients        = yes
 +smtpd_sasl_local_domain         = $mydomain
 +#----------------------------END SASL------------------------------------------
 +#-------------------------------TLS--------------------------------------------
 +smtp_tls_CAfile                 = /etc/postfix/ssl/cacert.pem
 +smtp_tls_cert_file              = /etc/postfix/ssl/smtpd.crt
 +smtp_tls_key_file               = /etc/postfix/ssl/smtpd.key
 +smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache
 +smtp_tls_security_level         = may
 +smtpd_tls_CAfile                = /etc/postfix/ssl/cacert.pem
 +smtpd_tls_cert_file             = /etc/postfix/ssl/smtpd.crt
 +smtpd_tls_key_file              = /etc/postfix/ssl/smtpd.key
 +smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache
 +smtpd_tls_dh1024_param_file     = /etc/postfix/ssl/dh_1024.pem
 +smtpd_tls_dh512_param_file      = /etc/postfix/ssl/dh_512.pem
 +smtpd_tls_security_level        = may
 +smtpd_tls_received_header       = yes
 +smtpd_tls_ask_ccert             = yes
 +smtpd_tls_loglevel              = 1
 +tls_random_source               = dev:/dev/urandom
 +smtpd_enforce_tls               = yes
 +#-----------------------------END TLS-------------------------------------------- 
 +#--------------------------------POSTGRESQL-------------------------------------- 
 +transport_maps                  = proxy:pgsql:/etc/postfix/pgsql_transport_maps.cf
 +virtual_alias_maps              = proxy:pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
 +virtual_mailbox_domains         = proxy:pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
 +virtual_mailbox_maps            = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
 +virtual_transport               = virtual
 +virtual_minimum_uid             = 107
 +virtual_uid_maps                = static:107
 +virtual_gid_maps                = static:107
 +virtual_mailbox_base            = /home/vmail
 +#-----------------------------END POSTGRESQL-------------------------------------- 
 +#-----------------------------QUOTA-----------------------------------------------
 +virtual_mailbox_limit           = 51200000
 +virtual_mailbox_limit           = 0
 +virtual_maildir_extended        = yes
 +virtual_mailbox_limit_override  = yes
 +virtual_mailbox_limit_maps      = pgsql:/etc/postfix/pgsql_virtual_mailbox_limit_maps.cf
 +virtual_overquota_bounce        = yes
 +virtual_maildir_limit_message   = Desculpe, o diretorio de correio do usuario estourou sua quota, por favor tente novamente depois.
 +#----------------------------END QUOTA-------------------------------------------
 +#----------------------------CONTROLS--------------------------------------------
 +smtpd_helo_restrictions =
 + permit_mynetworks,
 + permit_sasl_authenticated,
 + reject_invalid_hostname,
 + reject_unknown_hostname,
 + reject_non_fqdn_hostname,
 + reject_unauth_pipelining
 + 
 +smtpd_client_restrictions =
 + permit_mynetworks,
 + permit_sasl_authenticated,
 + reject_unauth_pipelining,
 + reject_rbl_client dnsbl.sorbs.net,
 + reject_rbl_client dnsbl.njabl.org,
 + reject_rbl_client rbl.schulte.org,   
 + reject_rbl_client dnsbl.anticaptcha.net,
 + reject_rbl_client bl.spamcannibal.org,
 + reject_rbl_client bl.spamcop.net,
 + reject_rbl_client cart00ney.surriel.com,
 + reject_rbl_client korea.services.net,
 + reject_rbl_client cbl.abuseat.org,
 + reject_unknown_client
 + 
 +smtpd_sender_restrictions =
 + permit_mynetworks,
 + permit_sasl_authenticated,
 + reject_non_fqdn_sender,
 + reject_unauth_pipelining,
 + reject_unknown_sender_domain,
 + 
 +smtpd_recipient_restrictions =
 + permit_mynetworks,
 + permit_sasl_authenticated,
 + reject_invalid_hostname,
 + reject_non_fqdn_hostname,
 + reject_non_fqdn_recipient,
 + reject_unauth_destination,
 + reject_unauth_pipelining,
 + reject_unknown_recipient_domain,
 + reject_unknown_client
 +#------------------------END CONTROLS-------------------------------------------
 +</sxh>
 +
 +====== Geração das chaves para a conexão via TLS no Postfix ======
 +Vamos gerar as chaves de autenticação 
 +<sxh bash>
 +mkdir /etc/postfix/ssl
 +cd /etc/postfix/ssl/
 +openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
 +52 semi-random bytes loaded
 +Generating RSA private key, 1024 bit long modulus
 +.......++++++
 +...............................................................++++++
 +e is 65537 (0x10001)
 +Enter pass phrase for smtpd.key: senha
 +Verifying - Enter pass phrase for smtpd.key: senha
 +</sxh>
 +Acertando permissão da key gerada 
 +<sxh bash>
 +chmod 600 smtpd.key
 +</sxh>
 +Agora vamos gerar o pedido de assinatura 
 +<sxh bash>
 +openssl req -new -key smtpd.key -out smtpd.csr
 +Enter pass phrase for smtpd.key: senha
 +You are about to be asked to enter information that will be incorporated
 +into your certificate request.
 +What you are about to enter is what is called a Distinguished Name or a DN.
 +There are quite a few fields but you can leave some blank
 +For some fields there will be a default value,
 +If you enter '.', the field will be left blank.
 +-----
 +Country Name (2 letter code) [AU]:BR
 +State or Province Name (full name) [Some-State]:Parana
 +Locality Name (eg, city) []:Curitiba
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:Douglas
 +Organizational Unit Name (eg, section) []:IT
 +Common Name (eg, YOUR name) []:mail.douglasqsantos.com.br
 +Email Address []:douglas@douglasqsantos.com.br
 +
 +Please enter the following 'extra' attributes
 +to be sent with your certificate request
 +A challenge password []:
 +An optional company name []:Douglas
 +</sxh>
 +Vamos assinar agora o nosso certificado 
 +<sxh bash>
 +openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
 +Signature ok
 +subject=/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=IT/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +Getting Private key
 +Enter pass phrase for smtpd.key:
 +</sxh>
 +Agora vamos tirar a senha do certificado agora 
 +<sxh bash>
 +openssl rsa -in smtpd.key -out smtpd.key.unencrypted
 +Enter pass phrase for smtpd.key: senha
 +writing RSA key
 +</sxh>
 +Gerando o CA 
 +<sxh bash>
 +mv -f smtpd.key.unencrypted smtpd.key
 +openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
 +Generating a 1024 bit RSA private key
 +.++++++
 +......++++++
 +writing new private key to 'cakey.pem'
 +Enter PEM pass phrase:
 +Verifying - Enter PEM pass phrase:
 +-----
 +You are about to be asked to enter information that will be incorporated
 +into your certificate request.
 +What you are about to enter is what is called a Distinguished Name or a DN.
 +There are quite a few fields but you can leave some blank
 +For some fields there will be a default value,
 +If you enter '.', the field will be left blank.
 +-----
 +Country Name (2 letter code) [AU]:BR
 +State or Province Name (full name) [Some-State]:Parana
 +Locality Name (eg, city) []:Curitiba
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:Douglas
 +Organizational Unit Name (eg, section) []:IT
 +Common Name (eg, YOUR name) []:mail.douglasqsantos.com.br
 +Email Address []:douglas@douglasqsantos.com.br
 +</sxh>
 +Ultimas chaves de Diffie Hellman 
 +<sxh bash>
 +openssl dhparam 1024 -out dh_1024.pem
 +openssl dhparam 512 -out dh_512.pem
 +</sxh>
 +
 +====== Configuração da conexão do PostgreSQL + Postfix ======
 +
 +Vamos configurar o arquivo que tem o controle do tipo de transporte se vai ser virtual ou vacation por exemplo
 +<sxh bash>
 +vim /etc/postfix/pgsql_transport_maps.cf
 +user = mail
 +password = 123
 +hosts = localhost
 +dbname = mail
 +table = domain
 +select_field = transport
 +where_field = domain
 +</sxh>
 +
 +Aqui vamos configurar o arquivo que controla as contas de email
 +<sxh bash>
 +vim /etc/postfix/pgsql_virtual_alias_maps.cf 
 +user = mail
 +password = 123
 +hosts = localhost
 +dbname = mail
 +table = alias
 +select_field = goto
 +where_field = address
 +</sxh>
 +Aqui vamos configurar o arquivo que controla os domínios do postfix
 +<sxh bash>
 +vim /etc/postfix/pgsql_virtual_domains_maps.cf 
 +user = mail
 +password = 123
 +hosts = localhost
 +dbname = mail
 +table = domain
 +select_field = domain
 +where_field = domain
 +</sxh>
 +
 +Aqui vamos acertar o arquivo que controla as cotas do usuários e domínios
 +<sxh bash>
 +vim /etc/postfix/pgsql_virtual_mailbox_limit_maps.cf 
 +user = mail
 +password = 123
 +hosts = localhost
 +dbname = mail
 +table = mailbox
 +select_field = quota
 +where_field = username
 +</sxh>
 +Aqui vamos acertar o arquivo que controla as mailbox 
 +<sxh bash>
 +vim /etc/postfix/pgsql_virtual_mailbox_maps.cf 
 +user = mail
 +password = 123
 +hosts = localhost
 +dbname = mail
 +query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 't'
 +</sxh>
 +Vamos acertar as permissões 
 +<sxh bash>
 +chmod o= /etc/postfix/pgsql_*
 +chgrp postfix /etc/postfix/pgsql_*
 +</sxh>
 +Vamos fazer o acerto dos aliases agora 
 +<sxh bash>
 +mv /etc/aliases /etc/postfix
 +</sxh>
 +Ajustando arquivos de aliases para os redirecionamentos 
 +<sxh bash>
 +vim /etc/postfix/aliases
 +[...]
 +root: douglas@douglasqsantos.com.br
 +</sxh>
 +Agora vamos gerar a nova base de dados dos aliases 
 +<sxh bash>
 +newaliases
 +</sxh>
 +Vamos fazer backup do arquivo de configuração 
 +<sxh bash>
 +cp /etc/postfix/master.cf{,.bkp}
 +</sxh>
 +Ajustando arquivo de serviços do postfix 
 +<sxh bash>
 +vim /etc/postfix/master.cf
 +#-------------------------SERVICES--------------------------------------------
 +#-----------------------------------------------------------------------------
 +# service type  private unpriv  chroot  wakeup  maxproc command + args
 +#               (yes)   (yes)   (yes)   (never) (100)
 +#-----------------------------------------------------------------------------
 +smtp      inet  n                               smtpd
 +submission inet n                               smtpd
 +  -o smtpd_tls_security_level=encrypt
 +  -o smtpd_sasl_auth_enable=yes
 +#smtps     inet  n                               smtpd
 +  -o smtpd_sasl_auth_enable=yes
 +pickup    fifo  n                   60      1       pickup
 +cleanup   unix  n                               cleanup
 +qmgr      fifo  n                   300           qmgr
 +tlsmgr    unix  -                   1000?         tlsmgr
 +rewrite   unix  -                               trivial-rewrite
 +bounce    unix  -                               bounce
 +defer     unix  -                               bounce
 +trace     unix  -                               bounce
 +verify    unix  -                               verify
 +flush     unix  n                   1000?         flush
 +proxymap  unix  -                               proxymap
 +proxywrite unix -                               proxymap
 +smtp      unix  -                               smtp
 +relay     unix  -                               smtp
 +        -o smtp_fallback_relay=
 +showq     unix  n                               showq
 +error     unix  -                               error
 +retry     unix  -                               error
 +discard   unix  -                               discard
 +local     unix  -                               local
 +virtual   unix  -                               virtual
 +lmtp      unix  -                               lmtp
 +anvil     unix  -                               anvil
 +scache    unix  -                               scache
 +#----------------------------END SERVICES-----------------------------------------
 +#----------------------------DELIVERY METHODS-------------------------------------
 +maildrop  unix  -                               pipe
 +  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
 +uucp      unix  -                               pipe
 +  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
 +ifmail    unix  -                               pipe
 +  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
 +bsmtp     unix  -                               pipe
 +  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
 +scalemail-backend unix  -                               pipe
 +  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
 +mailman   unix  -                               pipe
 +  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
 +  ${nexthop} ${user}
 +#--------------------------END DELIVERY METHODS----------------------------------------------- 
 +#----------------------------VACATION---------------------------------------------------------
 +vacation    unix  -                               pipe
 +  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
 +#----------------------------END VACATION-----------------------------------------------------
 +</sxh>
 +
 +====== Configuração do controle de autenticação do Postfix ======
 +Agora vamos configurar o sasl 
 +<sxh bash>
 +vim /usr/lib/sasl2/smtpd.conf
 +pwcheck_method: saslauthd
 +mech_list: PLAIN LOGIN
 +auxprop_plugin: sql
 +allow_plaintext: truesql_verbose: yes
 +sql_engine: pgsql
 +sql_hostnames: localhost
 +sql_user: mail
 +sql_passwd: 123
 +sql_database: mail
 +sql_select: select password from mailbox where username = '%u'
 +</sxh>
 +Vamos acertar a localização do arquivo com um link 
 +<sxh bash>
 +ln -sf /usr/lib/sasl2/smtpd.conf /etc/postfix/sasl/smtpd.conf
 +</sxh>
 +Vamos colocar o sasl no grupo do postfix 
 +<sxh bash>
 +usermod -G sasl postfix
 +</sxh>
 +Agora vamos acertar o sasauthd mais primeiro vamos fazer o backup do arquivo 
 +<sxh bash>
 +cp /etc/default/saslauthd{,.bkp}
 +</sxh>
 +Agora vamos acertar a configuração do arquivo saslauthd 
 +<sxh bash>
 +vim /etc/default/saslauthd
 +START=yes
 +DESC="SASL Authentication Daemon"
 +NAME="saslauthd"
 +MECHANISMS="pam"
 +MECH_OPTIONS=""
 +THREADS=5
 +OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
 +</sxh>
 +Vamos acertar os arquivos do saslauthd para o postfix 
 +<sxh bash>
 +mkdir -p /var/spool/postfix/var/run/saslauthd
 +chown postfix /var/spool/postfix/var/run/saslauthd/
 +cd /var/run
 +mv saslauthd saslauthd.bkp
 +ln -sf /var/spool/postfix/var/run/saslauthd
 +</sxh>
 +
 +Agora vamos acertar o acesso do PostgreSQL para a jaula do Postfix
 +
 +Vamos parar o postgresql
 +<sxh bash>
 +/etc/init.d/postgresql stop
 +</sxh>
 +
 +Agora vamos remover o diretório default que armazena o pid do postgresql
 +<sxh bash>
 +rm -rf /var/run/postgresql/
 +</sxh>
 +
 +Agora vamos criar o diretório dentro da jaula do postfix e vamos criar um link para o sistema
 +<sxh bash>
 +cd /var/run
 +mkdir /var/spool/postfix/var/run/postgresql
 +ln -sf /var/spool/postfix/var/run/postgresql/
 +chown -R postfix:postgres postgresql
 +chown -R postfix:postgres /var/spool/postfix/var/run/postgresql
 +chmod 775 /var/spool/postfix/var/run/postgresql
 +</sxh>
 +
 +Agora vamos reiniciar os serviços 
 +<sxh bash>
 +/etc/init.d/postgresql restart
 +/etc/init.d/saslauthd restart
 +</sxh>
 +====== Instalação do e configuração do Courier ======
 +<sxh bash>
 +aptitude install courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-postgresql courier-authdaemon libgamin-dev -y
 +#Resposta1) No
 +2) Ok
 +</sxh>
 +Agora vamos fazer backup dos arquivos de configuração do courier 
 +<sxh bash>
 +cp /etc/courier/authdaemonrc{,.bkp}
 +cp /etc/courier/authpgsqlrc{,.bkp}
 +</sxh>
 +Agora vamos acertar o arquivo de conexão do Courier com o PostgreSQL
 +<sxh bash>
 +vim /etc/courier/authpgsqlrc
 +PGSQL_HOST              127.0.0.1
 +PGSQL_PORT              5432
 +PGSQL_USERNAME          mail
 +PGSQL_PASSWORD          123
 +PGSQL_DATABASE          mail
 +PGSQL_USER_TABLE        mailbox
 +PGSQL_CRYPT_PWFIELD     password
 +PGSQL_UID_FIELD         '107'
 +PGSQL_GID_FIELD         '107'
 +PGSQL_LOGIN_FIELD       username
 +PGSQL_HOME_FIELD        '/home/vmail'
 +PGSQL_MAILDIR_FIELD     '/home/vmail/' || maildir
 +PGSQL_QUOTA_FIELD       quota || 'S'
 +</sxh>
 +
 +Agora vamos acertar a configuração do serviço do Courier 
 +<sxh bash>
 +vim /etc/courier/authdaemonrc
 +authmodulelist="authpgsql"
 +authmodulelistorig="authpgsql"
 +daemons=5
 +authdaemonvar=/var/run/courier/authdaemon
 +subsystem=mail
 +DEFAULTOPTIONS=""
 +LOGGEROPTS=""
 +</sxh>
 +Agora vamos acertar a configuração dos arquivos que vão gerar os nosso certificados para ssl. 
 +Primeiro vamos editar o arquivo do imap 
 +<sxh bash>
 +vim /etc/courier/imapd.cnf
 +
 +RANDFILE = /usr/lib/courier/imapd.rand
 +
 +[ req ]
 +default_bits = 1024
 +encrypt_key = yes
 +distinguished_name = req_dn
 +x509_extensions = cert_type
 +prompt = no
 +
 +[ req_dn ]
 +C=BR
 +ST=PR
 +L=Curitiba
 +O=Douglas Imap Server
 +OU=Douglas IMAP SSL key
 +CN=mail.douglasqsantos.com.br
 +emailAddress=postmaster@douglasqsantos.com.br
 +
 +
 +[ cert_type ]
 +nsCertType = server
 +</sxh>
 +
 +Agora vamos editar o arquivo do pop 
 +<sxh bash>
 +vim /etc/courier/pop3d.cnf
 +RANDFILE = /usr/lib/courier/pop3d.rand
 +
 +[ req ]
 +default_bits = 1024
 +encrypt_key = yes
 +distinguished_name = req_dn
 +x509_extensions = cert_type
 +prompt = no
 +
 +[ req_dn ]
 +C=BR
 +ST=PR
 +L=Curitiba
 +O=Douglas Pop Server
 +OU=Douglas POP3 SSL key
 +CN=mail.douglasqsantos.com.br
 +emailAddress=postmaster@douglasqsantos.com.br
 +
 +
 +[ cert_type ]
 +nsCertType = server
 +</sxh>
 +Agora vamos fazer backup dos certificados antigos. 
 +<sxh bash>
 +mv /etc/courier/pop3d.pem /etc/courier/pop3d.pem.bkp
 +mv /etc/courier/imapd.pem /etc/courier/imapd.pem.bkp
 +unlink /usr/lib/courier/pop3d.pem
 +unlink /usr/lib/courier/imapd.pem
 +</sxh>
 +Agora vamos gerar o novo certificado para o Imap-ssl 
 +<sxh bash>
 +mkimapdcert
 +</sxh>
 +Agora vamos gerar o novo certificado para o Pop-ssl 
 +<sxh bash>
 +mkpop3dcert
 +</sxh>
 +Agora vamos acertar os links dos certificados do courier 
 +<sxh bash>
 +ln -sf /usr/lib/courier/imapd.pem /etc/courier/imapd.pem
 +ln -sf /usr/lib/courier/pop3d.pem /etc/courier/pop3d.pem
 +</sxh>
 +
 +Vamos ajustar o pam_pgsql.conf ele não existe por padrão no sistema então temos que criar ele
 +<sxh bash>
 +vim /etc/pam_pgsql.conf 
 +database = mail
 +host = localhost
 +user = mail
 +password = 123
 +table = mailbox
 +user_column = username
 +pwd_column = password
 +pw_type = crypt
 +debug
 +</sxh>
 +
 +Ajustando a forma de autenticação do POP3, IMAP e SMTP 
 +<sxh bash>
 +vim /etc/pam.d/pop3
 +auth        required    pam_pgsql.so
 +account     required    pam_pgsql.so
 +password    required    pam_pgsql.so
 +</sxh>
 +
 +Agora vamos copiar os arquivos da pam 
 +<sxh bash>
 +cp -Rfa /etc/pam.d/pop3 /etc/pam.d/imap
 +cp -Rfa /etc/pam.d/pop3 /etc/pam.d/smtp
 +</sxh>
 +
 +
 +Restartando os serviços: 
 +<sxh bash>
 +/etc/init.d/postgresql restart
 +/etc/init.d/postfix restart
 +/etc/init.d/courier-authdaemon restart
 +/etc/init.d/courier-imap restart
 +/etc/init.d/courier-imap-ssl restart
 +/etc/init.d/courier-pop restart
 +/etc/init.d/courier-pop-ssl restart
 +</sxh>
 +Verificando se os serviços estão sendo executados: 
 +<sxh bash>
 +nmap -sS -T4 localhost
 +
 +Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-12 20:56 BRST
 +Interesting ports on localhost (127.0.0.1):
 +Not shown: 990 closed ports
 +PORT     STATE SERVICE
 +22/tcp   open  ssh
 +25/tcp   open  smtp
 +80/tcp   open  http
 +110/tcp  open  pop3
 +111/tcp  open  rpcbind
 +143/tcp  open  imap
 +587/tcp  open  submission
 +993/tcp  open  imaps
 +995/tcp  open  pop3s
 +5432/tcp open  postgresql
 +
 +Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
 +</sxh>
 +Agora já podemos testar o nosso servidor de email Acesse o postfixadmin 
 +  * Em Virtual/Criar conta de email
 +  * Informe o nome da conta ex: douglas
 +  * Selecione o domínio ex: douglasqsantos.com.br
 +  * Informe uma senha e confirme ela 
 +  * Informe um nome para a conta de email 
 +  * Agora selecione Criar conta de email 
 +
 +
 +Agora nos logs do servidor de email vamos ter algo como abaixo 
 +<sxh bash>
 +tail -f /var/log/mail.log
 +Nov 12 20:57:32 mail postfix/smtpd[11581]: connect from localhost[127.0.0.1]
 +Nov 12 20:57:32 mail postfix/smtpd[11581]: 90E9FE235: client=localhost[127.0.0.1]
 +Nov 12 20:57:32 mail postfix/cleanup[11588]: 90E9FE235: message-id=<20121112225732.90E9FE235@mail.douglasqsantos.com.br>
 +Nov 12 20:57:32 mail postfix/qmgr[5898]: 90E9FE235: from=<douglas@douglasqsantos.com.br>, size=495, nrcpt=1 (queue active)
 +Nov 12 20:57:32 mail postfix/smtpd[11581]: disconnect from localhost[127.0.0.1]
 +Nov 12 20:57:32 mail postfix/virtual[11589]: 90E9FE235: to=<douglas@douglasqsantos.com.br>, relay=virtual, delay=0.04, delays=0.01/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
 +Nov 12 20:57:32 mail postfix/qmgr[5898]: 90E9FE235: remove
 +</sxh>
 +Agora vamos testar a autenticação do Cliente. 
 +<sxh bash>
 +testsaslauthd -u douglas@douglasqsantos.com.br -p doug123
 +0: OK "Success."
 +</sxh>
 +
 +Vamos fazer um teste para verificar se o smtp esta funcionando
 +<sxh bash>
 +telnet localhost 25
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '^]'.
 +220 mail.douglasqsantos.com.br ESMTP
 +ehlo mail.douglasqsantos.com.br
 +250-mail.douglasqsantos.com.br
 +250-PIPELINING
 +250-SIZE 10240000
 +250-VRFY
 +250-ETRN
 +250-STARTTLS
 +250-AUTH LOGIN PLAIN
 +250-AUTH=LOGIN PLAIN
 +250-ENHANCEDSTATUSCODES
 +250-8BITMIME
 +250 DSN
 +starttls
 +220 2.0.0 Ready to start TLS
 +quit
 +quit
 +Connection closed by foreign host.
 +</sxh>
 +
 +Agora vamos fazer um teste de envio de email utilizando smtp + tls
 +
 +Vamos criar um script para gerar o nosso usuário e senha em base64
 +<sxh perl>
 +vim /srv/base64
 +#!/usr/bin/perl -w
 +use strict;
 +use MIME::Base64;
 +print "Pressione Enter para sair. \n";
 +print "Insira a string: ";
 +my $line;
 +while( $line = <STDIN> )
 +{
 +  if( $line ne "\n" ){
 +    chomp($line) ;
 +    print "Base64 encode é : " . encode_base64($line) ;
 +    print "Insira a string: ";
 +  }
 +  else
 +  {
 +    exit;
 +  }
 +}
 +</sxh>
 +Agora precisamos dar a permissão para o nosso script
 +<sxh bash>
 +chmod +x /srv/base64
 +</sxh>
 +Vamos gerar o usuário e a senha em base64 que o postfix utiliza para validar o usuário e senha
 +<sxh bash>
 +/srv/base64 
 +Pressione Enter para sair. 
 +Insira a string: douglas@douglasqsantos.com.br
 +Base64 encode é : ZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnI=
 +Insira a string: doug123
 +Base64 encode é : ZG91ZzEyMw==
 +Insira a string: 
 +</sxh>
 +
 +<sxh bash>
 +openssl s_client -starttls smtp -crlf -connect localhost:25 -quiet
 +depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +verify error:num=18:self signed certificate
 +verify return:1
 +depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +verify return:1
 +250 DSN
 +EHLO mail.douglasqsantos.com.br
 +250-mail.douglasqsantos.com.br
 +250-PIPELINING
 +250-SIZE 10240000
 +250-VRFY
 +250-ETRN
 +250-AUTH LOGIN PLAIN
 +250-AUTH=LOGIN PLAIN
 +250-ENHANCEDSTATUSCODES
 +250-8BITMIME
 +250 DSN
 +auth login
 +334 VXNlcm5hbWU6
 +#A Linha abaixo é o codigo base64 que foi gerado para o usuário douglas@douglasqsantos.com.br
 +ZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnI=
 +334 UGFzc3dvcmQ6
 +#A linha abaixo é o codigo base64 que foi gerado para a senha doug123
 +ZG91ZzEyMw==
 +235 2.7.0 Authentication successful
 +mail from: <douglas@douglasqsantos.com.br>
 +250 2.1.0 Ok
 +rcpt to: <douglas@douglasqsantos.com.br>
 +250 2.1.5 Ok
 +data
 +354 End data with <CR><LF>.<CR><LF>
 +From: Douglas <douglas@douglasqsantos.com.br>
 +To: Douglas <douglas@douglasqsantos.com.br>
 +Subject: Teste de tls
 +Teste de Envio de email utilizando TLS
 +.
 +250 2.0.0 Ok: queued as 5C72411F4E
 +quit
 +221 2.0.0 Bye
 +</sxh>
 +
 +Para somente visualizarmos o certificado do smtp podemos fazer da seguinte maneira
 +<sxh bash>
 +openssl s_client -starttls smtp -crlf -connect localhost:25 -showcerts
 +CONNECTED(00000003)
 +depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +verify error:num=18:self signed certificate
 +verify return:1
 +depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +verify return:1
 +---
 +Certificate chain
 + 0 s:/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +   i:/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +-----BEGIN CERTIFICATE-----
 +MIICpzCCAhACCQCNYYi667jJpjANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UEBhMC
 +QlIxDzANBgNVBAgTBlBhcmFuYTERMA8GA1UEBxMIQ3VyaXRpYmExEDAOBgNVBAoT
 +B0RvdWdsYXMxCzAJBgNVBAsTAlRJMR0wGwYDVQQDExRtYWlsLmRvdWdsYXMud2lr
 +aS5icjEmMCQGCSqGSIb3DQEJARYXZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnIwHhcN
 +MTIxMDA0MTc1NzEyWhcNMjIxMDAyMTc1NzEyWjCBlzELMAkGA1UEBhMCQlIxDzAN
 +BgNVBAgTBlBhcmFuYTERMA8GA1UEBxMIQ3VyaXRpYmExEDAOBgNVBAoTB0RvdWds
 +YXMxCzAJBgNVBAsTAlRJMR0wGwYDVQQDExRtYWlsLmRvdWdsYXMud2lraS5icjEm
 +MCQGCSqGSIb3DQEJARYXZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnIwgZ8wDQYJKoZI
 +hvcNAQEBBQADgY0AMIGJAoGBAMOdgm3xKBSrq0zCLvNFjkvlb8Zj6f8/0YbrAZV7
 +/bfUmCWus/h7PES4Eh7TnQF/b+EIQItQ9oBB1XG6t0+nOoAsfli11qFa3z8eSqCI
 +vECpXZCrzOYQwicRztA2Zoaie8WMCPiKE0kvXW5ps/vUu8aPCdxmMN/xXzhLnlm3
 +fXajAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAZ7X/Wnz9cM6Ty/03ukMr0q0lj1cw
 +YZk2bMDnDtOL17X8mNtwRCHOFgKh2sk9Xh80xxJqMlcbHVdCqxLKBfUEwwifj35/
 +uXe61BADWKsy+p6bjo6tLtE0FEHkwGu/afguHtMmW/9FPXiv1DQloj5A7+T92UT6
 +SnESkeuJoy+Bfos=
 +-----END CERTIFICATE-----
 +---
 +Server certificate
 +subject=/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +issuer=/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +---
 +Acceptable client certificate CA names
 +/C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=douglas@douglasqsantos.com.br
 +---
 +SSL handshake has read 1671 bytes and written 366 bytes
 +---
 +New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
 +Server public key is 1024 bit
 +Secure Renegotiation IS supported
 +Compression: NONE
 +Expansion: NONE
 +SSL-Session:
 +    Protocol  : TLSv1
 +    Cipher    : DHE-RSA-AES256-SHA
 +    Session-ID: 938A6DEB769A3209B4C95D4695C74D4E3337F77B9AD334E40374C5759462B3AB
 +    Session-ID-ctx: 
 +    Master-Key: 2A46F82490908839CB5C87E7F3DEAE7383187FDE338C542C499082A12D0CE2E63A7D9DCAA2815C00D8D3F5B740C6C006
 +    Key-Arg   : None
 +    Start Time: 1349382058
 +    Timeout   : 300 (sec)
 +    Verify return code: 18 (self signed certificate)
 +---
 +250 DSN
 + quit
 +221 2.0.0 Bye
 +closed
 +</sxh>
 +
 +Vamos fazer um teste de acesso pop 
 +<sxh bash>
 +telnet localhost 110
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '^]'.
 ++OK Hello there.
 +user douglas@douglasqsantos.com.br
 ++OK Password required.
 +pass doug123
 +l+OK logged in.
 +list
 ++OK POP3 clients that break here, they violate STD53.
 +1 982
 +.
 +retr 1
 ++OK 982 octets follow.
 +Return-Path: <douglas@douglasqsantos.com.br>
 +X-Original-To: douglas@douglasqsantos.com.br
 +Delivered-To: douglas@douglasqsantos.com.br
 +Received: from localhost (localhost [127.0.0.1])
 +        by mail.douglasqsantos.com.br (Postfix) with ESMTP id 3354E11F51
 +        for <douglas@douglasqsantos.com.br>; Tue,  2 Oct 2012 16:25:21 -0300 (BRT)
 +Received: from mail.douglasqsantos.com.br ([127.0.0.1])
 +        by localhost (mail.douglasqsantos.com.br [127.0.0.1]) (amavisd-new, port 10024)
 +        with ESMTP id FTU91CRKqv-J for <douglas@douglasqsantos.com.br>;
 +        Tue,  2 Oct 2012 16:25:19 -0300 (BRT)
 +Received: from 10.101.0.25 (localhost [127.0.0.1])
 +        by mail.douglasqsantos.com.br (Postfix) with ESMTP id B3C1611F4E
 +        for <douglas@douglasqsantos.com.br>; Tue,  2 Oct 2012 16:25:18 -0300 (BRT)
 +To: douglas@douglasqsantos.com.br
 +From: douglas@douglasqsantos.com.br
 +Subject: Bem-vindo(a)
 +MIME-Version: 1.0
 +Content-Type: text/plain; charset=utf-8
 +Content-Transfer-Encoding: 8bit
 +Message-Id: <20121002192518.B3C1611F4E@mail.douglasqsantos.com.br>
 +Date: Tue,  2 Oct 2012 16:25:18 -0300 (BRT)
 + 
 +Hi,
 + 
 +Welcome to your new account.
 +.
 +quit
 ++OK Bye-bye.
 +Connection closed by foreign host.
 +</sxh>
 +
 +Agora vamos efetuar um teste de pop com ssl
 +<sxh bash>
 +openssl s_client -connect localhost:995 -quiet
 +depth=0 /C=BR/ST=PR/L=Curitiba/O=Douglas Pop Server/OU=Douglas POP3 SSL key/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
 +verify error:num=18:self signed certificate
 +verify return:1
 +depth=0 /C=BR/ST=PR/L=Curitiba/O=Douglas Pop Server/OU=Douglas POP3 SSL key/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
 +verify return:1
 ++OK Hello there.
 +user douglas@douglasqsantos.com.br
 ++OK Password required.
 +pass doug123
 ++OK logged in.
 +list
 ++OK POP3 clients that break here, they violate STD53.
 +1 625
 +2 7541
 +3 2304
 +4 6702
 +5 1286
 +.
 +retr 1
 ++OK 625 octets follow.
 +Return-Path: <douglas@douglasqsantos.com.br>
 +X-Original-To: douglas@douglasqsantos.com.br
 +Delivered-To: douglas@douglasqsantos.com.br
 +Received: from 10.101.0.25 (localhost [127.0.0.1])
 +  by mail.douglasqsantos.com.br (Postfix) with ESMTP id 41BEA11F4A
 +  for <douglas@douglasqsantos.com.br>; Thu,  4 Oct 2012 15:05:29 -0300 (BRT)
 +To: douglas@douglasqsantos.com.br
 +From: douglas@douglasqsantos.com.br
 +Subject: Bem-vindo(a)
 +MIME-Version: 1.0
 +Content-Type: text/plain; charset=utf-8
 +Content-Transfer-Encoding: 8bit
 +Message-Id: <20121004180529.41BEA11F4A@mail.douglasqsantos.com.br>
 +Date: Thu,  4 Oct 2012 15:05:29 -0300 (BRT)
 +
 +Hi,
 +
 +Welcome to your new account.
 +.
 +quit
 ++OK Bye-bye.
 +</sxh>
 +
 +Agora vamos efetuar um teste com o Imap 
 +<sxh bash>
 +telnet localhost 143
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '^]'.
 +* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc.  See COPYING for distribution information.
 +a login douglas@douglasqsantos.com.br doug123
 +a OK LOGIN Ok.
 +a list "" "*"
 +* LIST (\Unmarked \HasNoChildren) "." "INBOX"
 +a OK LIST completed
 +a examine inbox
 +* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
 +* OK [PERMANENTFLAGS ()] No permanent flags permitted
 +* 1 EXISTS
 +* 1 RECENT
 +* OK [UIDVALIDITY 1349207001] Ok
 +* OK [MYRIGHTS "acdilrsw"] ACL
 +a OK [READ-ONLY] Ok
 +a fetch 1 body[]
 +* 1 FETCH (BODY[] {982}
 +Return-Path: <douglas@douglasqsantos.com.br>
 +X-Original-To: douglas@douglasqsantos.com.br
 +Delivered-To: douglas@douglasqsantos.com.br
 +Received: from localhost (localhost [127.0.0.1])
 +        by mail.douglasqsantos.com.br (Postfix) with ESMTP id 3354E11F51
 +        for <douglas@douglasqsantos.com.br>; Tue,  2 Oct 2012 16:25:21 -0300 (BRT)
 +Received: from mail.douglasqsantos.com.br ([127.0.0.1])
 +        by localhost (mail.douglasqsantos.com.br [127.0.0.1]) (amavisd-new, port 10024)
 +        with ESMTP id FTU91CRKqv-J for <douglas@douglasqsantos.com.br>;
 +        Tue,  2 Oct 2012 16:25:19 -0300 (BRT)
 +Received: from 10.101.0.25 (localhost [127.0.0.1])
 +        by mail.douglasqsantos.com.br (Postfix) with ESMTP id B3C1611F4E
 +        for <douglas@douglasqsantos.com.br>; Tue,  2 Oct 2012 16:25:18 -0300 (BRT)
 +To: douglas@douglasqsantos.com.br
 +From: douglas@douglasqsantos.com.br
 +Subject: Bem-vindo(a)
 +MIME-Version: 1.0
 +Content-Type: text/plain; charset=utf-8
 +Content-Transfer-Encoding: 8bit
 +Message-Id: <20121002192518.B3C1611F4E@mail.douglasqsantos.com.br>
 +Date: Tue,  2 Oct 2012 16:25:18 -0300 (BRT)
 + 
 +Hi,
 + 
 +Welcome to your new account.
 +)
 +a OK FETCH completed.
 +a logout
 +* BYE Courier-IMAP server shutting down
 +a OK LOGOUT completed
 +Connection closed by foreign host.
 +</sxh>
 +
 +Agora vamos efetuar um teste do imap com ssl
 +<sxh bash>
 +openssl s_client -connect localhost:993 -quiet
 +depth=0 /C=BR/ST=PR/L=Curitiba/O=Douglas Imap Server/OU=Douglas IMAP SSL key/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
 +verify error:num=18:self signed certificate
 +verify return:1
 +depth=0 /C=BR/ST=PR/L=Curitiba/O=Douglas Imap Server/OU=Douglas IMAP SSL key/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
 +verify return:1
 +* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc.  See COPYING for distribution information.
 +a login douglas@douglasqsantos.com.br doug123
 +* OK [ALERT] 
 +a OK LOGIN Ok.
 +a list "" "*"
 +* LIST (\Marked \HasNoChildren) "." "INBOX"
 +a OK LIST completed
 +a examine inbox
 +* FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
 +* OK [PERMANENTFLAGS ()] No permanent flags permitted
 +* 5 EXISTS
 +* 5 RECENT
 +* OK [UIDVALIDITY 1349380413] Ok
 +* OK [MYRIGHTS "acdilrsw"] ACL
 +a OK [READ-ONLY] Ok
 +a fetch 1 body[]
 +* 1 FETCH (BODY[] {625}
 +Return-Path: <douglas@douglasqsantos.com.br>
 +X-Original-To: douglas@douglasqsantos.com.br
 +Delivered-To: douglas@douglasqsantos.com.br
 +Received: from 10.101.0.25 (localhost [127.0.0.1])
 +  by mail.douglasqsantos.com.br (Postfix) with ESMTP id 41BEA11F4A
 +  for <douglas@douglasqsantos.com.br>; Thu,  4 Oct 2012 15:05:29 -0300 (BRT)
 +To: douglas@douglasqsantos.com.br
 +From: douglas@douglasqsantos.com.br
 +Subject: Bem-vindo(a)
 +MIME-Version: 1.0
 +Content-Type: text/plain; charset=utf-8
 +Content-Transfer-Encoding: 8bit
 +Message-Id: <20121004180529.41BEA11F4A@mail.douglasqsantos.com.br>
 +Date: Thu,  4 Oct 2012 15:05:29 -0300 (BRT)
 +
 +Hi,
 +
 +Welcome to your new account.
 +)
 +a OK FETCH completed.
 +a logout
 +* BYE Courier-IMAP server shutting down
 +a OK LOGOUT completed
 +</sxh>
 +
 +
 +Até aqui já temos o Postfix trabalhando corretamente porém vamos adicionar mais funcionalidades a ele ;) 
 +====== Sincronismos de contas de Email entre servidores com o Fetchmail ======
 +<sxh bash>
 +apt-get install fetchmail liblockfile-simple-perl -y 
 +mkdir /var/run/fetchmail
 +touch /var/run/fetchmail/fetchmail-all.lock 
 +</sxh>
 +Vamos instalar as dependências 
 +<sxh bash>
 +perl -MCPAN -e shell 
 +cpan[1]> force install DBI
 +cpan[2]> force install MIME::Base64
 +cpan[3]> force install File::Temp
 +cpan[4]> force install Sys::Syslog
 +cpan[5]> force install LockFile::Simple
 +cpan[6]> force install YAML
 +cpan[7]> q
 +</sxh>
 +Acertando o fetchmail 
 +<sxh perl>
 +vim /var/www/postfixadmin/ADDITIONS/fetchmail.pl
 +[...]
 +#our $db_type = ‘Pg’;
 +my $db_type = 'mysql';
 +
 +# host name
 +our $db_host="127.0.0.1";
 +# database name
 +our $db_name="mail";
 +# database username
 +our $db_username="mail";
 +# database password
 +our $db_password="123";
 +
 +# instead of changing this script, you can put your settings to /etc/mail/postfixadmin/fetchmail.conf
 +# just use perl syntax there to fill the variables listed above (without the "our" keyword). Example:
 +#Deixar as linhas abaixo comentadas por padrão elas vem descomentadas
 +# $db_username = 'mail';
 +#if (-f "/etc/mail/postfixadmin/fetchmail.conf") {
 +#       require "/etc/mail/postfixadmin/fetchmail.conf";
 +#}
 +</sxh>
 +Acertando as permissões do fetchmail 
 +<sxh bash>
 +chmod 755 /var/www/postfixadmin/ADDITIONS/fetchmail.pl 
 +</sxh>
 +Ajuste o Crontab para efetuar sincronismo das contas aqui estou agendando para ser efetuado a cada 10 minutos acerte de acordo com a necessidade. 
 +<sxh bash>
 +crontab -e
 +* */10      *                   /usr/bin/perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl
 +</sxh>
 +Sincronismo de contas de e-mail entre servidores 
 +Para que o servidor já inicie o sincronismo das contas de e-mail do servidor atual, configuraremos as contas da seguinte forma: 
 +  * Acesse o frontend do postfixadmin: 
 +  * Clique no menu Recuperar Mensagem 
 +  * Clique no Sub-menu Criar novo registro 
 +  * Selecione a conta 
 +  * Informar o servidor: 
 +  * Autenticação : password 
 +  * Usuario:  email@dominio.com.br 
 +  * Senha: senha 
 +  * Diretorio: INBOX 
 +  * Checar: 10 
 +  * Recuperar todas: Marcar 
 +  * Manter: Marcar 
 +  * Protocolo: IMAP 
 +  * Agora GRAVAR. 
 +====== Instalando e configurando o RoundCubeMail ======
 +
 +Vamos obter ele e desempacotar
 +<sxh bash>
 +mkdir /var/www/webmail
 +cd /var/www/webmail
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/mail/roundcubemail-0.8.3.tar.gz
 +tar -xzvf roundcubemail-0.8.3.tar.gz
 +rm -rf roundcubemail-0.8.3.tar.gz
 +mv roundcubemail-0.8.3/* .
 +rm -rf roundcubemail-0.8.3
 +</sxh>
 +
 +Agora vamos preparar o banco de dados para o webmail
 +<sxh sql>
 +psql -U postgres -h localhost
 +create user webmail with password 'senha';
 +create database webmail with owner webmail;
 +\q
 +</sxh>
 +
 +Vamos acertar as permissões do webmail
 +<sxh bash>
 +chown -R www-data:www-data /var/www/webmail
 +</sxh>
 +
 +Vamos acertar o arquivo /etc/php5/apache2/php.ini
 +
 +<sxh bash>
 +vim /etc/php5/apache2/php.ini
 +[...]
 +suhosin.session.encrypt=0
 +[...]
 +date.timezone = America/Sao_Paulo
 +</sxh>
 +
 +Agora precisamos reiniciar o apache
 +<sxh bash>
 +/etc/init.d/apache2 restart
 +</sxh>
 +
 +Agora vamos acertar os arquivos de configuração
 +<sxh bash>
 +cd /var/www/webmail/config
 +cp db.inc.php.dist db.inc.php
 +cp main.inc.php.dist main.inc.php
 +</sxh>
 +
 +Vamos acertar o arquivo de conexão com o banco de dados
 +<sxh bash>
 +sed -i "s|mysql://roundcube:pass@localhost/roundcubemail|pgsql://webmail:senha@localhost/webmail|g" db.inc.php
 +</sxh>
 +
 +Vamos acertar a configuração do arquivo de configuração principal do webmail
 +<sxh bash>
 +sed -i "s,\$rcmail_config\['default_host'\] = '';,\$rcmail_config\['default_host'\] = 'ssl://localhost';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['default_port'\] = 143;,\$rcmail_config\['default_port'\] = 993;,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['smtp_server'\] = '';,\$rcmail_config\['smtp_server'\] = 'tls://localhost';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['smtp_port'\] = 25;,\$rcmail_config\['smtp_port'\] = 587;,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['smtp_user'\] = '';,\$rcmail_config\['smtp_user'\] = '%u';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['smtp_pass'\] = '';,\$rcmail_config\['smtp_pass'\] = '%p';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['plugins'\] = array();,\$rcmail_config\['plugins'\] = array(\"password\");,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['language'\] = null;,\$rcmail_config\['language'\] = 'pt_BR';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['drafts_mbox'\] = 'Drafts';,\$rcmail_config\['drafts_mbox'\] = 'Rascunhos';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['junk_mbox'\] = 'Junk';,\$rcmail_config\['junk_mbox'\] = 'Spam';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['sent_mbox'\] = 'Sent';,\$rcmail_config\['sent_mbox'\] = 'Enviados';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['trash_mbox'\] = 'Trash';,\$rcmail_config\['trash_mbox'\] = 'Lixeira';,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['create_default_folders'\] = false;,\$rcmail_config\['create_default_folders'\] = true;,g" /var/www/webmail/config/main.inc.php
 +sed -i "s,\$rcmail_config\['mime_param_folding'\] = 1;,\$rcmail_config\['mime_param_folding'\] = 0;,g" /var/www/webmail/config/main.inc.php
 +sed -i "s/\$rcmail_config\['default_folders'\] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');/\$rcmail_config\['default_folders'\] = array('INBOX', 'Rascunhos', 'Enviados', 'Spam', 'Lixeira');/g" /var/www/webmail/config/main.inc.php
 +</sxh>
 +
 +Agora vamos acertar o plugin do roundcubemail para que o usuário possa trocar a senha.
 +<sxh bash>
 +cd /var/www/webmail/plugins/password
 +cp config.inc.php.dist config.inc.php
 +</sxh>
 +
 +Agora vamos acertar a configuração sobre qual tabela o webmail vai ter que atualizar no banco, e a query que vamos enviar para o banco para mandar atualizar a senha.
 +<sxh bash>
 +sed -i "s,\$rcmail_config\['password_db_dsn'\] = '';,\$rcmail_config\['password_db_dsn'\] = 'pgsql://webmail:senha@localhost/mail';,g" /var/www/webmail/plugins/password/config.inc.php
 +sed -i "s/\$rcmail_config\['password_query'\] = 'SELECT update_passwd(%c, %u)';/\$rcmail_config\['password_query'\] = 'UPDATE mailbox SET password=%c,modified=NOW() WHERE username=%u';/g" /var/www/webmail/plugins/password/config.inc.php
 +</sxh>
 +
 +Agora precisamos dar permissão para o webmail atualizar a tabela mailbox do banco mail.
 +<sxh bash>
 +psql -h localhost -U mail
 +Senha para usuário mail: #senha
 +psql (8.4.13)
 +Digite "help" para ajuda.
 +mail=> grant select,update on table mailbox to webmail;
 +GRANT
 +mail=> \q
 +</sxh>
 +
 +Inicialize o banco
 +<sxh bash>
 +psql -h localhost -U webmail -d webmail  < /var/www/webmail/SQL/postgres.initial.sql
 +</sxh>
 +
 +Removendo o instalador do Webmail:
 +<sxh bash>
 +rm -rf /var/www/webmail/installer
 +</sxh>
 +
 +Nosso webmail já esta no ar para testar acesse http://ip_servidor/webmail informe o usuário e senha
 +
 +
 +Agora vamos criar um script para gerenciar os nossos serviços de Email o primeiro vamos levar em consideração que instalamos o Courier.
 +<sxh bash>
 +vim /etc/init.d/servmail.sh
 +#!/bin/bash
 +### CORES UTILIZADAS NO SCRIPT ###
 +GREY="\033[01;30m"
 +RED="\033[01;31m"
 +GREEN="\033[01;32m"
 +YELLOW="\033[01;33m"
 +BLUE="\033[01;34m"
 +PURPLE="\033[01;35m"
 +CYAN="\033[01;36m"
 +WHITE="\033[01;37m"
 +CLOSE="\033[m"
 +
 +#VALIDA RETORNO DE COMANDO
 +_CHECAR () {
 +if [ $? -eq 0 ]; then
 +  echo -e "${GREEN}[  OK  ]${CLOSE}"
 +else
 +  echo -e " ${RED}[ FALHOU ]${CLOSE}"
 +fi
 +}
 +
 +
 +STOP="apache2 saslauthd courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl postfix"
 +START="saslauthd courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl postfix apache2"
 +
 +
 +case $1 in
 +stop)
 +echo -e "${RED} PARANDO OS SERVICOS ${CLOSE}"
 +for END in ${STOP}
 +do
 +/etc/init.d/${END} stop 
 +echo -e "${RED} SERVICO ${END} PARADO COM SUCESSO ${CLOSE} $(_CHECAR)";
 +done
 +echo -e "${RED} SERVICOS PARADOS ${CLOSE}"
 +;;
 +
 +start)
 +echo -e "${BLUE} INICIANDO OS SERVICOS ${CLOSE}"
 +for END in ${START}
 +do
 +/etc/init.d/${END} start
 +echo -e "${BLUE} SERVICO ${END} INICIADO COM SUCESSO ${CLOSE} $(_CHECAR)";
 +done
 +echo -e "${BLUE} SERVICOS INICIADOS ${CLOSE}"
 +;;
 +
 +restart)
 +  $0 stop
 +  $0 start
 +;;
 +
 +  *)
 +   echo  "${RED}Opcoes Validas:(start|stop|restart)${CLOSE}"
 +  ;;
 +
 +esac
 +</sxh>
 +
 +
 +Agora vamos acertar as permissões do script.
 +<sxh bash>
 +chmod 755 /etc/init.d/servmail.sh
 +</sxh>
 +
 +Agora para parar os serviços de email.
 +<sxh bash>
 +/etc/init.d/servmail.sh stop
 +</sxh>
 +
 +Agora para iniciar os serviços de email.
 +<sxh bash>
 +/etc/init.d/servmail.sh start
 +</sxh>
 +
 +Agora para reiniciar os serviços de email.
 +<sxh bash>
 +/etc/init.d/servmail.sh restart
 +</sxh>
 +
 +Agora é só ir ajustando de acordo com o seu ambiente.
 +====== Fazendo backup das bases de dados ======
 +
 +Para efetuarmos o backup das bases de dados podemos fazer da seguinte forma
 +<sxh bash>
 +pg_dumpall -i -h localhost -U postgres -c -o -f bancos.dump
 +</sxh>
 +
 +No comando acima estamos fazendo backup de todos os bancos disponíveis no PostgreSQL, eu acho o mais correto pois não podemos nada.
 +
 +Para restaurar todos os bancos podemos fazer da seguinte forma
 +<sxh bash>
 +psql -h localhost -U postgres -f bancos.dump
 +</sxh> 
 +
 +No comando acima estamos restaurando todos os banco de dados do PostgreSQL.
 +
 +Caso precise efetuar o backup de somente um banco pode exemplo o banco dos emails podemos fazer da seguinte forma
 +<sxh bash>
 +pg_dump mail -i -h localhost -U postgres -c -o -f mail.dump
 +</sxh>
 +
 +Para restaurar o backup deste banco podemos fazer da seguinte forma
 +<sxh bash>
 +psql -h localhost -U postgres -f mail.dump
 +</sxh>
 +
 +
 +Para que o sistema não fique solicitando a senha podemos fazer o backup e o restore utilizando o usuário postgres do sistema da seguinte forma no servidor 
 +
 +<sxh bash>
 +su - postgres
 +postgres@mail:~$ pg_dumpall -i -c -o -f bancos.dump
 +</sxh>
 +
 +Agora para efetuar o restore
 +<sxh bash>
 +su - postgres
 +postgres@mail:~$ psql -f bancos.dump
 +</sxh>
 +
 +Simples fácil e rápido ;)
 +
 +====== Referências ======
 +
 +  - http://www.postfix.org/
 +  - http://www.postfix.org/documentation.html
 +  - http://www.postfix.org/docs.html
 +  - http://www.postfix.org/SASL_README.html
 +  - http://freecode.com/projects/pam_pgsql
 +  - http://wiki.dovecot.org/HowTo/DovecotPostgresql
 +  - http://httpd.apache.org/
 +  - http://httpd.apache.org/docs/
 +  - http://httpd.apache.org/docs/2.2/ssl/
 +  - http://wiki.apache.org/httpd/
 +  - http://httpd.apache.org/docs/2.2/vhosts/
 +  - http://postfixadmin.sourceforge.net/
 +  - http://dev.mysql.com/
 +  - http://dev.mysql.com/doc/
 +  - http://php.net/
 +  - http://vda.sourceforge.net/
 +  - http://www.openssl.org/
 +  - http://www.postgresql.org/docs/8.1/static/sql-grant.html