Differences

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

Link to this comparison view

postfix_mysql_courier_mailscanner_mailwatch_webmail_afterlogic_postfixadmin_quota_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Postfix + MySQL + Courier + MailScanner + MailWatch + Webmail AfterLogic + Postfixadmin + Quota + Debian Squeeze ​ ======
  
 +
 +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>​
 +
 +**Comentar as linhas do arquivo "/​etc/​apt/​sources.list"​ adicionadas para o download do postfix.**
 +
 +**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 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-mysql*.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 e MySQL para a utilização do Postfixadmin**
 +
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +aptitude install mysql-server mysql-client apache2 php5 php5-mysql php5-imap libpam-mysql -y
 +</​sxh>​
 +  * Será solicitado a senha do banco de dados, informe e confirme ela.
 +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>​
 +
 +Criação do banco de dados dos usuários de e-mail
 +<sxh sql>
 +mysql -u root -p
 +CREATE DATABASE mail;
 +GRANT ALL PRIVILEGES ON mail.* TO mail@localhost IDENTIFIED BY "​123";​
 +FLUSH PRIVILEGES;
 +quit;
 +</​sxh>​
 +
 +**Instalação e configuração do PostFix Admin**
 +
 +Obtendo o 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/​pacotes/​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
 +<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\['​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 libmail-sender-perl 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';​ ->temos que comentar essa linha
 +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.dominio.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.
 +
 +**Autenticação**
 +
 +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>​
 +
 +**Usuário do Postfix**
 +
 +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>​
 +
 +**Modulos do postfix**
 +
 +Instalando os módulos do postfix
 +
 +<sxh bash>
 +aptitude install postfix-policyd-spf-perl libsasl2-2 libsasl2-modules-sql -y
 +chown -R vmail:​postdrop /home/vmail
 +</​sxh>​
 +
 +
 +
 +Ajustando configurações do Postfix
 +
 +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,​ 172.31.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
 +header_checks ​                  = regexp:/​etc/​postfix/​header_checks
 +#​-----------------------------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-------------------------------------------- ​
 +#​--------------------------------MYSQL------------------------------------------- ​
 +transport_maps ​     = proxy:​mysql:/​etc/​postfix/​mysql_transport_maps.cf
 +virtual_alias_maps ​   = proxy:​mysql:/​etc/​postfix/​mysql_virtual_alias_maps.cf
 +virtual_mailbox_domains ​  = proxy:​mysql:/​etc/​postfix/​mysql_virtual_domains_maps.cf
 +virtual_mailbox_maps ​   = proxy:​mysql:/​etc/​postfix/​mysql_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 MYSQL------------------------------------------- ​
 +#​-----------------------------QUOTA-----------------------------------------------
 +virtual_mailbox_limit ​    = 51200000
 +virtual_mailbox_limit ​    = 0
 +virtual_maildir_extended ​ = yes
 +virtual_mailbox_limit_override ​ = yes
 +virtual_mailbox_limit_maps ​ = mysql:/​etc/​postfix/​mysql_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,​
 + ​check_policy_service unix:​private/​policy,​
 + ​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,​
 + ​check_policy_service inet:​127.0.0.1:​60000,​
 + ​reject_unknown_client
 +#​------------------------END CONTROLS-------------------------------------------
 +</​sxh>​
 +
 +Vamos criar o arquivo necessário para para a checagem de Spam e AntiVirus.
 +<sxh bash>
 +echo "/​^Received:/​ HOLD" > /​etc/​postfix/​header_checks
 +</​sxh>​
 +
 +Geração das chaves para a conexão com TLS
 +
 +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 MySQL + 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/​mysql_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/​mysql_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/​mysql_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/​mysql_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/​mysql_virtual_mailbox_maps.cf ​
 +user = mail
 +password = 123
 +hosts = localhost
 +dbname = mail
 +query = SELECT maildir FROM mailbox WHERE username='​%s'​ AND active = 1
 +</​sxh>​
 +Vamos acertar as permissões
 +<sxh bash>
 +chmod o= /​etc/​postfix/​mysql_*
 +chgrp postfix /​etc/​postfix/​mysql_*
 +</​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       ​- ​      ​- ​      ​- ​      ​0 ​      ​cleanup
 +qmgr      fifo  n       ​- ​      ​n ​      ​300 ​    ​1 ​      qmgr
 +tlsmgr ​   unix  -       ​- ​      ​- ​      ​1000? ​  ​1 ​      ​tlsmgr
 +rewrite ​  ​unix ​ -       ​- ​      ​- ​      ​- ​      ​- ​      ​trivial-rewrite
 +bounce ​   unix  -       ​- ​      ​- ​      ​- ​      ​0 ​      ​bounce
 +defer     ​unix ​ -       ​- ​      ​- ​      ​- ​      ​0 ​      ​bounce
 +trace     ​unix ​ -       ​- ​      ​- ​      ​- ​      ​0 ​      ​bounce
 +verify ​   unix  -       ​- ​      ​- ​      ​- ​      ​1 ​      ​verify
 +flush     ​unix ​ n       ​- ​      ​- ​      ​1000? ​  ​0 ​      flush
 +proxymap ​ unix  -       ​- ​      ​n ​      ​- ​      ​- ​      ​proxymap
 +proxywrite unix -       ​- ​      ​n ​      ​- ​      ​1 ​      ​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 ​ -       ​n ​      ​n ​      ​- ​      ​- ​      local
 +virtual ​  ​unix ​ -       ​n ​      ​n ​      ​- ​      ​- ​      ​virtual
 +lmtp      unix  -       ​- ​      ​- ​      ​- ​      ​- ​      lmtp
 +anvil     ​unix ​ -       ​- ​      ​- ​      ​- ​      ​1 ​      anvil
 +scache ​   unix  -       ​- ​      ​- ​      ​- ​      ​1 ​      ​scache
 +#​----------------------------END SERVICES-----------------------------------------
 +#​----------------------------DELIVERY METHODS-------------------------------------
 +maildrop ​ unix  -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=DRhu user=vmail argv=/​usr/​bin/​maildrop -d ${recipient}
 +uucp      unix  -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
 +ifmail ​   unix  -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=F user=ftn argv=/​usr/​lib/​ifmail/​ifmail -r $nexthop ($recipient)
 +bsmtp     ​unix ​ -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=Fq. user=bsmtp argv=/​usr/​lib/​bsmtp/​bsmtp -t$nexthop -f$sender $recipient
 +scalemail-backend unix  - n n - 2 pipe
 +  flags=R user=scalemail argv=/​usr/​lib/​scalemail/​bin/​scalemail-store ${nexthop} ${user} ${extension}
 +mailman ​  ​unix ​ -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=FR user=list argv=/​usr/​lib/​mailman/​bin/​postfix-to-mailman.py
 +  ${nexthop} ${user}
 +#​--------------------------END DELIVERY METHODS----------------------------------------------- ​
 +#​--------------------------SPF----------------------------------------------------------------
 +policy ​ unix  -       ​n ​      ​n ​      ​- ​      ​- ​      spawn
 + ​user=nobody argv=/​usr/​bin/​perl /​usr/​sbin/​postfix-policyd-spf-perl
 +#​--------------------------END SPF------------------------------------------------------------
 +#​----------------------------VACATION---------------------------------------------------------
 +vacation ​   unix  -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=Rq user=vacation argv=/​var/​spool/​vacation/​vacation.pl -f ${sender} -- ${recipient}
 +#​----------------------------END VACATION-----------------------------------------------------
 +</​sxh>​
 +
 +<sxh bash>
 +vim /​usr/​lib/​sasl2/​smtpd.conf
 +pwcheck_method:​ saslauthd
 +mech_list: PLAIN LOGIN
 +auxprop_plugin:​ sql
 +allow_plaintext:​ true
 +sql_verbose:​ yes
 +sql_engine: mysql
 +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
 +<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 preparar o mysql para trabalhar com o Postfix
 +<sxh bash>
 +mkdir -p /​var/​spool/​postfix/​var/​run/​mysqld
 +</​sxh>​
 +
 +
 +Agora vamos acertar o arquivo de inicialização do MySQL
 +<sxh bash>
 +vim /​etc/​init.d/​mysql
 +[...]
 +        fi
 +#insira a linha abaixo antes do ;; por quando o mysql for iniciar ele cria o socket e linka
 +/bin/ln -f /​var/​run/​mysqld/​mysqld.sock /​var/​spool/​postfix/​var/​run/​mysqld/​mysqld.sock
 +        ;;
 + 
 +  '​stop'​)
 +</​sxh>​
 +
 +Agora vamos acertar a permissão do diretório /​var/​run/​mysqld
 +<sxh bash>
 +chown -R vmail:mysql /​var/​run/​mysqld && chmod -R 775 /​var/​run/​mysqld
 +</​sxh>​
 +
 +<sxh bash>
 +/​etc/​init.d/​mysql restart
 +/​etc/​init.d/​saslauthd restart
 +</​sxh>​
 +
 +
 +** Galera aqui vou demostrar a instalação do Courier e do Dovecot na minha opinião o Dovecot é um pouco mais chato, e o Courier mais simples de manipular. **
 +
 +**Instalação do Courier **
 +<sxh bash>
 +aptitude install courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-mysql courier-authdaemon -y
 +#Resposta
 +1) 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/​authmysqlrc{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos acertar o arquivo de conexão do Courier com o Mysql
 +<sxh bash>
 +vim /​etc/​courier/​authmysqlrc
 +MYSQL_SERVER localhost
 +MYSQL_USERNAME mail
 +MYSQL_PASSWORD 123
 +MYSQL_SOCKET /​var/​run/​mysqld/​mysqld.sock
 +MYSQL_PORT 3306
 +MYSQL_OPT 0
 +MYSQL_DATABASE mail
 +MYSQL_USER_TABLE mailbox
 +MYSQL_CRYPT_PWFIELD password
 +MYSQL_CLEAR_PWFIELD password
 +MYSQL_UID_FIELD '​107'​
 +MYSQL_GID_FIELD '​107'​
 +MYSQL_LOGIN_FIELD username
 +MYSQL_HOME_FIELD '/​home/​vmail'​
 +MYSQL_NAME_FIELD name
 +MYSQL_MAILDIR_FIELD CONCAT("/​home/​vmail/",​maildir)
 +MYSQL_QUOTA_FIELD concat(quota,'​S'​)
 +</​sxh>​
 +
 +
 +Agora vamos acertar a configuração do serviço do Courier ​
 +<sxh bash>
 +vim /​etc/​courier/​authdaemonrc
 +authmodulelist="​authmysql"​
 +authmodulelistorig="​authmysql"​
 +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>​
 +
 +Agora é só reiniciar os serviços ​
 +<sxh bash>
 +/​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>​
 +
 +
 +Ajustando a forma de autenticação do POP3, IMAP e  SMTP
 +<sxh bash>
 +vim /​etc/​pam.d/​pop3
 +auth required pam_mysql.so user=mail passwd=123 host=localhost db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 sqllog=0 debug
 +account sufficient pam_mysql.so user=mail passwd=123 host=localhost db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 sqllog=0 debug
 +auth sufficient pam_unix.so debug
 +account sufficient pam_unix.so debug
 +</​sxh>​
 +<sxh bash>
 +cp -Rfa /​etc/​pam.d/​pop3 /​etc/​pam.d/​imap
 +cp -Rfa /​etc/​pam.d/​pop3 /​etc/​pam.d/​smtp
 +</​sxh>​
 +**Anti-Virus**
 +
 +Instalação dos pacotes para do antivirus e do antispam.
 +<sxh bash>
 +aptitude install bzip2 unrar unzip zip arj pax arc ripole cabextract lzop p7zip-full libgamin-dev gamin -y
 +aptitude install clamav clamav-freshclam clamav-daemon spamassassin postgrey libpathtools-perl mailscanner -y
 +</​sxh>​
 +
 +**Instalando suporte a razor e pyzor**
 +<sxh bash>
 +apt-get install libnet-dns-perl razor pyzor -y
 +</​sxh>​
 +
 +Acertando as configurações do razor e do pyzor
 +<sxh bash>
 +razor-admin -d --create
 +razor-admin -register
 +razor-admin -discover
 +pyzor discover
 +</​sxh>​
 +
 +**Configurando o SpamAssassin**
 +
 +Vamos fazer backup do arquivo de configuração
 +<sxh bash>
 +cp /​etc/​default/​spamassassin{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos configurar o spamassassin
 +<sxh bash>
 +vim /​etc/​default/​spamassassin
 +ENABLED=1
 +OPTIONS="​--create-prefs --max-children 5 --helper-home-dir"​
 +PIDFILE="/​var/​run/​spamd.pid"​
 +CRON=0
 +</​sxh>​
 +
 +Fazendo um backup do arquivo de configuração
 +<sxh bash>
 +cp /​etc/​spamassassin/​local.cf{,​.bkp}
 +</​sxh>​
 +
 +Acertando o SpamAssassin
 +<sxh bash>
 +vim /​etc/​spamassassin/​local.cf
 +#​-------------------------GLOBAL----------------------------------------
 +rewrite_header Subject *****SPAM*****
 +report_safe 0
 +trusted_networks 10.0.0. 172.31.0.
 +required_score 2.0
 +use_bayes 1
 +bayes_auto_learn 1
 +bayes_ignore_header X-Bogosity
 +bayes_ignore_header X-Spam-Flag
 +bayes_ignore_header X-Spam-Status
 +ifplugin Mail::​SpamAssassin::​Plugin::​Shortcircuit
 +shortcircuit USER_IN_WHITELIST ​      on
 +shortcircuit USER_IN_DEF_WHITELIST ​  on
 +shortcircuit USER_IN_ALL_SPAM_TO ​    on
 +shortcircuit SUBJECT_IN_WHITELIST ​   on
 +shortcircuit USER_IN_BLACKLIST ​      on
 +shortcircuit USER_IN_BLACKLIST_TO ​   on
 +shortcircuit SUBJECT_IN_BLACKLIST ​   on
 +shortcircuit ALL_TRUSTED ​            on
 +shortcircuit BAYES_99 ​               spam
 +shortcircuit BAYES_00 ​               ham
 +endif 
 +#​-------------------------END GLOBAL------------------------------------
 +#​-------------------------MARKUP----------------------------------------
 +header DSPAM_SPAM X-DSPAM-Result =~ /^Spam$/
 +score DSPAM_SPAM 0.5
 +header DSPAM_HAM X-DSPAM-Result =~ /​^Innocent$/​
 +score DSPAM_HAM -0.1
 +#​------------------------END MARKUP-------------------------------------
 +#​----------------------DKIM---------------------------------------------
 +score DKIM_VERIFIED -0.1
 +score DKIM_SIGNED ​   0
 +score DKIM_POLICY_SIGNALL ​ 0
 +score DKIM_POLICY_SIGNSOME 0
 +score DKIM_POLICY_TESTING ​ 0
 +score USER_IN_DKIM_WHITELIST -8.0
 +score USER_IN_DEF_DKIM_WL -1.5
 +def_whitelist_from_dkim ​  ​*@google.com
 +def_whitelist_from_dkim ​  ​*@googlemail.com
 +def_whitelist_from_dkim ​  ​*@*googlegroups.com
 +score ENV_AND_HDR_DKIM_MATCH -0.1
 +score ENV_AND_HDR_SPF_MATCH ​ -0.5
 +#​---------------------END DKIM------------------------------------------
 +#​---------------------BLACK LIST AND WHITELIST--------------------------
 +blacklist_from ​ chakerv@att.net
 +whitelist_from_dkim ​ *@ebay.com
 +whitelist_from_dkim ​ *@*.ebay.com
 +whitelist_from_dkim ​ *@ebay.co.uk
 +whitelist_from_dkim ​ *@*.ebay.co.uk
 +whitelist_from_dkim ​ *@ebay.at
 +whitelist_from_dkim ​ *@ebay.ca
 +whitelist_from_dkim ​ *@ebay.de
 +whitelist_from_dkim ​ *@ebay.fr
 +whitelist_from_dkim ​ *@*.paypal.com
 +whitelist_from_dkim ​ *@paypal.com
 +whitelist_from_dkim ​ *@*paypal.com
 +whitelist_from_dkim ​ *@*.paypal.be
 +whitelist_from_dkim ​ *@cern.ch
 +whitelist_from_dkim ​ *@amazon.com
 +whitelist_from_dkim ​ *@cisco.com
 +whitelist_from_dkim ​ *@cnn.com
 +whitelist_from_dkim ​ *@*.cnn.com
 +whitelist_from_dkim ​ service@youtube.com
 +whitelist_from_dkim ​ googlealerts-noreply@google.com
 +#​-------------------END BLACK LIST AND WHITE LIST-----------------------
 +</​sxh>​
 +
 +Agora vamos reiniciar o SpamAssassin
 +<sxh bash>
 + /​etc/​init.d/​spamassassin restart
 +</​sxh>​
 +
 +**Configurando o Postgrey**
 +
 +Vamos fazer backup do arquivo de configuração
 +<sxh bash>
 +cp /​etc/​default/​postgrey{,​.bkp}
 +</​sxh>​
 +Agora vamos acertar a configuração do postgrey
 +<sxh bash>
 +vim /​etc/​default/​postgrey
 +POSTGREY_OPTS="​--inet=60000 --delay=60"​
 +POSTGREY_TEXT="​Seu email sera entregue em aproximadamente 60 segundos."​
 +</​sxh>​
 +
 +Vamos acertar a configuração do MailScanner
 +<sxh bash>
 +vim /​etc/​MailScanner/​MailScanner.conf ​
 +[...]
 +%org-name% = Douglas
 +[...]
 +%org-long-name% = Douglas Quintiliano dos Santos
 +[...]
 +%web-site% = wiki.douglasqsantos.com.br
 +[...]
 +%report-dir% = /​usr/​local/​share/​MailScanner/​reports/​pt_br
 +[...]
 +Run As User = postfix
 +[...]
 +Run As Group = postfix
 +[...]
 +Incoming Queue Dir = /​var/​spool/​postfix/​hold
 +[...]
 +Outgoing Queue Dir = /​var/​spool/​postfix/​incoming
 +[...]
 +MTA = postfix
 +[...]
 +Virus Scanners = clamav
 +[...]
 +Virus Subject Text = ***VIRUS***
 +[...]
 +Filename Subject Text = ***ARQUIVO BLOQUEADO***
 +[...]
 +Content Subject Text = ***CONTEUDO PERIGOSO***
 +[...]
 +Size Subject Text = ***TAMANHO ALTERADO***
 +[...]
 +Disarmed Modify Subject = no
 +[...]
 +Phishing Modify Subject = start
 +[...]
 +Phishing Subject Text = ***FRAUDE***
 +[...]
 +Spam Subject Text = ***SPAM***
 +[...]
 +High Scoring Spam Subject Text = ***SPAM***
 +[...]
 +Rebuild Bayes Every = 86400
 +[...]
 +Wait During Bayes Rebuild = yes
 +[...]
 +Log Spam = yes
 +[...]
 +Is Definitely Not Spam = &​SQLWhitelist
 +[...]
 +Is Definitely Spam = &​SQLBlacklist
 +[...]
 +Always Looked Up Last = &​MailWatchLogging
 +[...]
 +Detailed Spam Report = yes
 +[...]
 +Quarantine Whole Message = yes
 +[...]
 +Quarantine Whole Message As Queue Files = no
 +[...]
 +Include Scores In SpamAssassin Report = yes
 +[...]
 +Quarantine User = postfix
 +[...]
 +Quarantine Group = www-data
 +[...]
 +Quarantine Permissions = 0660
 +[...]
 +Scan Messages = %rules-dir%/​scan.messages.rules
 +[...]
 +Required SpamAssassin Score = 6.03
 +[...]
 +Spam Score Number Format = %5.2f
 +[...]
 +#include /​etc/​MailScanner/​conf.d/​*
 +</​sxh>​
 +
 +Agora vamos criar o arquivo que controla os domínios que vão ser verificados pelo MailScanner.
 +<sxh bash>
 +vim /​etc/​MailScanner/​rules/​scan.messages.rules
 +To:             ​douglasqsantos.com.br ​        no
 +From:           ​douglasqsantos.com.br ​        no
 +FromOrTo: ​      ​default ​                yes
 +</​sxh>​
 +
 +Aqui estamos definindo que não vão ser verificadas as mensagens de destino ou origem douglasqsantos.com.br,​ qualquer outro domínio vai ser checado por padrão.
 +
 +Agora vamos habilitar ele para inicializar no boot.
 +<sxh bash>
 +sed -i "​s/#​run_mailscanner=1/​run_mailscanner=1/​g"​ /​etc/​default/​mailscanner
 +</​sxh>​
 +
 +Vamos acertar mais um arquivo do MailScanner
 +<sxh bash>
 +sed -i "​s|#​!/​usr/​bin/​perl -I/​usr/​share/​MailScanner/​|#​!/​usr/​bin/​perl -U -I/​usr/​share/​MailScanner/​|g"​ /​usr/​sbin/​MailScanner
 +</​sxh>​
 +
 +Acertar a configuração do SpamAssasin com MailScanner
 +<sxh bash>
 +vim /​etc/​MailScanner/​spam.assassin.prefs.conf
 +[...]
 +bayes_path /​etc/​MailScanner/​bayes/​bayes
 +bayes_file_mode 0660
 +</​sxh>​
 +
 +Agora temos que acertar os diretórios
 +<sxh bash>
 +mkdir /​etc/​MailScanner/​bayes
 +chown postfix:​www-data /​etc/​MailScanner/​bayes
 +chmod g+rws /​etc/​MailScanner/​bayes
 +</​sxh>​
 +
 +Agora vamos acertar a permissão da Quarentena
 +<sxh bash>
 +chown -R postfix:​www-data /​var/​spool/​MailScanner/​quarantine
 +chmod -R 770 /​var/​spool/​MailScanner/​quarantine
 +</​sxh>​
 +
 +
 +
 +Agora vamos instalar o MailWatch que é uma interface Web para monitorarmos os nossos Emails Scaneados pelo MailScanner.
 +
 +Vamos instalar os pacotes necessários.
 +<sxh bash>
 +aptitude install apache2 php5-cli php5 mysql-server libdbd-mysql-perl php5-gd php5-mysql libapache2-mod-php5 -y
 +</​sxh>​
 +
 +Agora vamos obter o nosso MailWatch
 +<sxh bash>
 +cd /usr/src/
 +wget -c http://​wiki.douglasqsantos.com.br/​pacotes/​mailwatch-1.0.5.tar.gz
 +</​sxh>​
 +
 +Agora vamos desempacotar e acessar ele.
 +<sxh bash>
 +tar zxvf mailwatch-1.0.5.tar.gz && cd mailwatch-1.0.5
 +</​sxh>​
 +
 +Agora vamos importar o banco de dados.
 +<sxh bash>
 +mysql -u root -p < create.sql
 +</​sxh>​
 +
 +Agora Vamos acertar as permissões do banco de dados do mailscanner.
 +<sxh sql>
 +mysql -u root -p
 +GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY '​123';​
 +GRANT file ON *.* TO mailwatch@localhost IDENTIFIED BY '​123';​
 +FLUSH PRIVILEGES;
 +</​sxh>​
 +
 +Agora vamos acertar a configuração do MailWatch.
 +<sxh bash>
 +cd /​usr/​src/​mailwatch-1.0.5
 +sed -i "​s/​my(\$db_user) = '​root';/​my(\$db_user) = '​mailwatch';/​g"​ MailWatch.pm
 +sed -i "​s/​my(\$db_pass) = '';/​my(\$db_pass) = '​123';/​g"​ MailWatch.pm
 +sed -i "​s/​my(\$db_user) = '​root';/​my(\$db_user) = '​mailwatch';/​g"​ SQLBlackWhiteList.pm
 +sed -i "​s/​my(\$db_pass) = '';/​my(\$db_pass) = '​123';/​g"​ SQLBlackWhiteList.pm
 +sed -i "​s/​INTERVAL 60 DAY/​INTERVAL 30 DAY/g" tools/​db_clean.php
 +sed -i "​s|require_once('/​var/​www/​html/​mailscanner/​functions.php'​)|require_once('/​var/​www/​mailwatch/​functions.php'​)|g"​ tools/​quarantine_report.php
 +sed -i "​s|require('/​var/​www/​html/​mailscanner/​functions.php'​)|require('/​var/​www/​mailwatch/​functions.php'​)|g"​ tools/​db_clean.php
 +sed -i "​s|require('/​var/​www/​html/​mailscanner/​functions.php'​)|require('/​var/​www/​mailwatch/​functions.php'​)|g"​ tools/​quarantine_maint.php
 +</​sxh>​
 +
 +
 +Agora temos que acertar a localização do arquivo que insere as estatísticas do Mailscanner no Banco.
 +<sxh bash>
 +cd /​usr/​src/​mailwatch-1.0.5
 +cp -Rf MailWatch.pm /​usr/​share/​MailScanner/​MailScanner/​CustomFunctions/​
 +cp -Rf SQLBlackWhiteList.pm /​usr/​share/​MailScanner/​MailScanner/​CustomFunctions/​
 +cp -Rf tools/​db_clean.php /​etc/​cron.daily/​
 +cp -Rf tools/​quarantine_maint.php /​etc/​cron.daily/​
 +cp -Rf tools/​quarantine_report.php /​etc/​cron.daily/​
 +</​sxh>​
 +
 +Agora vamos acertar a permissão dos arquivo do cron
 +<sxh bash>
 +chmod 755 /​etc/​cron.daily/​{db_clean.php,​quarantine_maint.php,​quarantine_report.php}
 +</​sxh>​
 +Agora vamos inserir o nosso usuário admin do MailWatch no banco de dados, vou inserir o usuário admin com a senha 123.
 +<sxh bash>
 +mysql -u root -p mailscanner -e "​INSERT INTO users VALUES ('​mailwatch',​md5('​123'​),'​Administrator name','​A','​0','​0','​0','​0','​0'​);"​
 +</​sxh>​
 +
 +Agora vamos copiar o mailscanner para o /​var/​www/​mailwatch
 +<sxh bash>
 +cp -Rf mailscanner/​ /​var/​www/​mailwatch
 +</​sxh>​
 +
 +Agora vamos acertar as permissões do mailwatch
 +<sxh bash>
 +cd /​var/​www/​mailwatch
 +find . -type f -exec chmod 664 {} \;
 +find . -type d -exec chmod 775 {} \;
 +chown -R www-data:​www-data /​var/​www/​mailwatch
 +chmod -R 777 temp images/​cache
 +</​sxh>​
 +
 +Agora vamos fazer mais uns ajuste na configuração do mailwatch
 +<sxh bash>
 +cd /​var/​www/​mailwatch/​
 +mv conf.php.example conf.php
 +</​sxh>​
 +
 +Agora vamos acertar a configuração da conexão do mailwatch com o banco
 +<sxh bash>
 +cd /​var/​www/​mailwatch
 +sed -i "​s/​define('​DB_USER',​ '​root'​);/​define('​DB_USER',​ '​mailwatch'​);/​g"​ conf.php
 +sed -i "​s/​define('​DB_PASS',​ ''​);/​define('​DB_PASS',​ '​123'​);/​g"​ conf.php
 +sed -i "​s|define('​MAILWATCH_HOME',​ '/​var/​www/​html/​mailscanner'​);​|define('​MAILWATCH_HOME',​ '/​var/​www/​mailwatch'​);​|g"​ conf.php
 +sed -i "​s|define('​QUARANTINE_USE_FLAG',​ false)|define('​QUARANTINE_USE_FLAG',​ true)|g"​ conf.php
 +sed -i "​s|ini_set('​include_path','​.:'​.MAILWATCH_HOME.'/​pear:'​.MAILWATCH_HOME.'/​fpdf:'​.MAILWATCH_HOME.'/​xmlrpc'​);​|ini_set('​include_path','​.:'​.MAILWATCH_HOME.'/​pear:'​.MAILWATCH_HOME.'/​fpdf:'​.MAILWATCH_HOME.'/​xmlrpc:/​usr/​share/​php'​);​|g"​ functions.php ​
 +</​sxh>​
 +
 +Agora vamos instalar alguns módulos pear necessários.
 +<sxh bash>
 +pear install DB
 +pear install DB_Pager
 +pear install Mail_mimeDecode
 +</​sxh>​
 +
 +**Configurando o fetchmail para o postfixadmin**
 +
 +<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**.
 +
 +
 +
 +Agora vamos fazer uns acertos na configuração do MySQL.
 +<sxh bash>
 +vim /​etc/​mysql/​my.cnf
 +[...]
 +key_buffer ​             = 32M
 +max_allowed_packet ​     = 32M
 +[...]
 +query_cache_limit ​      = 4M
 +query_cache_size ​       = 32M
 +[...]
 +</​sxh>​
 +
 +Reiniciando os serviços ​
 +<sxh bash>
 +/​etc/​init.d/​clamav-daemon restart
 +/​etc/​init.d/​clamav-freshclam restart
 +/​etc/​init.d/​spamassassin restart
 +/​etc/​init.d/​postgrey 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
 +/​etc/​init.d/​mailscanner restart
 +/​etc/​init.d/​apache2 restart
 +/​etc/​init.d/​mysql 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-05-31 16:26 BRT
 +Interesting ports on localhost (127.0.0.1):​
 +Not shown: 988 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
 +783/​tcp ​ open  spamassassin
 +993/​tcp ​ open  imaps
 +995/​tcp ​ open  pop3s
 +3306/tcp open  mysql
 +
 +Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds
 +</​sxh>​
 +
 +
 +Agora em http://​ip_servidor/​postfixadmin crie um usuário para teste e continue com a configuração do maia pois sem um usuário cadastrado no sistema não vamos poder continuar os testes.
 +
 +Na tela web informe o usuário e a senha, agora selecione o dominio douglasqsantos.com.br e selecione criar conta, agora informe o nome dela uma senha e confirme e selecione criar conta.
 +
 +Nos logs vai ter que aparecer algo como abaixo.
 +<sxh bash>
 +tail -f /​var/​log/​mail.log
 +May 31 16:33:51 mail postfix/​smtpd[26360]:​ connect from localhost[127.0.0.1]
 +May 31 16:33:51 mail postfix/​smtpd[26360]:​ 510F82CA62: client=localhost[127.0.0.1]
 +May 31 16:33:51 mail postfix/​cleanup[26362]:​ 510F82CA62: hold: header Received: from 10.101.0.20 (localhost [127.0.0.1])??​by mail.douglas.lan (Postfix) with ESMTP id 510F82CA62??​for <​maria@douglas.lan>;​ Thu, 31 May 2012 16:33:51 -0300 (BRT) from localhost[127.0.0.1];​ from=<​admin@douglas.lan>​ to=<​maria@douglas.lan>​ proto=ESMTP helo=<​10.101.0.20>​
 +May 31 16:33:51 mail postfix/​cleanup[26362]:​ 510F82CA62: message-id=<​20120531193351.510F82CA62@mail.douglas.lan>​
 +May 31 16:33:51 mail postfix/​smtpd[26360]:​ disconnect from localhost[127.0.0.1]
 +May 31 16:33:55 mail MailScanner[26321]:​ New Batch: Scanning 1 messages, 1106 bytes
 +May 31 16:33:55 mail MailScanner[26321]:​ Virus and Content Scanning: Starting
 +May 31 16:34:00 mail MailScanner[26321]:​ Spam Checks: Starting
 +May 31 16:34:00 mail MailScanner[26321]:​ SpamAssassin cache hit for message 510F82CA62.AEB0C
 +May 31 16:34:01 mail MailScanner[26321]:​ Requeue: 510F82CA62.AEB0C to 82C2A2CA63
 +May 31 16:34:01 mail MailScanner[26321]:​ Uninfected: Delivered 1 messages
 +May 31 16:34:01 mail postfix/​qmgr[26296]:​ 82C2A2CA63: from=<​admin@douglas.lan>,​ size=480, nrcpt=1 (queue active)
 +May 31 16:34:01 mail postfix/​virtual[26358]:​ 82C2A2CA63: to=<​maria@douglas.lan>,​ relay=virtual,​ delay=9.9, delays=9.8/​0.04/​0/​0.04,​ dsn=2.0.0, status=sent (delivered to maildir)
 +May 31 16:34:01 mail postfix/​qmgr[26296]:​ 82C2A2CA63: removed
 +May 31 16:34:01 mail MailScanner[26321]:​ Deleted 1 messages from processing-database
 +</​sxh>​
 +
 +Agora vamos verificar se o nosso mailscanner está sabendo identificar virus e Spam, vamos testar primeiro o SPAM.
 +
 +Vamos enviar uma mensagem de Spam para o usuário maria.
 +<sxh bash>
 +mail -s "​Teste"​ maria@douglas.lan < /​usr/​share/​doc/​spamc/​sample-spam.txt
 +</​sxh>​
 +
 +Agora vamos verificar os logs.
 +<sxh bash>
 +tail -f /​var/​log/​mail.log
 +May 31 16:42:07 mail postfix/​pickup[26295]:​ 959462CA63: uid=0 from=<​root>​
 +May 31 16:42:07 mail postfix/​cleanup[26460]:​ 959462CA63: hold: header Received: by mail.douglas.lan (Postfix, from userid 0)??id 959462CA63; Thu, 31 May 2012 16:42:07 -0300 (BRT) from local; from=<​root@mail.douglas.lan>​ to=<​maria@douglas.lan>​
 +May 31 16:42:07 mail postfix/​cleanup[26460]:​ 959462CA63: message-id=<​20120531194207.959462CA63@mail.douglas.lan>​
 +May 31 16:42:08 mail MailScanner[26321]:​ New Batch: Scanning 1 messages, 1336 bytes
 +May 31 16:42:08 mail MailScanner[26321]:​ Virus and Content Scanning: Starting
 +May 31 16:42:12 mail MailScanner[26321]:​ Spam Checks: Starting
 +May 31 16:42:12 mail MailScanner[26321]:​ SpamAssassin cache hit for message 959462CA63.A9757
 +May 31 16:42:12 mail MailScanner[26321]:​ Message 959462CA63.A9757 from 127.0.0.1 (root@mail.douglas.lan) to douglas.lan is spam, SpamAssassin (cached, escore=999.999,​ requerido 6, GTUBE 1000.00, NO_RELAYS -0.00)
 +May 31 16:42:12 mail MailScanner[26321]:​ Spam Checks: Found 1 spam messages
 +May 31 16:42:12 mail MailScanner[26321]:​ Spam Actions: message 959462CA63.A9757 actions are store
 +May 31 16:42:12 mail MailScanner[26321]:​ Deleted 1 messages from processing-database
 +</​sxh>​
 +
 +Agora vamos mandar uma mensagem que não pode ser identificada como Spam.
 +<sxh bash>
 +gunzip /​usr/​share/​doc/​spamc/​sample-nonspam.txt.gz
 +mail -s "​Teste"​ maria@douglas.lan < /​usr/​share/​doc/​spamc/​sample-nonspam.txt
 +</​sxh>​
 +
 +Agora vamos verificar os logs.
 +<sxh bash>
 +tail -f /​var/​log/​mail.log
 +May 31 16:45:30 mail postfix/​pickup[26295]:​ 3B5072CA63: uid=0 from=<​root>​
 +May 31 16:45:30 mail postfix/​cleanup[26574]:​ 3B5072CA63: hold: header Received: by mail.douglas.lan (Postfix, from userid 0)??id 3B5072CA63; Thu, 31 May 2012 16:45:30 -0300 (BRT) from local; from=<​root@mail.douglas.lan>​ to=<​maria@douglas.lan>​
 +May 31 16:45:30 mail postfix/​cleanup[26574]:​ 3B5072CA63: message-id=<​20120531194530.3B5072CA63@mail.douglas.lan>​
 +May 31 16:45:36 mail MailScanner[26321]:​ New Batch: Scanning 1 messages, 7151 bytes
 +May 31 16:45:36 mail MailScanner[26321]:​ Virus and Content Scanning: Starting
 +May 31 16:45:39 mail MailScanner[26321]:​ Spam Checks: Starting
 +May 31 16:45:44 mail MailScanner[26321]:​ Requeue: 3B5072CA63.AA6EA to EFD8A2CA62
 +May 31 16:45:44 mail MailScanner[26321]:​ Uninfected: Delivered 1 messages
 +May 31 16:45:44 mail postfix/​qmgr[26296]:​ EFD8A2CA62: from=<​root@mail.douglas.lan>,​ size=6932, nrcpt=1 (queue active)
 +May 31 16:45:44 mail MailScanner[26321]:​ Deleted 1 messages from processing-database
 +May 31 16:45:44 mail postfix/​virtual[26587]:​ EFD8A2CA62: to=<​maria@douglas.lan>,​ relay=virtual,​ delay=15, delays=14/​0.15/​0/​0.03,​ dsn=2.0.0, status=sent (delivered to maildir)
 +May 31 16:45:44 mail postfix/​qmgr[26296]:​ EFD8A2CA62: removed
 +</​sxh>​
 +
 +Como pode ser notado a mensagem passou normalmente,​ agora vamos testar a verificação de Virus.
 +
 +Vamos criar o nosso arquivo
 +<sxh bash>
 +echo '​X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'​ > /​tmp/​arquivo.doc
 +</​sxh>​
 +
 +Agora vamos enviar ele para a usuário maria.
 +<sxh bash>
 +mail -s "​Arquivo Doc" maria@douglas.lan < /​tmp/​arquivo.doc
 +</​sxh>​
 +
 +Agora vamos ver os logs de Email
 +<sxh bash>
 +tail -f /​var/​log/​mail.log
 +May 31 16:48:48 mail postfix/​pickup[26295]:​ BB6842CA63: uid=0 from=<​root>​
 +May 31 16:48:48 mail postfix/​cleanup[26604]:​ BB6842CA63: hold: header Received: by mail.douglas.lan (Postfix, from userid 0)??id BB6842CA63; Thu, 31 May 2012 16:48:48 -0300 (BRT) from local; from=<​root@mail.douglas.lan>​ to=<​maria@douglas.lan>​
 +May 31 16:48:48 mail postfix/​cleanup[26604]:​ BB6842CA63: message-id=<​20120531194848.BB6842CA63@mail.douglas.lan>​
 +May 31 16:48:50 mail MailScanner[26321]:​ New Batch: Scanning 1 messages, 587 bytes
 +May 31 16:48:50 mail MailScanner[26321]:​ Virus and Content Scanning: Starting
 +May 31 16:48:53 mail MailScanner[26321]:​ ./​BB6842CA63.A9E9B/​msg-26321-8.txt:​ Eicar-Test-Signature FOUND
 +May 31 16:48:53 mail MailScanner[26321]:​ Virus Scanning: ClamAV found 1 infections
 +May 31 16:48:53 mail MailScanner[26321]:​ Infected message BB6842CA63.A9E9B came from 127.0.0.1
 +May 31 16:48:53 mail MailScanner[26321]:​ Virus Scanning: Found 1 viruses
 +May 31 16:48:53 mail MailScanner[26321]:​ Saved infected "​msg-26321-8.txt"​ to /​var/​spool/​MailScanner/​quarantine/​20120531/​BB6842CA63.A9E9B
 +May 31 16:48:53 mail MailScanner[26321]:​ Spam Checks: Starting
 +May 31 16:48:55 mail MailScanner[26321]:​ Requeue: BB6842CA63.A9E9B to 9114A2CA62
 +May 31 16:48:55 mail postfix/​qmgr[26296]:​ 9114A2CA62: from=<​root@mail.douglas.lan>,​ size=367, nrcpt=1 (queue active)
 +May 31 16:48:55 mail MailScanner[26321]:​ Cleaned: Delivered 1 cleaned messages
 +May 31 16:48:55 mail postfix/​pickup[26295]:​ A8D542CA64: uid=104 from=<​postmaster>​
 +May 31 16:48:55 mail postfix/​cleanup[26604]:​ A8D542CA64: hold: header Received: by mail.douglas.lan (Postfix, from userid 104)??id A8D542CA64; Thu, 31 May 2012 16:48:55 -0300 (BRT) from local; from=<​postmaster@mail.douglas.lan>​
 +May 31 16:48:55 mail postfix/​cleanup[26604]:​ A8D542CA64: message-id=<​20120531194855.A8D542CA64@mail.douglas.lan>​
 +May 31 16:48:55 mail postfix/​virtual[26617]:​ 9114A2CA62: to=<​maria@douglas.lan>,​ relay=virtual,​ delay=7.2, delays=6.9/​0.04/​0/​0.22,​ dsn=2.0.0, status=sent (delivered to maildir)
 +May 31 16:48:55 mail postfix/​qmgr[26296]:​ 9114A2CA62: removed
 +May 31 16:48:55 mail MailScanner[26321]:​ Notices: Warned about 1 messages
 +May 31 16:48:55 mail MailScanner[26321]:​ Deleted 1 messages from processing-database
 +May 31 16:48:55 mail MailScanner[26321]:​ New Batch: Scanning 1 messages, 1362 bytes
 +May 31 16:48:56 mail MailScanner[26321]:​ Virus and Content Scanning: Starting
 +May 31 16:48:59 mail MailScanner[26321]:​ Spam Checks: Starting
 +May 31 16:49:01 mail MailScanner[26321]:​ Requeue: A8D542CA64.A1BB0 to 2B6ED2CA62
 +May 31 16:49:01 mail postfix/​qmgr[26296]:​ 2B6ED2CA62: from=<​postmaster@mail.douglas.lan>,​ size=1126, nrcpt=1 (queue active)
 +May 31 16:49:01 mail MailScanner[26321]:​ Uninfected: Delivered 1 messages
 +May 31 16:49:01 mail MailScanner[26321]:​ Deleted 1 messages from processing-database
 +May 31 16:49:01 mail postfix/​cleanup[26604]:​ 6C10A2CA63: message-id=<​20120531194855.A8D542CA64@mail.douglas.lan>​
 +May 31 16:49:01 mail postfix/​qmgr[26296]:​ 6C10A2CA63: from=<​postmaster@mail.douglas.lan>,​ size=1562, nrcpt=1 (queue active)
 +May 31 16:49:01 mail postfix/​local[26630]:​ 2B6ED2CA62: to=<​postmaster@mail.douglas.lan>,​ orig_to=<​postmaster>,​ relay=local,​ delay=5.8, delays=5.6/​0.14/​0/​0.04,​ dsn=2.0.0, status=sent (forwarded as 6C10A2CA63)
 +May 31 16:49:01 mail postfix/​qmgr[26296]:​ 2B6ED2CA62: removed
 +May 31 16:49:01 mail postfix/​virtual[26617]:​ 6C10A2CA63: to=<​douglas@douglas.lan>,​ orig_to=<​postmaster>,​ relay=virtual,​ delay=0.13, delays=0.04/​0/​0/​0.09,​ dsn=2.0.0, status=sent (delivered to maildir)
 +May 31 16:49:01 mail postfix/​qmgr[26296]:​ 6C10A2CA63: removed
 +</​sxh>​
 +
 +Como pode ser verificado o Email foi reconhecido como um Vírus.
 +
 +Vamos fazer teste de autenticação ​
 +<sxh bash>
 +testsaslauthd -u douglas@douglasqsantos.com.br -p doug123
 +0: OK "​Success."​
 +</​sxh>​
 +
 +Agora vamos fazer um teste com o pop3
 +<sxh bash>
 +telnet localhost 110
 +Trying 127.0.0.1...
 +Connected to localhost.
 +Escape character is '​^]'​.
 ++OK Hello there.
 +user maria@douglas.lan
 ++OK Password required.
 +pass doug123
 ++OK logged in.
 +quit
 ++OK Bye-bye.
 +Connection closed by foreign host.
 +</​sxh>​
 +
 +Vamos fazer um teste de 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 maria@douglas.lan doug123
 +a OK LOGIN Ok.
 +a logout
 +* BYE Courier-IMAP server shutting down
 +a OK LOGOUT completed
 +Connection closed by foreign host.
 +</​sxh>​
 +
 +Agora vamos a um teste de envio de email
 +<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 PLAIN LOGIN
 +250-AUTH=PLAIN LOGIN
 +250-ENHANCEDSTATUSCODES
 +250-8BITMIME
 +250 DSN
 +mail from: <​maria@douglasqsantos.com.br>​
 +250 2.1.0 Ok
 +rcpt to: <​maria@douglasqsantos.com.br>​
 +250 2.1.5 Ok
 +DATA
 +354 End data with <​CR><​LF>​.<​CR><​LF>​
 +Teste De envio de Email por Telnet
 +.
 +250 2.0.0 Ok: queued as A134C2CA65
 +quit
 +221 2.0.0 Bye
 +Connection closed by foreign host.
 +</​sxh>​
 +
 +Vamos ver os logs
 +<sxh bash>
 +tail -f /​var/​log/​mail.log ​
 +May 31 16:55:24 mail postfix/​smtpd[26809]:​ A134C2CA65: client=localhost[127.0.0.1]
 +May 31 16:55:43 mail postfix/​cleanup[26812]:​ A134C2CA65: hold: header Received: from mail.douglas.lan (localhost [127.0.0.1])??​by mail.douglas.lan (Postfix) with ESMTP id A134C2CA65??​for <​maria@douglas.lan>;​ Thu, 31 May 2012 16:55:13 -0300 (BRT) from localhost[127.0.0.1];​ from=<​maria@douglas.lan>​ to=<​maria@douglas.lan>​ proto=ESMTP helo=<​mail.douglas.lan>​
 +May 31 16:55:43 mail postfix/​cleanup[26812]:​ A134C2CA65: message-id=<​20120531195524.A134C2CA65@mail.douglas.lan>​
 +May 31 16:55:45 mail postfix/​smtpd[26809]:​ disconnect from localhost[127.0.0.1]
 +May 31 16:55:49 mail MailScanner[26321]:​ New Batch: Scanning 1 messages, 966 bytes
 +May 31 16:55:49 mail MailScanner[26321]:​ Virus and Content Scanning: Starting
 +May 31 16:55:52 mail MailScanner[26321]:​ Spam Checks: Starting
 +May 31 16:55:59 mail MailScanner[26321]:​ Requeue: A134C2CA65.AE38F to 048F82CA66
 +May 31 16:55:59 mail MailScanner[26321]:​ Uninfected: Delivered 1 messages
 +May 31 16:55:59 mail postfix/​qmgr[26296]:​ 048F82CA66: from=<​maria@douglas.lan>,​ size=345, nrcpt=1 (queue active)
 +May 31 16:55:59 mail MailScanner[26321]:​ Deleted 1 messages from processing-database
 +May 31 16:55:59 mail postfix/​virtual[26822]:​ 048F82CA66: to=<​maria@douglas.lan>,​ relay=virtual,​ delay=46, delays=46/​0.29/​0/​0.11,​ dsn=2.0.0, status=sent (delivered to maildir)
 +May 31 16:55:59 mail postfix/​qmgr[26296]:​ 048F82CA66: removed
 +</​sxh>​
 +
 +
 +Vamos acessar o nosso MailWatch Em http://​ip_servidor/​mailwatch usuário: mailwatch senha: 123
 +  - Na página inícial do MailWatch selecione Tools/Links
 +  - Agora selecione Update GeoIP Database
 +  - Agora selecione Run Now, com isso vamos atualizar a base dos endereços ips por localização.
 +
 +Agora é so acompanhar os logs e bloquear o que for necessário.
 +
 +**Configurando o Webmail**
 +
 +Vamos obter ele e desempacotar
 +<sxh bash>
 +mkdir /​var/​www/​webmail
 +cd /​var/​www/​webmail
 +wget -c http://​wiki.douglasqsantos.com.br/​pacotes/​afterlogicwebmail.zip ​
 +unzip afterlogicwebmail.zip
 +rm -rf changelog.txt readme.txt afterlogicwebmail.zip
 +mv webmail/* .
 +rm -rf webmail
 +</​sxh>​
 +
 +Agora vamos acertar as permissões do nosso webmail.
 +<sxh bash>
 +cd /​var/​www/​webmail
 +find . -type f -exec chmod 644 {} \;
 +find . -type d -exec chmod 755 {} \;
 +chown -R www-data:​www-data /​var/​www/​webmail
 +</​sxh>​
 +
 +
 +Agora vamos preparar o banco de dados para o webmail
 +<sxh sql>
 +mysql -u root -p
 +CREATE DATABASE webmail;
 +GRANT ALL PRIVILEGES ON webmail.* TO webmail@localhost IDENTIFIED BY '​senha';​
 +flush privileges;
 +quit;
 +</​sxh>​
 +
 +Agora vamos acessar pelo navegador a tela de configuração do webmail http://​ip_servidor/​webmail/​install/ ​
 +
 +  - Nesta página inicial de instalação os requisitos devem estar todos em Verde, no final da página selecione Next.
 +  - Agora leia o termo de licença e selecione I Agree para continuar.
 +  - Agora aqui nesta tela temos que informar:
 +    - **SQL login:** webmail
 +    - **SQL password:** senha
 +    - **Database name:** webmail
 +    - **Host:** localhost
 +  - Agora selecione Test database, o resultado deve ser Connected successfully se os dados estiverem corretos.
 +  - Deixe selecionado **Create Database Tables**.
 +  - Agora selecione Next.
 +  - Agora precisamos informar a senha e confirmar para o nosso mailadm que vai poder gerenciar a configuração global do nosso webmail.
 +  - Agora selecione Next.
 +  - Agora vamos selecionar os protocolos que o nosso webmail vai utilizar, vou selecionar SMTP e IMAP4.
 +  - Agora selecione Test connection, caso tenha sucesso vai aparecer: SMTP connection to port 25 successful, sending outgoing e-mail over SMTP should work, IMAP connection to port 143 successful, checking and downloading incoming e-mail over IMAP should work.
 +  - Agora selecione Next.
 +  - Agora nós fomos redirecionados para uma página sobre a conclusão da nossa instalação. Volte a instalação do nosso webmail.
 +  - Agora selecione Exit
 +
 +Agora precisamos excluir a pasta install do nosso webmail.
 +<sxh bash>
 +rm -rf /​var/​www/​webmail/​install/​
 +</​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 a configuração global do nosso webmail em http://​ip_servidor/​webmail/​adminpanel/​ informe o usuário mailadm e a senha que você definiu para ele.
 +
 +  - Selecione a Parte seperior da tela Domains
 +  - Agora selecione Default domain settings
 +  - Agora do lado direito da tela temos a configuração geral do webmail
 +  - Em site name informe o nome para o seu Webmail
 +  - Agora em skin selecione o Skin padrão para os seus usuários.
 +  - Agora fica a sua escolha a opção allow users to access interface settings, que habilita o usuário a efetuar alterações na configuração do webmail.
 +  - Agora em Language selecione Portuguese-Brazil
 +  - Agora em Timezone selecione (GMT -03:00) Brasilia
 +  - Agora em time format selecione 13:00
 +  - Agora selecione Save no final da tela do lado direito.
 +  - Agora na guia Webmail vamos mudar MEssages per page para 50.
 +  - Agora em Autocheck mail every selecione 1 minute.
 +  - Agora selecione Save
 +  - Selecione agora na parte superior da tela System.
 +  - Aqui temos a configuração do nosso banco de dados caso necessite efetuar alguma alteração.
 +  - Do lado esquerdo da tela temos o link Security aonde temos o nome do usuário que pode efetuar login no painel de controle e temos a opção de alterar a senha para ele.
 +
 +O Webmail é bem simples de utilizar não vou entrar em detalhes, basta acessar http://​ip_servidor/​webmail e informar o usuário e senha que foi criado no postfixadmin.
 +
 +**Instalando o Fail2ban**
 +
 +O Fail2Ban é uma aplicação que analisa continuamente os ficheiros log e bloqueia os endereços Internet de onde originaram várias tentativas falhadas de acesso com senha inválida.
 +
 +O Fail2Ban é extremamente eficaz na prevenção de ataques de força bruta e de negação de serviço (DoS).
 +
 +Vamos instalar o fail2ban
 +<sxh bash>
 +aptitude install fail2ban -y
 +</​sxh>​
 +
 +Vamos fazer backup do arquivo de configuração
 +<sxh bash>
 +cp /​etc/​fail2ban/​jail.conf{,​.bkp}
 +</​sxh>​
 +
 +Vamos acertar o arquivo de configuração do fail2ban
 +<sxh bash>
 +vim /​etc/​fail2ban/​jail.conf
 +#​---------------------------MAIN--------------------------------------------------------
 +[DEFAULT]
 +ignoreip = 127.0.0.1, 10.0.0.0/24
 +bantime ​ = 600
 +maxretry = 3
 +backend = polling
 +destemail = douglas@douglasqsantos.com.br
 +banaction = iptables-multiport
 +mta = sendmail
 +protocol = tcp
 +action_ = %(banaction)s[name=%(__name__)s,​ port="​%(port)s",​ protocol="​%(protocol)s]
 +action_mw = %(banaction)s[name=%(__name__)s,​ port="​%(port)s",​ protocol="​%(protocol)s]
 +              %(mta)s-whois[name=%(__name__)s,​ dest="​%(destemail)s",​ protocol="​%(protocol)s]
 +action_mwl = %(banaction)s[name=%(__name__)s,​ port="​%(port)s",​ protocol="​%(protocol)s]
 +               ​%(mta)s-whois-lines[name=%(__name__)s,​ dest="​%(destemail)s",​ logpath=%(logpath)s]
 +action = %(action_mwl)s
 +#​--------------------------------END MAIN----------------------------------------------
 +#​-----------------------------SERVICES-------------------------------------------------
 +[ssh]
 +enabled = true
 +port    = ssh
 +filter ​ = sshd
 +logpath ​ = /​var/​log/​auth.log
 +maxretry = 3
 +
 +[pam-generic]
 +enabled = true
 +filter ​ = pam-generic
 +port = all
 +banaction = iptables-allports
 +port     = anyport
 +logpath ​ = /​var/​log/​auth.log
 +maxretry = 3
 +
 +[ssh-ddos]
 +enabled = true
 +port    = ssh
 +filter ​ = sshd-ddos
 +logpath ​ = /​var/​log/​auth.log
 +maxretry = 3
 +
 +[apache]
 +enabled = true
 +port    = http,https
 +filter ​ = apache-auth
 +logpath = /​var/​log/​apache*/​*error.log
 +maxretry = 3
 +
 +[apache-overflows]
 +enabled = true
 +port    = http,https
 +filter ​ = apache-overflows
 +logpath = /​var/​log/​apache*/​*error.log
 +maxretry = 3
 +
 +[postfix]
 +enabled ​ = true
 +port     = smtp,​ssmtp,​submission
 +filter ​  = postfix
 +logpath ​ = /​var/​log/​mail.log
 +maxtretry = 3
 +
 +[sasl]
 +enabled ​ = true
 +port     = smtp,​ssmtp,​imap2,​imap3,​imaps,​pop3,​pop3s
 +filter ​  = sasl
 +logpath ​ = /​var/​log/​mail.log
 +maxretry = 3
 +#​-----------------------------END SERVICES------------------------------------------------
 +</​sxh>​
 +
 +Agora é so reiniciar o serviço ​
 +<sxh bash>
 +/​etc/​init.d/​fail2ban restart
 +</​sxh>​
 +
 +**Instação e configuração do Knock**
 +
 +Agora vamos instalar o knockd para fazer o controle da porta do ssh
 +   * “O knockd é uma implementação de port-knocking. Resumidamente falando, com ele podemos deixar todas as portas do servidor fechadas e tê-lo configurado para ouvir “batidas” em algumas portas específicas,​ sendo que as batidas (corretas) podem gerar a execução de uma regra de firewall para abrir uma porta ou executar qualquer outro comando.”
 +
 +Vamos fazer a instalação do knock
 +<sxh bash>
 +aptitude install knockd -y
 +</​sxh>​
 +
 +Agora vamos fazer backup do arquivo
 +<sxh bash>
 +cp /​etc/​default/​knockd{,​.bkp}
 +</​sxh>​
 +
 +
 +<sxh bash>
 +vim /​etc/​default/​knockd
 +Vamos editar o arquivo e liberar para qual interface ele vai ficar escutando
 +START_KNOCKD=1
 +KNOCKD_OPTS="​-i eth0"
 +</​sxh>​
 +
 +Vamos fazer backup do arquivo de configuração
 +<sxh bash>
 +cp /​etc/​knockd.conf{,​.bkp}
 +</​sxh>​
 +
 +Vamos ao arquivo de configuração
 +<sxh bash>
 +vim /​etc/​knockd.conf
 +[options]
 +        UseSyslog
 +        LogFile = /​var/​log/​knockd.log
 +[openSSH]
 +        sequence ​   = 1234:​udp,​4321:​tcp,​6789:​udp
 +        seq_timeout = 5
 +        command ​    = /​sbin/​iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
 +        tcpflags ​   = syn
 +
 +[closeSSH]
 +        sequence ​   = 6789:​tcp,​4321:​udp,​1234:​tcp
 +        seq_timeout = 5
 +        command ​    = /​sbin/​iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
 +        tcpflags ​   = syn
 +</​sxh>​
 +
 +Vamos restartar o serviço:
 +<sxh bash>
 +/​etc/​init.d/​knockd restart
 +</​sxh>​
 +
 +Agora no cliente é so intalar o pacote do knockd
 +<sxh bash>
 +apt-get install knockd -y
 +</​sxh>​
 +
 +Agora para abrir a porta do servidor para o nosso cliente fazemos como abaixo
 +<sxh bash>
 +knock ip_servidor ​    ​1234:​udp 4321:tcp 6789:udp
 +</​sxh>​
 +
 +Agora vamos ver o log no servidor
 +<sxh bash>
 +tail -f /​var/​log/​knockd.log
 +[2011-08-31 17:41] starting up, listening on eth0
 +[2011-08-31 17:43] 10.0.0.20: openSSH: Stage 1
 +[2011-08-31 17:43] 10.0.0.20: openSSH: Stage 2
 +[2011-08-31 17:43] 10.0.0.20: openSSH: Stage 3
 +[2011-08-31 17:43] 10.0.0.20: openSSH: OPEN SESAME
 +[2011-08-31 17:43] openSSH: running command: /​sbin/​iptables -A INPUT -s 10.0.0.20 -p tcp --dport 22 -j ACCEPT
 +</​sxh>​
 +
 +A porta foi aberta vamos analizar no firewall
 +<sxh bash>
 +iptables -L -n -v | egrep 22
 +59  4508 ACCEPT ​    ​tcp ​ --  *      *       ​10.0.0.20 ​           0.0.0.0/​0 ​          tcp dpt:​22 ​
 +</​sxh>​
 +
 +   *Como pode ser notado foi aberta a porta 22 somente para o cliente 10.0.0.20
 +
 +Para fechar a porta é a sequencia do closeSSH
 +
 +<sxh bash>
 +knock 10.0.0.23 6789:tcp 4321:udp 1234:tcp
 +</​sxh>​
 +
 +Agora vamos ver nos logs para ver se fechou a porta
 +<sxh bash>
 +tail -f /​var/​log/​knockd.log
 +[2011-08-31 17:50] 10.0.0.20: closeSSH: Stage 1
 +[2011-08-31 17:50] 10.0.0.20: closeSSH: Stage 2
 +[2011-08-31 17:50] 10.0.0.20: closeSSH: Stage 3
 +[2011-08-31 17:50] 10.0.0.20: closeSSH: OPEN SESAME
 +[2011-08-31 17:50] closeSSH: running command: /​sbin/​iptables -D INPUT -s 10.0.0.20 -p tcp --dport 22 -j ACCEPT
 +</​sxh>​
 +
 +**Agora vamos acertar os Virtuals Host para os nossos serviços trabalharem com https**
 +
 +Vamos gerar a key para o https
 +
 +Preparando o diretório que vai armazenar os nosso certificados
 +<sxh bash>
 +mkdir -p /​etc/​ssl/​apache
 +cd /​etc/​ssl/​apache
 +</​sxh>​
 +
 +
 +Gerando a key
 +<sxh bash>
 +openssl genrsa -des3 -out server.key 1024
 +Generating RSA private key, 1024 bit long modulus
 +....................++++++
 +...........++++++
 +e is 65537 (0x10001)
 +Enter pass phrase for server.key: senha
 +Verifying - Enter pass phrase for server.key: senha
 +</​sxh>​
 +
 +Vamos gerar agora a requisição de assinatura para o certificado
 +<sxh bash>
 +openssl req -new -key server.key -out server.csr
 +Enter pass phrase for server.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) []:Douglas
 +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>​
 +
 +Agora vamos auto assinar o nosso certificado
 +<sxh bash>
 +openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
 +Signature ok
 +subject=/​C=BR/​ST=Parana/​L=Curitiba/​O=Douglas/​OU=Douglas/​CN=mail.douglasqsantos.com.br/​emailAddress=douglas@douglasqsantos.com.br
 +Getting Private key
 +Enter pass phrase for server.key: senha
 +</​sxh>​
 +
 +Agora vamos acertar as permissões das chaves
 +<sxh bash>
 + chmod 0400 server.*
 + cp server.key server.key.orig
 +</​sxh>​
 +
 +Agora vamos tirar a senha do certificado assinado para que o apache não fique pedindo senha a cada vez que for inicializar
 +<sxh bash>
 + ​openssl rsa -in server.key.orig -out server.key
 + Enter pass phrase for server.key.orig:​ senha
 + ​writing RSA key
 +</​sxh>​
 +
 +Vamos acertar as permissões de todas as chaves ​
 +<sxh bash>
 + chmod 0400 /​etc/​ssl/​apache/​* ​
 +</​sxh>​
 +
 +Vamos agora configurar o host virtual com o acesso via https para o nosso postfixadmin.
 +
 +OBS:. Não esqueça de inserir uma entrada no servidor DNS para resolver o seu endereço http://​postfixadmin.douglasqsantos.com.br para o ip do servidor. ​
 +
 +Você também pode testar editando o arquivo /etc/hosts do cliente que vai acessar da seguinte formar
 +<sxh bash>
 +vim /etc/hosts
 +[...]
 +ip_servidor ​ postfixadmin.douglasqsantos.com.br mailadmin
 +ip_servidor ​ webmail.douglasqsantos.com.br webmail
 +ip_servidor ​ mailwatch.douglasqsantos.com.br mailwatch
 +ip_servidor ​ isoqlog.douglasqsantos.com.br isoqlog
 +ip_servidor ​ monitor.douglasqsantos.com.br monitor
 +</​sxh>​
 +
 +
 +Quando o cliente for acessar esse endereço vai ser resolvido diretamente para o ip do servidor e o apache vai receber a solicitação do mailadmin.douglasqsantos.com.br ​
 +
 +Aqui estamos redirecionando qualquer acesso ao site via http para https para forçar o cliente utilizar criptografia na conexão
 +
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​postfixadmin
 +<​VirtualHost *:​80> ​
 +  ServerName postfixadmin.douglasqsantos.com.br
 +  Redirect / https://​postfixadmin.douglasqsantos.com.br/ ​
 +</​VirtualHost> ​
 + 
 +<​VirtualHost *:​443> ​
 +        ServerAdmin webmaster@douglasqsantos.com.br ​
 +        ServerName postfixadmin.douglasqsantos.com.br
 +  DocumentRoot "/​var/​www/​postfixadmin"​
 +   <​Directory "/​var/​www/​postfixadmin">​
 +     ​Options -Indexes +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     Order Allow,deny
 +     Allow From All
 +   </​Directory>​
 +        ​
 +       # ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +       # <​Directory "/​usr/​lib/​cgi-bin">​
 +       # ​        ​AllowOverride None
 +       # ​        ​Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +       # ​        Order allow,deny
 +       # ​        Allow from all
 +       # </​Directory>​
 +
 +   <​IfModule mod_php5.c>​
 +   ​AddType application/​x-httpd-php .php
 +     ​php_flag expose_php Off
 +     ​php_flag allow_url_fopen Off
 +     ​php_flag allow_url_include Off
 +     ​php_flag magic_quotes_gpc Off
 +     ​php_flag register_globals Off
 +     ​php_flag disable_functions show_source
 +     ​php_flag disable_functions system
 +     ​php_flag disable_functions shell_exec
 +     ​php_flag disable_functions passthru
 +     ​php_flag disable_functions exec
 +     ​php_flag disable_functions popen
 +     ​php_flag disable_functions proc_open
 +     ​php_flag disable_functions symlink
 +   </​IfModule>​
 +        CustomLog /​var/​log/​apache2/​postfixadmin.access.log combined ​
 +        ErrorLog /​var/​log/​apache2/​postfixadmin.error.log ​
 +        LogLevel warn 
 +  SSLEngine on
 +  SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +  SSLCertificateFile "/​etc/​ssl/​apache/​server.crt"​
 +  SSLCertificateKeyFile "/​etc/​ssl/​apache/​server.key"​
 +        <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +     ​SSLOptions +StdEnvVars
 +  </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +  ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Configurando a porta que o nosso host Virtual vai estar escutando.
 +<sxh bash>
 +vim /​etc/​apache2/​ports.conf
 +[...]
 +NameVirtualHost *:443
 +</​sxh>​
 +
 +Vamos carregar o módulo ssl para o apache.
 +<sxh bash>
 +a2enmod ssl
 +</​sxh>​
 +
 +Vamos acertar as permissões do diretório
 +<sxh bash>
 +chown -R www-data:​www-data /​var/​www/​postfixadmin/​
 +</​sxh>​
 +
 +Vamos carregar o nosso host Virtual
 +<sxh bash>
 +a2ensite postfixadmin
 +</​sxh>​
 +
 +Agora vamos criar o virtual host para o webmail
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​webmail
 +<​VirtualHost *:​80> ​
 +  ServerName webmail.douglasqsantos.com.br
 +  Redirect / https://​webmail.douglasqsantos.com.br/ ​
 +</​VirtualHost> ​
 + 
 +<​VirtualHost *:​443> ​
 +        ServerAdmin webmaster@douglasqsantos.com.br
 +        ServerName webmail.douglasqsantos.com.br
 +  DocumentRoot "/​var/​www/​webmail"​
 +   <​Directory "/​var/​www/​webmail">​
 +     ​Options -Indexes +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     Order Allow,deny
 +     Allow From All
 +   </​Directory>​
 +        ​
 +       # ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +       # <​Directory "/​usr/​lib/​cgi-bin">​
 +       # ​        ​AllowOverride None
 +       # ​        ​Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +       # ​        Order allow,deny
 +       # ​        Allow from all
 +       # </​Directory>​
 +
 +   <​IfModule mod_php5.c>​
 +   ​AddType application/​x-httpd-php .php
 +     ​php_flag expose_php Off
 +     ​php_flag allow_url_fopen Off
 +     ​php_flag allow_url_include Off
 +     ​php_flag magic_quotes_gpc Off
 +     ​php_flag register_globals Off
 +     ​php_flag disable_functions show_source
 +     ​php_flag disable_functions system
 +     ​php_flag disable_functions shell_exec
 +     ​php_flag disable_functions passthru
 +     ​php_flag disable_functions exec
 +     ​php_flag disable_functions popen
 +     ​php_flag disable_functions proc_open
 +     ​php_flag disable_functions symlink
 +   </​IfModule>​
 +        CustomLog /​var/​log/​apache2/​webmail.access.log combined ​
 +        ErrorLog /​var/​log/​apache2/​webmail.error.log ​
 +        LogLevel warn 
 +  SSLEngine on
 +  SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +  SSLCertificateFile "/​etc/​ssl/​apache/​server.crt"​
 +  SSLCertificateKeyFile "/​etc/​ssl/​apache/​server.key"​
 +        <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +     ​SSLOptions +StdEnvVars
 +  </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +  ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Vamos carregar o virtual host do webmail
 +<sxh bash>
 +a2ensite webmail
 +</​sxh>​
 +
 +Agora vamos configurar o virtual host do mailwatch
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​mailwatch
 +<​VirtualHost *:​80> ​
 +  ServerName mailwatch.douglasqsantos.com.br
 +  Redirect / https://​mailwatch.douglasqsantos.com.br/ ​
 +</​VirtualHost> ​
 + 
 +<​VirtualHost *:​443> ​
 +        ServerAdmin webmaster@douglasqsantos.com.br
 +        ServerName mailwatch.douglasqsantos.com.br
 +  DocumentRoot "/​var/​www/​mailwatch"​
 +   <​Directory "/​var/​www/​mailwatch">​
 +     ​Options -Indexes +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     Order Allow,deny
 +     Allow From All
 +   </​Directory>​
 +        ​
 +       # ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +       # <​Directory "/​usr/​lib/​cgi-bin">​
 +       # ​        ​AllowOverride None
 +       # ​        ​Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +       # ​        Order allow,deny
 +       # ​        Allow from all
 +       # </​Directory>​
 +
 +   <​IfModule mod_php5.c>​
 +   ​AddType application/​x-httpd-php .php
 +     ​php_flag expose_php Off
 +     ​php_flag allow_url_fopen Off
 +     ​php_flag allow_url_include Off
 +     ​php_flag magic_quotes_gpc Off
 +     ​php_flag register_globals Off
 +     ​php_flag disable_functions show_source
 +     ​php_flag disable_functions system
 +     ​php_flag disable_functions shell_exec
 +     ​php_flag disable_functions passthru
 +     ​php_flag disable_functions exec
 +     ​php_flag disable_functions popen
 +     ​php_flag disable_functions proc_open
 +     ​php_flag disable_functions symlink
 +   </​IfModule>​
 +        CustomLog /​var/​log/​apache2/​maia.access.log combined ​
 +        ErrorLog /​var/​log/​apache2/​maia.error.log ​
 +        LogLevel warn 
 +  SSLEngine on
 +  SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +  SSLCertificateFile "/​etc/​ssl/​apache/​server.crt"​
 +  SSLCertificateKeyFile "/​etc/​ssl/​apache/​server.key"​
 +        <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +     ​SSLOptions +StdEnvVars
 +  </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +  ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos carregar o nosso virtual host do mailwatch
 +<sxh bash>
 +a2ensite mailwatch
 +</​sxh>​
 +
 +Agora vamos desabilitar os virtuais hosts defaults
 +<sxh bash>
 +a2dissite default
 +a2dissite default-ssl
 +</​sxh>​
 +
 +Agora é sé reiniciar o apache
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +
 +Agora você pode acessar da seguinte forma
 +  - Webmail em http://​webmail.douglasqsantos.com.br
 +  - Postfixadmin em http://​postfixadmin.douglasqsantos.com.br
 +  - MailWatch em http://​mailwatch.douglasqsantos.com.br
 +
 +**Geradores de relatórios**
 +
 +Iremos instalar alguns geradores de relatórios para acompanharmos o desenpenho dos serviços do servidor:
 +
 +<sxh bash>
 +aptitude install rrdtool mailgraph queuegraph isoqlog munin munin-plugins-extra munin-node munin-common mailping -y
 +</​sxh>​
 +   * Será perguntado qual o servidor de e-mail utilizado, selecione **postfix** ;
 +   * Será perguntado onde será gravado os logs, deixe o padrão;
 +   * Será perguntado o nome da máquina, deixe o mostrado;
 +   * Será perguntado a Língua usada para as saídas dos relatórios,​ seleciona **Português**
 +   * Será perguntado os domṕinios que serão gerados relatórios,​ informe os domínios separados por espaços;
 +   
 +
 +Agora vamos acertar algumas configurações dos geradores de relatórios mailgraph
 +<sxh bash>
 +dpkg-reconfigure mailgraph ​
 +</​sxh>​
 +   * Responda da seguinte forma
 +   - Sim. 
 +   - Ok 
 +   - não   
 +
 +Aqui no caso do isoqlog temos que executar /​usr/​bin/​isoqlog para ele gerar os nossos relátorios ele ta no cron.daily então ele vai ser  executado uma vez por dia.
 +
 +No meu ponto de vista acho interresante executar ele a cada hora então podemos mudar ele. 
 +<sxh bash>
 +cp -rfa /​etc/​cron.daily/​isoqlog /​etc/​cron.hourly/ ​
 +</​sxh>​
 +
 +Agora vamos configurar o virtual host do isoqlog
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​isoqlog
 +<​VirtualHost *:​80> ​
 +  ServerName isoqlog.douglasqsantos.com.br
 +  Redirect / https://​isoqlog.douglasqsantos.com.br/ ​
 +</​VirtualHost> ​
 + 
 +<​VirtualHost *:​443> ​
 +        ServerAdmin webmaster@douglasqsantos.com.br
 +        ServerName isoqlog.douglasqsantos.com.br
 +  DocumentRoot "/​var/​www/​isoqlog"​
 +   <​Directory "/​var/​www/​isoqlog">​
 +     ​Options -Indexes +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     Order Allow,deny
 +     Allow From All
 +   </​Directory>​
 +        ​
 +       ​ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +       <​Directory "/​usr/​lib/​cgi-bin">​
 +               ​AllowOverride None
 +               ​Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +               Order allow,deny
 +               Allow from all
 +       </​Directory>​
 +
 +   <​IfModule mod_php5.c>​
 +   ​AddType application/​x-httpd-php .php
 +     ​php_flag expose_php Off
 +     ​php_flag allow_url_fopen Off
 +     ​php_flag allow_url_include Off
 +     ​php_flag magic_quotes_gpc Off
 +     ​php_flag register_globals Off
 +     ​php_flag disable_functions show_source
 +     ​php_flag disable_functions system
 +     ​php_flag disable_functions shell_exec
 +     ​php_flag disable_functions passthru
 +     ​php_flag disable_functions exec
 +     ​php_flag disable_functions popen
 +     ​php_flag disable_functions proc_open
 +     ​php_flag disable_functions symlink
 +   </​IfModule>​
 +        CustomLog /​var/​log/​apache2/​isoqlog.access.log combined ​
 +        ErrorLog /​var/​log/​apache2/​isoqlog.error.log ​
 +        LogLevel warn 
 +  SSLEngine on
 +  SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +  SSLCertificateFile "/​etc/​ssl/​apache/​server.crt"​
 +  SSLCertificateKeyFile "/​etc/​ssl/​apache/​server.key"​
 +        <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +     ​SSLOptions +StdEnvVars
 +  </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +  ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos carregar o virtual host do isoqlog
 +<sxh bash>
 +a2ensite isoqlog
 +</​sxh>​
 +
 +Agora temos que reiniciar o apache
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora vamos executar o isoqlog para gerar os nosso relátorio
 +<sxh bash>
 + /​usr/​bin/​isoqlog ​
 +Year: 2011 Month: 10
 +outputdir:/​var/​www/​isoqlog
 +htmldir:/​usr/​share/​isoqlog/​htmltemp
 +logtype:​postfix
 +logstore:/​var/​log/​mail.log
 +langfile:/​usr/​share/​isoqlog/​lang/​portuguese
 +maxsender:​100
 +maxreceiver:​100
 +maxtotal:​100
 +maxbyte:100
 +hostname: mail.douglasqsantos.com.br
 +Domains douglasqsantos.com.br
 +The Created directory : /​var/​www/​isoqlog/​douglasqsantos.com.br
 +The Created directory : /​var/​www/​isoqlog/​douglasqsantos.com.br/​2011
 +The Created directory : /​var/​www/​isoqlog/​douglasqsantos.com.br/​2011/​10
 +The Created directory : /​var/​www/​isoqlog/​general
 +The Created directory : /​var/​www/​isoqlog/​general/​2011
 +The Created directory : /​var/​www/​isoqlog/​general/​2011/​10
 +</​sxh>​
 +
 +A configuração do nosso isoqlog se baseia em dois arquivos
 +
 +Primeiro arquivo que tem a configuração principal do isoqlog
 +<sxh bash>
 +vim /​etc/​isoqlog/​isoqlog.conf
 +#isoqlog 2.0 Configuration file
 +
 +logtype ​    = "​postfix"​
 +logstore ​   = "/​var/​log/​mail.log"​
 +domainsfile = "/​etc/​isoqlog/​isoqlog.domains"​
 +outputdir ​  = "/​var/​www/​isoqlog"​
 +htmldir ​    = "/​usr/​share/​isoqlog/​htmltemp"​
 +langfile ​   = "/​usr/​share/​isoqlog/​lang/​portuguese"​
 +hostname ​   = "​mail.douglasqsantos.com.br"​
 +
 +maxsender ​  = 100
 +maxreceiver = 100
 +maxtotal ​   = 100
 +
 +maxbyte ​    = 100
 +</​sxh>​
 +
 +Arquivo que controla os domínios que vão ser gerados relatórios,​ informe um domínio por linha caso tenha mais de um domínio.
 +<sxh bash>
 +vim /​etc/​isoqlog/​isoqlog.domains
 +douglasqsantos.com.br
 +</​sxh>​
 +
 +Agora vamos acessar os relatórios em 
 +  - Isoqlog em http://​isoqlog.douglasqsantos.com.br
 +  - MailGraph em http://​isoqlog.douglasqsantos.com.br/​cgi-bin/​mailgraph.cgi
 +  - QueueGraph em http://​isoqlog.douglasqsantos.com.br/​cgi-bin/​queuegraph.cgi
 +
 +Ajustando o munin
 +
 +<sxh bash> ​
 +vim /​etc/​munin/​munin.conf
 +[...]
 +dbdir  /​var/​lib/​munin
 +htmldir /​var/​www/​monitor
 +logdir /​var/​log/​munin
 +rundir ​ /​var/​run/​munin
 +[...]
 +tmpldir /​etc/​munin/​templates
 +
 +# a simple host tree
 +[localhost.localdomain]
 +   ​address 127.0.0.1
 +   ​use_node_name yes
 +</​sxh>​
 +
 +Vamos reiniciar o munin
 +<sxh bash>
 +/​etc/​init.d/​munin-node restart
 +</​sxh>​
 +Vamos acertar o virtual host do munin
 +
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​monitor
 +<​VirtualHost *:​80> ​
 +  ServerName monitor.douglasqsantos.com.br
 +  Redirect / https://​monitor.douglasqsantos.com.br/ ​
 +</​VirtualHost> ​
 + 
 +<​VirtualHost *:​443> ​
 +        ServerAdmin webmaster@douglasqsantos.com.br
 +        ServerName monitor.douglasqsantos.com.br
 +  DocumentRoot "/​var/​www/​monitor"​
 +   <​Directory "/​var/​www/​monitor">​
 +     ​Options -Indexes +FollowSymLinks +MultiViews
 +     ​AllowOverride All
 +     Order Allow,deny
 +     Allow From All
 +   </​Directory>​
 +        ​
 +       #​ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​
 +       #<​Directory "/​usr/​lib/​cgi-bin">​
 +       # ​       AllowOverride None
 +       # ​       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +       # ​       Order allow,deny
 +       # ​       Allow from all
 +       #</​Directory>​
 +
 +   <​IfModule mod_php5.c>​
 +   ​AddType application/​x-httpd-php .php
 +     ​php_flag expose_php Off
 +     ​php_flag allow_url_fopen Off
 +     ​php_flag allow_url_include Off
 +     ​php_flag magic_quotes_gpc Off
 +     ​php_flag register_globals Off
 +     ​php_flag disable_functions show_source
 +     ​php_flag disable_functions system
 +     ​php_flag disable_functions shell_exec
 +     ​php_flag disable_functions passthru
 +     ​php_flag disable_functions exec
 +     ​php_flag disable_functions popen
 +     ​php_flag disable_functions proc_open
 +     ​php_flag disable_functions symlink
 +   </​IfModule>​
 +        CustomLog /​var/​log/​apache2/​monitor.access.log combined ​
 +        ErrorLog /​var/​log/​apache2/​monitor.error.log ​
 +        LogLevel warn 
 +  SSLEngine on
 +  SSLCipherSuite ALL:​!ADH:​!EXPORT56:​RC4+RSA:​+HIGH:​+MEDIUM:​+LOW:​+SSLv2:​+EXP:​+eNULL
 +  SSLCertificateFile "/​etc/​ssl/​apache/​server.crt"​
 +  SSLCertificateKeyFile "/​etc/​ssl/​apache/​server.key"​
 +        <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​
 +     ​SSLOptions +StdEnvVars
 +  </​FilesMatch>​
 +     ​BrowserMatch "​.*MSIE.*"​ \
 +     ​nokeepalive ssl-unclean-shutdown \
 +     ​downgrade-1.0 force-response-1.0
 +  ServerSignature Off
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Vamos carregar o virtual host do munin
 +<sxh bash>
 +a2ensite monitor
 +</​sxh>​
 +
 +Agora vamos fazer um acerto
 +<sxh bash>
 +ln -sf /​var/​cache/​munin/​www monitor
 +</​sxh>​
 +
 +Agora só reiniciar o apache
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora para acessar o nosso monitor é só acessar
 +  - Munin em http://​monitor.douglasqsantos.com.br
 +
 +Aqui vamos ter as estatísticas do nosso servidor de vários fatores.
 +
 +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 amavis spamassassin postgrey clamav-daemon clamav-freshclam courier-authdaemon courier-imap courier-imap-ssl courier-pop courier-pop-ssl postfix"​
 +START="​saslauthd amavis spamassassin postgrey clamav-daemon clamav-freshclam 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.
 + 
 +**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://​pam-mysql.sourceforge.net/​
 +  - http://​pam-mysql.sourceforge.net/​Documentation/​
 +  - 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://​www.fsl.com/​support/​MailScanner-Manual-Version-1.0.5.pdf
 +  - http://​www.mailscanner.info/​install_guides.html
 +  - http://​www.mailscanner.info/​postfix.html
 +  - http://​www.fsl.com/​support/​
 +  - http://​www.afterlogic.org/​
 +  - http://​www.afterlogic.com/​wiki/​Installation_Instructions_for_Linux_(WebMail_Lite_6_PHP)
 +  - http://​postgrey.schweikert.ch/ ​
 +  - http://​www.postfix.org/​SMTPD_POLICY_README.html ​
 +  - http://​www.eicar.org/​86-0-Intended-use.html ​
 +  - http://​www.clamav.net/​lang/​en/ ​
 +  - http://​vda.sourceforge.net/ ​
 +  - http://​www.enderunix.org/​isoqlog/ ​
 +  - http://​www.enderunix.org/​isoqlog/​isoqlog-2.2/​INSTALL ​
 +  - http://​www.openspf.org/ ​
 +  - http://​www.openspf.org/​Software ​
 +  - http://​www.fail2ban.org/​wiki/​index.php/​Main_Page ​
 +  - http://​www.fail2ban.org/​wiki/​index.php/​HOWTOs ​
 +  - http://​www.zeroflux.org/​projects/​knock ​
 +  - http://​www.openssl.org/ ​
 +  - http://​www.cacert.org/ ​
 +  - http://​wiki.cacert.org/​ServerCerts ​
 +  - http://​wiki.cacert.org/​HowToDocuments
 +  - http://​munin-monitoring.org/​
 +  - http://​munin-monitoring.org/​wiki/​Documentation
 +  - http://​munin-monitoring.org/​wiki/​LinuxInstallation
 +  - http://​munin-monitoring.org/​wiki/​munin.conf
 +  - http://​munin-monitoring.org/​wiki/​munin-node.conf