Instalação e configuração do Qmail + Quota + Webmail + Vqadmin + Qmailadmin + Debian Squeeze

  1. Nome da máquina: mail.douglasqsantos.com.br
  2. Domínio: douglasqsantos.com.br
  3. É necessário a configuração de um servidor DNS.

Prepare o seu sistema com o seguinte script Easy-Debian para que não falte nenhum pacote ou configuração.

Vamos fazer um update dos repositórios e um upgrade do sistema


aptitude update && aptitude dist-upgrade -y

Agora vamos instalar alguns pacotes necessários

Vamos instalar o Daemontools e ucspi-tcp


aptitude install ucspi-tcp daemontools daemontools-run -y

Vamos instalar o courier


aptitude install courier-base courier-authdaemon courier-authlib courier-authlib-mysql courier-imap \
 courier-imap-ssl courier-pop-ssl courier-pop courierpassd courier-maildrop gamin -y

Agora vamos instalar algumas ferramentas necessarias


aptitude install cpp g++ gcc make automake wget telnet libtool patch patchutils logrotate dh-make-perl libltdl7 \
equivs expect openssl libssl-dev libgmp3-dev libgdbm-dev libpcre++-dev libpcre-ocaml libpcre-ocaml-dev -y

Agora vamos instalar o MySQL


aptitude install mysql-common mysql-server-5.1 mysql-client-5.1 mysql-server-core-5.1 libmysqlclient16 \
libmysqlclient-dev -y

Agora vamos instalar o Apache e PHP


aptitude install apache2 php5 php5-common libapache2-mod-php5 php5-mysql php5-imap php5-mcrypt php5-json \
 php5-xmlrpc php5-dev php-pear php5-intl php5-gd php5-mcrypt -y

Agora vamos instalar o Anti-spam e Anti-Vírus


aptitude install spamassassin spamc pyzor razor clamav clamav-daemon clamav-docs -y

Agora vamos instalar os desempacotadores necessários


aptitude install arj unrar lha unzip bzip2 tar tnef -y

Agora vamos instalar os módulos perl necessários


aptitude install perl-suid spf-tools-perl libmailtools-perl libnet-cidr-lite-perl libnet-daemon-perl \
libtest-distribution-perl libmail-spf-perl libperl-dev -y

Mais alguns módulos perl

aptitude install libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl perl-doc \
libdate-manip-perl libio-string-perl libio-socket-ssl-perl libnet-ident-perl libsys-syslog-perl \
libencode-detect-perl -y

Mais alguns módulos perl

aptitude install libnet-dns-perl libplrpc-perl libtimedate-perl libcompress-zlib-perl libdigest-hmac-perl \
libdigest-sha1-perl libparse-syslog-perl libmail-dkim-perl libcrypt-openssl-bignum-perl -y

Agora vamos instalar algumas ferramentas de manipulação do sistema


aptitude install dnsutils whois findutils pciutils less net-tools tcpdump iptraf dstat iotop mc locate -y

Agora vamos obter os pacotes que vão ser necessários para a nossa implementação


mkdir /downloads
cd /downloads
wget -c http://wiki.douglasqsantos.com.br/Downloads/mail/debian-qmr.tar.gz
tar zxvf debian-qmr.tar.gz

Agora vamos acertar agora os usuários para o sistema

Vamos acertar os grupos


groupadd -g 161 nofiles
groupadd -g 162 qmail
groupadd -g 163 qscand
groupadd -g 89 vchkpw

Agora vamos acertar os usuários


useradd -u 161 -g nofiles -d /var/qmail/alias -s /usr/sbin/nologin -p’*’ -c 'QMail alias user' alias
useradd -u 162 -g nofiles -d /var/qmail -s /usr/sbin/nologin -p’*’ -c 'QMail daemon user' qmaild
useradd -u 163 -g nofiles -d /var/qmail -s /usr/sbin/nologin -p’*’ -c 'QMail log user' qmaill
useradd -u 164 -g nofiles -d /var/qmail -s /usr/sbin/nologin -p’*’ -c 'QMail password user' qmailp
useradd -u 165 -g qmail -d /var/qmail -s /usr/sbin/nologin -p’*’ -c 'QMail queue user' qmailq
useradd -u 166 -g qmail -d /var/qmail -s /usr/sbin/nologin -p’*’ -c 'QMail remote user' qmailr
useradd -u 167 -g qmail -d /var/qmail -s /usr/sbin/nologin -p’*’ -c 'QMail send user' qmails
useradd -u 89 -g vchkpw -d /home/vpopmail -s /usr/sbin/nologin -p’*’ -c 'Vpopmail (virtual domains) user' vpopmail
useradd -u 168 -g qscand -d /bin/false -s /usr/sbin/nologin -p’*’ -c 'Antivirus user' qscand

Agora vamos acertar os diretórios necessários


mkdir /var/qmail
mkdir /usr/src/qmail
mkdir -p /var/log/qmail/qmail-send
mkdir -p /var/log/qmail/qmail-smtpd
mkdir -p /var/log/qmail/qmail-smtpdssl
chown -R qmaill:root /var/log/qmail
chmod -R 750 /var/log/qmail 

Agora vamos instalação do Qmail


cd /usr/src/qmail
tar -zxvf /downloads/qmail-1.03.tar.gz

Vamos precisar aplicar um patch nele


cd /usr/src/qmail/qmail-1.03
patch < /downloads/patches/qmail-1.03-jms1-7.10.patch

Vamos compilar e instalar ele


make man
make setup check

Vamos acertar a configuração dos manuais do qmail


echo 'MANDATORY_MANPATH /var/qmail/man' >> /etc/manpath.config
ln -s /var/qmail/control /etc/qmail

Agora vamos acertar o TLS para o Qmail


sed -i 's/-days 366/-days 3650/' Makefile

Agora vamos gerar o certificado


make cert

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) []:TI
Common Name (eg, YOUR name) []:mail.douglasqsantos.com.br
Email Address []:postmaster@douglasqsantos.com.br

Agora vamos acertar as permissões dos certificados


cd /var/qmail/control
chmod 640 servercert.pem
chown vpopmail:vchkpw servercert.pem
rm clientcert.pem
cp servercert.pem clientcert.pem
chown root:qmail clientcert.pem
chmod 640 clientcert.pem

Agora vamos a instalação do UCSPI-SSL pois não temos ele em repositório

Vamos preparar o pacote


mkdir /packages
chmod 1755 /packages
cd /tmp
tar -zxvf /downloads/ucspi-ssl-0.70.tar.gz

Vamos acertar o pacote


mv /tmp/host/superscript.com/net/ucspi-ssl-0.70/ /packages
cd /packages/ucspi-ssl-0.70/
rm -rf /tmp/host/

Agora vamos acertar a configuração do pacote e o chave de criptografia


sed -i 's/local\/' src/conf-tcpbin
sed -i 's/usr\/local/etc/' src/conf-cadir
sed -i 's/usr\/local\/ssl\/pem/etc\/ssl/' src/conf-dhfile
openssl dhparam -check -text -5 1024 -out /etc/ssl/dh1024.pem #Aqui estamos definindo o tamanho de bits da chave

Agora vamos compilar o pacote


package/compile
package/rts #Aqui vamos obter algumas mensagens de erros que podem ser ignoradas
package/install

Agora vamos instalar o Ezmlm que é usado para gerenciar listas de distribuição de e-mails

Agora vamos acessar o ezml e desempacotar ele e criar um link para acertar o idioma


cd /downloads/
tar zxvfp ezmlm-idx-7.1.1.tar.gz
cd /downloads/ezmlm-idx-7.1.1
ln -s /downloads/ezmlm-idx-7.1.1/lang/en_US/ /downloads/ezmlm-idx-7.1.1/lang/default

Agora vamos compilar e instalar ele


make clean
make; make man

Agora vamos testar a configuração


./ezmlm-test 
getconfopt library:   OK
ezmlm-make:           OK
Using subdb plugin:   std
ezmlm-reject:         OK
ezmlm-[un|is]sub[n]:  OK
ezmlm-checksub:       OK
ezmlm-send:           OK
ezmlm-tstdig:         OK
ezmlm-weed:           OK
ezmlmrc contents:     OK
ezmlm-clean:          OK
ezmlm-store:          OK
ezmlm-return:         OK
ezmlm-warn (1/2):     OK
ezmlm-manage (1/2):   OK
ezmlm-request:        OK
ezmlm-split:          OK
ezmlm-gate:           OK
ezmlm-idx:            OK
ezmlm-get (index):    OK
ezmlm-get (get):      OK
ezmlm-get (thread):   OK
ezmlm-get (digest):   OK
ezmlm-manage (2/2):   OK
ezmlm-moderate:       OK
ezmlm-warn (2/2):     OK
ezmlm-archive:        OK
ezmlm-dispatch:       OK
dispatch editor:      OK
decode sender:        OK
Verifying message header and body contents...
flags:                OK
substitutions:        OK
messages:             OK
subscribe nop:        OK
unsubscribe nop:      OK
subscribe probe:      OK
unsubscribe probe:    OK
subscribe:            OK
unsubscribe:          OK
moderated subscribe:  OK
moderated unsub:      OK
subscribe by mod:     OK
unsubscribe by mod:   OK
copylines:            OK
ezmlm-send:           OK
ezmlm-send trailer:   OK
omitbottom (-manage): OK
omitbottom (-get):    OK
Cleaning up...

Vamos acertar um arquivo para podermos continuar, o arquivo tem que ficar como abaixo


vim /downloads/ezmlm-idx-7.1.1/conf-ld
cc -g -B /usr/lib/mysql/

This will be used to link .o files into an executable.

Agora vamos criar a base de dados para o Ezmlm


mysql -u root -p 
CREATE DATABASE ezmlm;
GRANT ALL PRIVILEGES ON ezmlm.* TO ezmlmuser@localhost IDENTIFIED BY 'EZMLM_PASSWORD';
FLUSH PRIVILEGES;
quit;

Vamos testar a conexão da nossa nova conta do mysql


mysql -uezmlmuser -pEZMLM_PASSWORD
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye

Agora vamos instalar o suporte ao mysql


cd /downloads/ezmlm-idx-7.1.1
make mysql

Agora vamos testar o suporte ao MySQL


./ezmlm-test -s mysql -u ezmlmuser -p EZMLM_PASSWORD -h localhost
[...]
ezmlm-make:           OK
Using subdb plugin:   mysql
[...]
ezmlm SQL:            OK
[...]

Agora vamos instalar ele


make install 

Agora acessar e descompactar o AutoResponder


cd /downloads/
tar zxvf autorespond-2.0.5.tar.gz
cd /downloads/autorespond-2.0.5

Agora vamos mandar compilar e instalar ele


make && make install

Agora vamos instalar o Vpopmail que vai ser o responsável por gerenciar os domínio e usuários

Vamos criar a base de dados para o Vpopmail vamos definir um usuário que vai ser vpopmailuser e a sua senha VPOPMAIL_PASSWORD


mysql -u root -p 
CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmailuser@localhost IDENTIFIED BY 'VPOPMAIL_PASSWORD';
FLUSH PRIVILEGES;
quit;

Agora vamos testar a conexão do nosso novo usuário


mysql -uvpopmailuser -pVPOPMAIL_PASSWORD
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 279
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye

Agora vamos preparar a instalação do Vpopmail


mkdir -p /home/vpopmail/etc
chown -R vpopmail:vchkpw /home/vpopmail
chmod 770 /home/vpopmail
cd /home/vpopmail/etc

Agora vamos acertar a conexão do vpopmail com o MySQL aqui definimos o localhost que vai ser o servidor mysql o 0 define a porta padrão do MySQL o vpopmailuser o usuário de conexão com o banco de dados e o VPOPMAIL_PASSWORD a senha do usuário vpopmailuser


echo "localhost|0|vpopmailuser|VPOPMAIL_PASSWORD|vpopmail" > ~vpopmail/etc/vpopmail.mysql
chown vpopmail:vchkpw ~vpopmail/etc/vpopmail.mysql
chmod 640 ~vpopmail/etc/vpopmail.mysql

Agora vamos acessar e descompactar o vpopmail


cd /downloads/
tar zxvf vpopmail-5.4.33.tar.gz
cd /downloads/vpopmail-5.4.33

Agora vamos acertar os parâmetros de configuração dele


./configure \
--enable-qmaildir=/var/qmail/ \
--enable-qmail-newu=/var/qmail/bin/qmail-newu \
--enable-qmail-inject=/var/qmail/bin/qmail-inject \
--enable-qmail-newmrh=/var/qmail/bin/qmail-newmrh \
--enable-tcprules-prog=/usr/bin/tcprules \
--enable-tcpserver-file=/etc/tcp.smtp \
--enable-clear-passwd \
--enable-many-domains \
--enable-valias \
--enable-qmail-ext \
--enable-logging=p \
--enable-auth-logging \
--enable-sql-logging \
--enable-auth-module=mysql \
--enable-incdir=/usr/include/mysql \
--enable-libdir=/usr/lib/ \
--disable-mysql-limits \
--disable-passwd

Agora vamos mandar instalar ele


make && make install-strip

Vamos acertar mais um arquivo so para evitar problemas de segmentação


cat > ~vpopmail/etc/vusagec.conf << EOF
Server:
    Disable = True;
EOF

Agora vamos instalar o Vqadmin uma interface web para gerenciar os domínios e usuários

Vamos preparar o vqadmin


mkdir -p /var/www/mail/cgi-bin
cd /downloads/
tar zxvf vqadmin-2.3.7.tar.gz
cd /downloads/vqadmin-2.3.7
cp /downloads/vpopmail-5.4.33/config.sub /downloads/vqadmin-2.3.7

Agora vamos acertar a configuração do vqadmin


./configure --enable-cgibindir=/var/www/mail/cgi-bin -enable-htmldir=/var/www/mail/ --enable-isoqlog=y

Agora vamos mandar compilar e instalar ele


make && make install-strip

Agora vamos acertar a localização dele


mv /images/ /var/www/mail/
ln -s /var/www/mail/images /var/www/mail/cgi-bin/images

Agora vamos acertar as permissões

cd /var/www/mail/cgi-bin/vqadmin
chown www-data:www-data .htaccess
chmod 644 .htaccess

Agora vamos acertar o .htaccess


vim /var/www/mail/cgi-bin/vqadmin/.htaccess
AuthType Basic
AuthUserFile /var/www/mail/cgi-bin/vqadmin/.htpasswd
AuthName vQadmin
require valid-user
satisfy any

Agora vamos criar o usuário para poder ter acesso a interface


htpasswd -bc /var/www/mail/cgi-bin/vqadmin/.htpasswd admin WEB_PASSWORD 

Agora vamos instalar o Qmailadmin

Vamos preparar o qmailadmin


cd /downloads/
tar zxvf qmailadmin-1.2.16.tar.gz
cd /downloads/qmailadmin-1.2.16

Agora vamos configurar o qmailadmin

./configure --enable-cgibindir=/var/www/mail/cgi-bin/ \
--enable-htmldir=/var/www/mail/cgi-bin/ \
--enable-imageurl=../../images \
--enable-imagedir=/var/www/mail/images \
--enable-domain-autofill \
--enable-ezmlmdir=/usr/local/bin/ezmlm \
--enable-autoresponder-path=/usr/bin/autorespond

Agora vamos mandar compilar e instalar ele


make && make install-strip

Agora vamos fazer só um acerto de uma imagem do qmailadmin


cd /var/www/mail/images
rm middleleft1.png
wget -c http://wiki.douglasqsantos.com.br/Downloads/mail/middleleft1.png

Agora vamos criar um virtual host para utilizarmos o qmailadmin e o vqadmin


vim /etc/apache2/sites-available/mailadmin.douglasqsantos.com.br
<VirtualHost *:80>
        ServerAdmin webmaster@douglasqsantos.com.br
        DocumentRoot /var/www/mail
        ServerName mailadmin.douglasqsantos.com.br
        Options -Indexes
        ErrorLog /var/log/apache2/mailadmin.douglasqsantos.com.br-error.log
        CustomLog /var/log/apache2/mailadmin.douglasqsantos.com.br-access.log common

        <Directory /var/www/mail/cgi-bin/>
                Options ExecCGI FollowSymLinks -Indexes
                ForceType cgi-script
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        <Directory /var/www/mail/cgi-bin/vqadmin/>
                deny from all
                Options ExecCGI -Indexes
                AllowOverride All
                Order deny,allow
        </Directory>

        <Directory /var/www/mail/qmailadmin/>
                Options -Indexes
                Order allow,deny
                Allow from all
        </Directory>

        <Directory /var/www/mail/cgi-bin/images/>
                ForceType Off
                Options -Indexes
                Order allow,deny
                Allow from all
        </Directory>

        <Directory /var/www/mail/images/qmailadmin/>
                ForceType Off
                Options -Indexes
                Order allow,deny
                Allow from all
        </Directory>

        <Directory /var/www/mail/images/vqadmin/>
                ForceType Off
                Options -Indexes
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Agora vamos ativar o nosso virtualhost


a2ensite mailadmin.douglasqsantos.com.br

Agora vamos recarregar o Apache


/etc/init.d/apache2 reload

Para acessar ou insira a entrada do mailadmin no seu servidor dns ou edite o arquivo /etc/hosts da seguinte forma no cliente que vai acessar o mailadmin


ip_servidor mailadmin.douglasqsantos.com.br mailadmin

Agora podemos acessar o vqadmin em http://mailadmin.douglasqsantos.com.br/cgi-bin/vqadmin/vqadmin.cgi para testar o vqadmin (login: admin e a senha que foi setada com o httpasswd -bc no meu caso WEB_PASSWORD )

OBS: O domínio e o usuário vão ser criados mais a frente

Para acessar o qmailadmin http://mailadmin.douglasqsantos.com.br/cgi-bin/qmailadmin aqui informe o usuário sendo postmaster o domínio douglasqsantos.com.br e a senha POSTMASTER_PASSWORD

Agora vamos remover o MTA instalado o Exim é o MTA default do Debian.


/etc/init.d/exim4 stop
dpkg --ignore-depends=exim4 -r exim4
dpkg --ignore-depends=exim4-daemon-light -r exim4-daemon-light

Caso tenha o postfix instalado podemos remover ele da seguinte forma


dpkg --purge --ignore-depends=postfix postfix

Caso tenha o sendmail instalado podemos remover ele da seguinte forma


dpkg --purge sendmail sendmail-base sendmail-bin sendmail-cf

Agora vamos instalar um MTA generico para o Debian não reclamar


dpkg -i /downloads/deb-packages/mta-local_1.0_all.deb

Agora vamos criar alguns links para podermos utilizar o Qmail como MTA default


rm -f /usr/lib/sendmail
rm -f /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

Agora vamos acertar a configuração do Qmail

Agora vamos copiar o arquivo de inicialização do qmailctl


cp /downloads/scripts/qmailctl /var/qmail/bin/qmailctl
chmod 755 /var/qmail/bin/qmailctl

Agora vamos criar um link simbolico do qmailctl


ln -s /var/qmail/bin/qmailctl /usr/bin

Agora vamos setar o Maildir como padrão


echo ./Maildir > /var/qmail/control/defaultdelivery

Agora vou acertar mais alguns arquivos que podem ser obtidas informações em http://www.lifewithqmail.com/lwq.html#configuration

echo 255 > /var/qmail/control/concurrencyremote
echo 30 > /var/qmail/control/concurrencyincoming
echo 30 > /var/qmail/control/timeoutsmtpd
echo 3 > /var/qmail/control/spfbehavior
echo postmaster@douglasqsantos.com.br > /var/qmail/control/bouncefrom
echo douglasqsantos.com.br > /var/qmail/control/doublebouncehost
echo postmaster > /var/qmail/control/doublebounceto

Agora vamos acertar as permissões dos arquivos

 
cd /var/qmail/control/
chmod 644 bouncefrom doublebouncehost doublebounceto concurrencyremote concurrencyincoming spfbehavior

Vamos definir o tamanho máximo da mensagem para 8Mb


echo '8000000' > /var/qmail/control/databytes 

Vamos habilitar o localhost para enviar email


echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
qmailctl cdb

Agora vamos acertar os alias, eles são apelidos para alguns email como root@dominio.com.br ou postmaster@dominio.com.br


echo douglas@douglasqsantos.com.br > /var/qmail/alias/.qmail-root
echo douglas@douglasqsantos.com.br > /var/qmail/alias/.qmail-postmaster
echo douglas@douglasqsantos.com.br > /var/qmail/alias/.qmail-mailer-daemon

Agora vamos acertar as permissões dos alias


chmod 644 /var/qmail/alias/.qmail*

Vamos acertar as ultimas configurações


cd /usr/src/qmail/qmail-1.03
./config-fast mail.douglasqsantos.com.br
Your fully qualified host name is mail.douglasqsantos.com.br.
Putting mail.douglasqsantos.com.br into control/me...
Putting douglasqsantos.com.br into control/defaultdomain...
Putting wiki.br into control/plusdomain...
Putting mail.douglasqsantos.com.br into control/locals...
Putting mail.douglasqsantos.com.br into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to mail.douglasqsantos.com.br.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains

Vamos fazer o último acerto


cat /dev/null > /var/qmail/control/locals

Agora vamos configurar o Daemontools que vai ser quem comando os scripts do qmail


mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpdssl/log
cd /var/qmail/supervise
chmod +t qmail-smtpd qmail-send qmail-smtpdssl

Agora vamos copiar os arquivos que controlam os serviços do qmail para as suas localizações


cp /downloads/scripts/service-qmail-send-run /var/qmail/supervise/qmail-send/run
cp /downloads/scripts/send_log /var/qmail/supervise/qmail-send/log/run
cp /downloads/scripts/service-qmail-smtpd-run /var/qmail/supervise/qmail-smtpd/run
cp /downloads/scripts/smtpd_log /var/qmail/supervise/qmail-smtpd/log/run
cp /downloads/scripts/service-qmail-smtpdssl-run /var/qmail/supervise/qmail-smtpdssl/run
cp /downloads/scripts/smtpdssl_log /var/qmail/supervise/qmail-smtpdssl/log/run

Vamos acertar as permissões


chmod 751 /var/qmail/supervise/qmail-smtpd/run
chmod 751 /var/qmail/supervise/qmail-smtpd/log/run
chmod 751 /var/qmail/supervise/qmail-send/run
chmod 751 /var/qmail/supervise/qmail-send/log/run
chmod 751 /var/qmail/supervise/qmail-smtpdssl/run
chmod 751 /var/qmail/supervise/qmail-smtpdssl/log/run

Vamos acertar os links para os serviços


ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-smtpdssl /etc/service

Agora vamos acertar mais um link para acertar o sistema


ln -s /etc/service /service

Agora vamos configurar o SpamAssassin


vim /etc/default/spamassassin
[...]
ENABLED=1
OPTIONS="--create-prefs --max-children 5 --helper-home-dir -u vpopmail -v -x -i -m 5 -c -H -s mail"

Vamos fazer mais acerto sobre os agentes auxiliares para o SpamAssassin


vim /etc/spamassassin/local.cf
[...]
#Descomente as seguintes linhas
required_score 5.0
use_bayes 1
bayes_auto_learn 1

#Adicione as seguintes linhas
use_razor2 1
skip_rbl_checks 1
use_dcc 1
use_pyzor 1
pyzor_options --homedir /etc/spamassassin/
razor_config /etc/razor/razor-agent.conf

Agora vamos acertar o pyzor


pyzor --homedir /etc/spamassassin discover 

Agora vamos acertar o razor


razor-admin -d -home=/etc/razor -create
razor-admin -d -home=/etc/razor -register

Vamos habilibar um plugin do SpamAssassin


vim /etc/spamassassin/v310.pre
[...]
#Descomente a seguinte linha
loadplugin Mail::SpamAssassin::Plugin::DCC 

Vamos habilitar mais um plugin do SpamAssassin


vim /etc/spamassassin/v320.pre
[...]
#Descomente a seguinte linha
loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody 

Vamos instalar mais uma dependência para o nosso Spamassassin


dpkg -i /downloads/deb-packages/libip-country-perl_2.27-1_all.deb 

Agora vamos habilitar mais um plugin


vim /etc/spamassassin/init.pre
[...]
#Descomente a seguinte linha
loadplugin Mail::SpamAssassin::Plugin::RelayCountry 

Agora vamos compilar as regras do SpamAssassin


sa-compile 

Agora vamos testar o SpamAssassin


/usr/bin/spamassassin -D --lint

Agora vamos reiniciar o SpamAssassin


/etc/init.d/spamassassin start

Agora vamos configurar o Clamav

dpkg-reconfigure clamav-base
#Aqui temos que determinar que o usuário e grupo vai ser o qscand outras configurações podem ser selecionadas as opções padrões.

Agora vamos configurar o freshclam

dpkg-reconfigure clamav-freshclam
#Aqui escolha daemon + Agora selecione o repositório Brasil + as outras perguntas deixe as opções default 

Agora vamos acertar as permissões

chown -R qscand:clamav /var/log/clamav /var/lib/clamav /var/run/clamav
chown qscand:qscand /etc/clamav/freshclam.conf
chmod 600 /etc/clamav/freshclam.conf
ln -s /var/log/clamav /var/log/qmail/clamav

Vamos fazer mais alguns acertos o freshclam


sed -i 's/DatabaseOwner clamav/DatabaseOwner qscand/' /etc/clamav/freshclam.conf
sed -i 's/clamav adm/qscand qscand/' /etc/logrotate.d/clamav-freshclam
sed -i 's/clamav adm/qscand qscand/' /etc/logrotate.d/clamav-daemon

Agora vamos reiniciar os serviços


/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart

Agora vamos configurar o Courier

Agora vamos acertar a configuração das chaves

Vamos acertar a configuração da geração da chave para o imap


vim /etc/courier/imapd.cnf
[...]
[ req_dn ]
C=BR
ST=PR
L=Curitiba
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=mail.douglasqsantos.com.br
emailAddress=postmaster@douglasqsantos.com.br
[...]

Vamos acertar a configuração da geração da chave para o pop

vim /etc/courier/pop3d.cnf
[...]
[ req_dn ]
C=BR
ST=PR
L=Curitiba
O=Courier Mail Server
OU=Automatically-generated POP3 SSL key
CN=mail.douglasqsantos.com.br
emailAddress=postmaster@douglasqsantos.com.br
[...]

Agora vamos remover as chaves antigas


rm -f /usr/lib/courier/*.pem
rm -f /etc/courier/*.pem

Vamos fazer um acerto na quantidade de dias que o certificado vai estar valido


sed -i 's/-days 365/-days 3650/' /usr/lib/courier/mkimapdcert
sed -i 's/-days 365/-days 3650/' /usr/lib/courier/mkpop3dcert

Agora vamos gerar novamente os certificados


dpkg-reconfigure courier-imap-ssl
dpkg-reconfigure courier-pop-ssl

Agora vamos criar um link para a localização das chaves

ln -s /usr/lib/courier/pop3d.pem /etc/courier/pop3d.pem
ln -s /usr/lib/courier/imapd.pem /etc/courier/imapd.pem 

Agora vamos configurar o courier-authlib para poder obter as informações de usuários e domínios no MySQL

Primeiro vamos acertar qual módulo devemos utilizar na autenticação


vim /etc/courier/authdaemonrc
[...]
authmodulelist="authmysql" 

Agora vamos acertar a conexão do courier com a base de dados deixe o arquivo como abaixo


vim /etc/courier/authmysqlrc
MYSQL_SERVER        localhost
MYSQL_USERNAME      vpopmailuser
MYSQL_PASSWORD      VPOPMAIL_PASSWORD
MYSQL_DATABASE      vpopmail
MYSQL_SELECT_CLAUSE    SELECT CONCAT(pw_name, '@', pw_domain) AS username,    \
            pw_passwd AS cryptpw,                    \
            pw_clear_passwd AS clearpw,                \
            '89' AS uid,                        \
            '89' AS gid,                        \
            pw_dir AS home,                        \
            '' AS maildir,                        \
            pw_shell AS quota,                        \
            pw_gecos AS fullname,                    \
            'disablewebmail=0,disablepop3=0,disableimap=0' AS options    \
            FROM vpopmail                        \
            WHERE                            \
            pw_name = '$(local_part)'                \
            AND                            \
            pw_domain = '$(domain)';                \

Agora vamos reiniciar o serviço


/etc/init.d/courier-authdaemon restart 

Agora vamos instalar o qmail-scanner

Vamos acertar o pacote


cd /downloads/
tar zxvf q-s-2.08st-20100626.tgz
cd /downloads/qmail-scanner-2.08st

Vamos preparar o pacote a configuração do qmail-scanner


./configure --admin postmaster --domain douglasqsantos.com.br --local-domains "douglasqsantos.com.br" --sa-quarantine 5 --ignore-eol-check yes --add-dscr-hdrs yes --notify psender,admin --sa-report yes --fix-mime 1 --unzip 1 --archive 0 --silent-viruses auto --redundant no --log-crypto 0

Vamos compilar o pacote


./configure --admin postmaster --domain douglasqsantos.com.br --local-domains "douglasqsantos.com.br" --sa-quarantine 5 --ignore-eol-check yes --add-dscr-hdrs yes --notify psender,admin --sa-report yes --fix-mime 1 --unzip 1 --archive 0 --silent-viruses auto --redundant no --log-crypto 0 --install 1

Vamos acertar o link para o qscan


ln -s /var/spool/qscan /var/log/qmail/qscan

Agora vamos que efetuar um teste com um usuário comum


su - douglas
/var/qmail/bin/qmail-scanner-queue.pl -g
perlscanner: generate new DB file from /var/spool/qscan/quarantine-events.txt
perlscanner: total of 35 entries.
exit

Agora vamos acertar o logrotate para qmail-scanner


cp /downloads/qmail-scanner-2.08st/contrib/logrotate.qmail-scanner /etc/logrotate.d/qmail-scanner
chmod 644 /etc/logrotate.d/qmail-scanner 

Vamos reiniciar o qmail


qmailctl restart
Restarting qmail:
* Stopping qmail-smtpdssl.
* Stopping qmail-smtpd.
* Sending qmail-send SIGTERM and restarting.
* Restarting qmail-smtpd.
* Restarting qmail-smtpdssl.

Agora vamos ver o status do qmail


qmailctl stat
/service/qmail-send: up (pid 13716) 31 seconds
/service/qmail-send/log: up (pid 13712) 31 seconds
/service/qmail-smtpd: up (pid 13713) 31 seconds
/service/qmail-smtpd/log: up (pid 13715) 31 seconds
/service/qmail-smtpdssl: up (pid 13710) 31 seconds
/service/qmail-smtpdssl/log: up (pid 13711) 31 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0

Se o algum serviço ficar em 1 segundo verefique nos seguintes arquivos


tail /var/log/qmail/qmail-send/current
tail /var/log/qmail/qmail-smtpd/current
tail /var/log/qmail/qmail-smtpdssl/current

Agora vamos testar a conbinação do qmail-scanner + spamassassin + clamav


cd /downloads/qmail-scanner-2.08st/contrib
chmod 755 test_installation.sh
./test_installation.sh -doit
Sending standard test message - no viruses... 1/4
done

Sending eicar test virus - should be caught by perlscanner module... 2/4
done

Sending eicar test virus with altered filename - should only be caught by commercial anti-virus modules (if you have any)... 3/4
done

Sending bad spam message for anti-spam testing - In case you are using SpamAssassin... 4/4


If you have enabled $sa_quarantine, $sa_delete or $sa_reject the
spam-message wont't arrive to the recipients. But if you have enabled
(good idea) 'debug' you should check
/var/spool/qscan/qmail-queue.log (or where ever you have the log).


  Done

Finished test. Now go and check Email sent to postmaster@douglasqsantos.com.br and/or the log..

Agora vamos ver as estatísticas


/var/spool/qscan/log-report.sh /var/spool/qscan/qmail-queue.log 

      5 Messages processed
      1 Virus Eicar-Test-Signature
      1 Spam quarantined
      1 Policy blocked

Agora vamos criar uma tarefa para sempre receber as estastísticas por email


echo '/var/spool/qscan/log-report.sh /var/spool/qscan/qmail-queue.log |mail douglas@douglasqsantos.com.br' > /etc/cron.daily/qmailscanner-report
chmod 755 /etc/cron.daily/qmailscanner-report

Agora vamos testar a nossa instalação Qmail


chmod +x /downloads/scripts/qmr_inst_check
/downloads/scripts/qmr_inst_check 
Congratulations, your updated Debian Qmailrocks installation looks good

Vamos criar um domínio para podermos ter acesso ao qmailadmin


/home/vpopmail/bin/vadddomain douglasqsantos.com.br POSTMASTER_PASSWORD

Vamos cadastrar um usuário para testar


/home/vpopmail/bin/vadduser -q 10M douglas@douglasqsantos.com.br doug123

Vamos agorar ver se o usuário foi criado corretamente


/home/vpopmail/bin/vuserinfo douglas@douglasqsantos.com.br
name:   douglas
passwd: $1$OLJCBol7$6/ER8xWUHsJd1spK5hdG70
clear passwd: doug123
comment/gecos: douglas
uid:    0
gid:    0
flags:  0
gecos: douglas
limits: No user limits set.
dir:       /home/vpopmail/domains/douglasqsantos.com.br/douglas
quota:     10485760S
usage:     0%
account created: Thu Nov 10 12:17:45 2011
last auth: Never logged in

Agora vamos recarregar o nosso qmail


qmailctl reload
Sending HUP signal to qmail-send.

Agora vamos efetuar um teste de envio de email


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-STARTTLS
250-SIZE 8000000
250-PIPELINING
250 8BITMIME
MAIL FROM: <douglas@douglasqsantos.com.br>
250 ok
RCPT TO: <douglas@douglasqsantos.com.br>
250 ok
DATA
354 go ahead
FROM: Douglas <douglas@douglasqsantos.com.br>
TO: Douglas <douglas@douglasqsantos.com.br>          
Subject: Teste de Envio de Email
Efetuando um teste de Envio de Email 
.
250 ok 1320935956 qp 14736
quit
221 mail.douglasqsantos.com.br
Connection closed by foreign host.

Agora vamos visualizar a nossa mensagem


cat /home/vpopmail/domains/douglasqsantos.com.br/douglas/Maildir/new/*
Return-Path: <douglas@douglasqsantos.com.br>
Delivered-To: douglas@douglasqsantos.com.br
Received: (qmail 14752 invoked by uid 168); 10 Nov 2011 12:39:16 -0200
Received: from localhost by mail (envelope-from <douglas@douglasqsantos.com.br>, uid 89) with qmail-scanner-2.08st 
 (clamdscan: 0.97.3/13913. spamassassin: 3.3.1. perlscan: 2.08st.  
 Clear:RC:1(127.0.0.1):. 
 Processed in 0.010451 secs); 10 Nov 2011 14:39:16 -0000
Received: from localhost (HELO mail.douglasqsantos.com.br) (127.0.0.1)
  by mail.douglasqsantos.com.br with SMTP; 10 Nov 2011 12:38:47 -0200
FROM: Douglas <douglas@douglasqsantos.com.br>
TO: Douglas <douglas@douglasqsantos.com.br>
Subject: Teste de Envio de Email
Efetuando um teste de Envio de Email 

Agora vamos testar o starttls


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-STARTTLS
250-SIZE 8000000
250-PIPELINING
250 8BITMIME
starttls
220 ready for tls
quit
quit
Connection closed by foreign host.

Agora vamos testar a autenticação com TLS

Vamos gerar em base64 o usuário e a senha

#perl
perl /downloads/scripts/base64
Press Enter to exit. 
Input you string: douglas@douglasqsantos.com.br
Base64 encode is : ZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnI=
Input you string: doug123
Base64 encode is : ZG91ZzEyMw=====
Input you string: ^C

Agora vamos efetuar um teste de startls


openssl s_client -starttls smtp -crlf -connect localhost:25 -quiet 
depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
verify return:1
250 8BITMIME
EHLO mail.douglasqsantos.com.br
250-mail.douglasqsantos.com.br
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-SIZE 8000000
250-PIPELINING
250 8BITMIME
auth login
334 VXNlcm5hbWU6
ZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnI=
334 UGFzc3dvcmQ6
ZG91ZzEyMw=====
235 ok, go ahead (#2.0.0)
MAIL FROM: <douglas@douglasqsantos.com.br>
250 ok
RCPT TO: <douglas@douglasqsantos.com.br>
250 ok
DATA
354 go ahead
From: Douglas <douglas@douglasqsantos.com.br>
To: Douglas <douglas@douglasqsantos.com.br>
Subject: Teste de envio de Email

Teste de Envio de Email por TLS
.
250 ok 1320935255 qp 14480
quit
221 mail.douglasqsantos.com.br

Vamos visualizar a nossa mensagem


cat /home/vpopmail/domains/douglasqsantos.com.br/douglas/Maildir/new/*
[...]
Return-Path: <douglas@douglasqsantos.com.br>
Delivered-To: douglas@douglasqsantos.com.br
Received: (qmail 14834 invoked by uid 168); 10 Nov 2011 12:42:23 -0200
Received: from localhost (douglas@douglasqsantos.com.br@localhost) by mail (envelope-from <douglas@douglasqsantos.com.br>, uid 89) with qmail-scanner-2.08st 
 (clamdscan: 0.97.3/13913. spamassassin: 3.3.1. perlscan: 2.08st.  
 Clear:RC:1(127.0.0.1):. 
 Processed in 2.954303 secs); 10 Nov 2011 14:42:23 -0000
Received: from localhost (HELO mail.douglasqsantos.com.br) (douglas@douglasqsantos.com.br@127.0.0.1)
  by mail.douglasqsantos.com.br with AES256-SHA encrypted SMTP; 10 Nov 2011 12:42:10 -0200
From: Douglas <douglas@douglasqsantos.com.br>
To: Douglas <douglas@douglasqsantos.com.br>
Subject: Teste de envio de Email
Message-ID: <1320936140101814826@mail>

Teste de Envio de Email por TLS

Agora vamos efetuar um teste de SMTP-SSL


openssl s_client -crlf -connect localhost:465 -quiet 
depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=BR/ST=Parana/L=Curitiba/O=Douglas/OU=TI/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
verify return:1
220 mail.douglasqsantos.com.br ESMTP
EHLO mail.douglasqsantos.com.br
250-mail.douglasqsantos.com.br
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-SIZE 8000000
250-PIPELINING
250 8BITMIME
auth login
334 VXNlcm5hbWU6
ZG91Z2xhc0Bkb3VnbGFzLndpa2kuYnI=
334 UGFzc3dvcmQ6
ZG91ZzEyMw=====
235 ok, go ahead (#2.0.0)
MAIL FROM: <postmaster@douglasqsantos.com.br>
250 ok
RCPT TO: <postmaster@douglasqsantos.com.br>
250 ok
DATA
354 go ahead
From: Douglas <postmaster@douglasqsantos.com.br>
To: Douglas <postmaster@douglasqsantos.com.br>
Subject: Teste de Envio de Email SMTP-SSL

Teste de SMTP-SSL
.
250 ok 1320936465 qp 14846
quit
221 mail.douglasqsantos.com.br

Agora vamos visualizar a nossa mensagem


cat /home/vpopmail/domains/douglasqsantos.com.br/postmaster/Maildir/new/*
Return-Path: <postmaster@douglasqsantos.com.br>
Delivered-To: postmaster@douglasqsantos.com.br
Received: (qmail 14846 invoked by uid 89); 10 Nov 2011 12:46:55 -0200
Received: from localhost (HELO mail.douglasqsantos.com.br) (douglas@douglasqsantos.com.br@127.0.0.1)
  by mail.douglasqsantos.com.br with SMTP; 10 Nov 2011 12:46:55 -0200
From: Douglas <postmaster@douglasqsantos.com.br>
To: Douglas <postmaster@douglasqsantos.com.br>
Subject: Teste de Envio de Email SMTP-SSL

Teste de SMTP-SSL

Agora vamos efetuar o teste de autenticação com Pop3


telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user douglas@douglasqsantos.com.br
+OK Password required.
pass doug123
+OK logged in.
#Listando as mensagens
list
+OK POP3 clients that break here, they violate STD53.
1 700
2 817
.
#Mandando ler a mensagem 1
retr 1
+OK 700 octets follow.
Return-Path: <douglas@douglasqsantos.com.br>
Delivered-To: douglas@douglasqsantos.com.br
Received: (qmail 14752 invoked by uid 168); 10 Nov 2011 12:39:16 -0200
Received: from localhost by mail (envelope-from <douglas@douglasqsantos.com.br>, uid 89) with qmail-scanner-2.08st 
 (clamdscan: 0.97.3/13913. spamassassin: 3.3.1. perlscan: 2.08st.  
 Clear:RC:1(127.0.0.1):. 
 Processed in 0.010451 secs); 10 Nov 2011 14:39:16 -0000
Received: from localhost (HELO mail.douglasqsantos.com.br) (127.0.0.1)
  by mail.douglasqsantos.com.br with SMTP; 10 Nov 2011 12:38:47 -0200
FROM: Douglas <douglas@douglasqsantos.com.br>
TO: Douglas <douglas@douglasqsantos.com.br>
Subject: Teste de Envio de Email
Efetuando um teste de Envio de Email 
.
quit
+OK Bye-bye.
Connection closed by foreign host.

Agora vamos testar a autenticação do pop3 com SSL


openssl s_client -connect localhost:995 -quiet 
depth=0 /C=US/ST=NY/L=New York/O=Courier Mail Server/OU=Automatically-generated POP3 SSL key/CN=localhost/emailAddress=postmaster@example.com
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=US/ST=NY/L=New York/O=Courier Mail Server/OU=Automatically-generated POP3 SSL key/CN=localhost/emailAddress=postmaster@example.com
verify return:1
+OK Hello there.
user douglas@douglasqsantos.com.br
+OK Password required.
pass doug123
+OK logged in.
#listando as mensagens
list
+OK POP3 clients that break here, they violate STD53.
1 700
2 817
.
#Mandando ler a mensagem 2
retr 2
+OK 817 octets follow.
Return-Path: <douglas@douglasqsantos.com.br>
Delivered-To: douglas@douglasqsantos.com.br
Received: (qmail 14834 invoked by uid 168); 10 Nov 2011 12:42:23 -0200
Received: from localhost (douglas@douglasqsantos.com.br@localhost) by mail (envelope-from <douglas@douglasqsantos.com.br>, uid 89) with qmail-scanner-2.08st 
 (clamdscan: 0.97.3/13913. spamassassin: 3.3.1. perlscan: 2.08st.  
 Clear:RC:1(127.0.0.1):. 
 Processed in 2.954303 secs); 10 Nov 2011 14:42:23 -0000
Received: from localhost (HELO mail.douglasqsantos.com.br) (douglas@douglasqsantos.com.br@127.0.0.1)
  by mail.douglasqsantos.com.br with AES256-SHA encrypted SMTP; 10 Nov 2011 12:42:10 -0200
From: Douglas <douglas@douglasqsantos.com.br>
To: Douglas <douglas@douglasqsantos.com.br>
Subject: Teste de envio de Email
Message-ID: <1320936140101814826@mail>

Teste de Envio de Email por TLS
.
quit
+OK Bye-bye.

Agora vamos efetuar um teste com Imap


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] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc.  See COPYING for distribution information.
a login douglas@douglasqsantos.com.br doug123
a OK LOGIN Ok.
a logout
* BYE Courier-IMAP server shutting down
a OK LOGOUT completed
Connection closed by foreign host.

Agora vamos efetuar o teste de autenticação do imap com SSL


openssl s_client -connect localhost:993 -quiet 
depth=0 /C=BR/ST=PR/L=Curitiba/O=Courier Mail Server/OU=Automatically-generated IMAP SSL key/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=BR/ST=PR/L=Curitiba/O=Courier Mail Server/OU=Automatically-generated IMAP SSL key/CN=mail.douglasqsantos.com.br/emailAddress=postmaster@douglasqsantos.com.br
verify return:1
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc.  See COPYING for distribution information.
a login douglas@douglasqsantos.com.br doug123
a OK LOGIN Ok.
a logout
* BYE Courier-IMAP server shutting down
a OK LOGOUT completed

Agora vamos instalar o validrcptto, que vai efetuar a validação dos usuários que existem na base de dados.

Vamos acertar o pacote

cd /downloads/
tar xvzf cdb-0.75.tar.gz
cd /downloads/cdb-0.75
sed -i '/int errno/{s/^/\/* /;s/$/ *\;G;s/$/#include <errno.h>/;}' error.h

Agora vamos mandar compilar e instalar ele


make
make setup check

Vamos instalar as dependências


cd /downloads/deb-packages
dh-make-perl --build --install --cpan 'CDB_File'
dpkg -i /downloads/deb-packages/libcdb-file-perl_0.97-1_amd64.deb

Vamos acertar os scripts agora


cp /downloads/scripts/mkvalidrcptto /usr/local/bin
chmod 755 /usr/local/bin/mkvalidrcptto
cd /var/qmail/control/
/home/vpopmail/bin/vadddomain mail.douglasqsantos.com.br SENHA_DOMINIO
mkvalidrcptto > validrcptto.txt
cdbmake-12 validrcptto.cdb validrcptto.tmp < validrcptto.txt

Vamos acertar um arquivo de configuração


vim /var/qmail/supervise/qmail-smtpd/run
[...]
#Descomente as seguintes linhas
VALIDRCPTTO_CDB="$VQ/control/validrcptto.cdb"
VALIDRCPTTO_LIMIT=10
VALIDRCPTTO_LOG=2

Agora vamos efetuar o agendamento da atualização do validrcptto


cp /downloads/scripts/update-validrcptto /etc/cron.hourly/
chmod +x /etc/cron.hourly/update-validrcptto 

Agora vamos reiniciar o qmail


qmailctl restart 
Restarting qmail:
* Stopping qmail-smtpdssl.
* Stopping qmail-smtpd.
* Sending qmail-send SIGTERM and restarting.
* Restarting qmail-smtpd.
* Restarting qmail-smtpdssl.

Agora vamos instalar um greylist

Vamos fazer um acerto no arquivo de inicialização do smtpd do qmail


vim /var/qmail/supervise/qmail-smtpd/run
[...]
GREYLIST="/var/qmail/bin/jgreylist"
JGREYLIST_DIR="$VQ/jgreylist"

Agora copiar os arquivos e acertar as permissões


cp /downloads/scripts/jgreylist /var/qmail/bin
cp /downloads/scripts/jgreylist-clean /usr/local/sbin
chown root:vchkpw /var/qmail/bin/jgreylist
chmod 0750 /var/qmail/bin/jgreylist
chown root:root /usr/local/sbin/jgreylist-clean
chmod 0755 /usr/local/sbin/jgreylist-clean
mkdir -m 0700 /var/qmail/jgreylist
chown vpopmail:vchkpw /var/qmail/jgreylist
echo '/usr/local/sbin/jgreylist-clean 2>&1 > /dev/null' > /etc/cron.daily/jgreylist-clean

Agora vamos dar uma melhorada na performace no greylist


cd /downloads/scripts/
mv /downloads/scripts/jgreylist /downloads/scripts/jgreylist.pl
make jgreylist
cp /downloads/scripts/jgreylist /var/qmail/bin
chown root:vchkpw /var/qmail/bin/jgreylist
chmod 0750 /var/qmail/bin/jgreylist

Agora vamos reiniciar o qmail


qmailctl restart 

Agora vamos efetuar a instalação do DKIM

Vamos instalar o dkim


aptitude install libdkim-dev -y

Agora vamos acertar a instalação


mv /var/qmail/bin/qmail-remote /var/qmail/bin/qmail-remote.orig
cp /downloads/scripts/qmail-remote /var/qmail/bin/qmail-remote
chown root:qmail /var/qmail/bin/qmail-remote
chmod 0755 /var/qmail/bin/qmail-remote
mkdir -p /var/domainkeys
chown qmailr:qmail /var/domainkeys
chmod 0700 /var/domainkeys

Agora vamos gerar a nossa chave DKIM


chmod +x /downloads/scripts/domainkey
/downloads/scripts/domainkey douglasqsantos.com.br
Generating RSA private key, 1024 bit long modulus
.......++++++
.............++++++
e is 65537 (0x10001)
writing RSA key
-e 
TXT record for BIND:
default._domainkey.douglasqsantos.com.br. IN TXT "v=DKIM1\; k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBaXSImetqrG08MQSi/u2vB4mdb6QeXu9VradQy/VJlM3zztfuZk+vRKwZBHWP2Q63+QmJR5O9EBTBXyeCuQnE9U4sy3/XQn+JKQ91/q+6aIXIO19L5fzlWqjPH5VHWtvC9WO4jnKmnReAo440gg2cC7WChYxjZ7ix+T+6Vtph9QIDAQAB"

Agora temos que pegar essa chave e inserir no bind e reiniciar ele

Temos que inserir a seguinte linha no meu caso


default._domainkey.douglasqsantos.com.br. IN TXT "v=DKIM1\; k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBaXSImetqrG08MQSi/u2vB4mdb6QeXu9VradQy/VJlM3zztfuZk+vRKwZBHWP2Q63+QmJR5O9EBTBXyeCuQnE9U4sy3/XQn+JKQ91/q+6aIXIO19L5fzlWqjPH5VHWtvC9WO4jnKmnReAo440gg2cC7WChYxjZ7ix+T+6Vtph9QIDAQAB"

Agora vamos consultar os registros TXT do nosso domínio

dig @127.0.0.1 default._domainkey.douglasqsantos.com.br. txt

; <<>> DiG 9.7.3 <<>> @127.0.0.1 default._domainkey.douglasqsantos.com.br. txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17902
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;default._domainkey.douglasqsantos.com.br. IN TXT

;; ANSWER SECTION:
default._domainkey.douglasqsantos.com.br. 86400 IN TXT "v=DKIM1\; k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBaXSImetqrG08MQSi/u2vB4mdb6QeXu9VradQy/VJlM3zztfuZk+vRKwZBHWP2Q63+QmJR5O9EBTBXyeCuQnE9U4sy3/XQn+JKQ91/q+6aIXIO19L5fzlWqjPH5VHWtvC9WO4jnKmnReAo440gg2cC7WChYxjZ7ix+T+6Vtph9QIDAQAB"

;; AUTHORITY SECTION:
douglasqsantos.com.br.  86400 IN  NS  ns1.douglasqsantos.com.br.
douglasqsantos.com.br.  86400 IN  NS  douglasqsantos.com.br.
douglasqsantos.com.br.  86400 IN  NS  ns2.douglasqsantos.com.br.

;; ADDITIONAL SECTION:
ns1.douglasqsantos.com.br.  86400 IN  A 10.0.0.25
ns2.douglasqsantos.com.br.  86400 IN  A 10.0.0.25
douglasqsantos.com.br.  86400 IN  A 10.0.0.25

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 10 16:24:07 2011
;; MSG SIZE  rcvd: 402

Agora vamos acertar o mrtg para o Qmail

Agora vamos instalar as dependências


aptitude install mrtg zlibc libpng12-dev

Agora vamos instalar o qmailmrtg


cd /downloads/
tar -zxvf qmailmrtg7-4.2.tar.gz
cd /downloads/qmailmrtg7-4.2
make && make install 

Agora vamos acertar os scripts

cd /usr/local/bin/
wget -c http://wiki.douglasqsantos.com.br/Downloads/mail/courierstats
mv /usr/local/bin/courierstats /usr/local/bin/courierstats.pl
chmod +x /usr/local/bin/courierstats.pl

Agora vamos acertar o courierstats


mkdir -p /var/www/mail/mrtg
cd /var/www/mail/mrtg
wget -c http://wiki.douglasqsantos.com.br/Downloads/scripts/index.mrtg
sed -i "s/MRTGHOSTNAME/`hostname`/" /var/www/mail/mrtg/index.mrtg
mv /var/www/mail/mrtg/index.mrtg /var/www/mail/mrtg/index.html

Agora vamos acertar o arquivo de configuração do mrtg

cd /etc/
mv /etc/mrtg.cfg /etc/mrtg.cfg.orig
wget -c http://wiki.douglasqsantos.com.br/Downloads/scripts/qmail.mrtg.cfg
sed -i "s/MRTGHOSTNAME/`hostname`/" /etc/qmail.mrtg.cfg
mv /etc/qmail.mrtg.cfg /etc/mrtg.cfg 

Agora vamos acertar o logrotate


vim /etc/logrotate.d/rsyslog
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
  rotate 30
  daily
  missingok
  notifempty
  compress
  delaycompress
  sharedscripts
  postrotate
    invoke-rc.d rsyslog reload > /dev/null
  endscript
}

Agora vamos instalar o roundcubemail

cd /downloads/
tar zxvfp roundcubemail-0.6.tar.gz
chown -R root:root /downloads/roundcubemail-0.6
mv /downloads/roundcubemail-0.6 /var/www/mail/
ln -s /var/www/mail/roundcubemail-0.6/ /var/www/mail/webmail
ln -s /var/www/mail/webmail/logs /var/log/webmail
chmod 777 /var/www/mail/webmail/logs/
chmod 777 /var/www/mail/webmail/temp/

Agora vamos preparar a base de dados para o webmail


mysql -u root -p
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'ROUNDCUBEMAILPASSWORD';
quit;

Testando a conexão do nosso novo usuário


mysql -uroundcube -pROUNDCUBEMAILPASSWORD
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 311
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye

Vamos acertar a configuração do webmail


cd /var/www/mail/webmail
mysql -uroundcube -pROUNDCUBEMAILPASSWORD roundcubemail < SQL/mysql.initial.sql
cp /var/www/mail/webmail/config/db.inc.php.dist /var/www/mail/webmail/config/db.inc.php
cp /var/www/mail/webmail/config/main.inc.php.dist /var/www/mail/webmail/config/main.inc.php

Vamos fazer alguns acertos no arquivo de configuração

vim /var/www/mail/webmail/config/main.inc.php
$rcmail_config['enable_installer'] = true;
$rcmail_config['smtp_server'] = 'tls:localhost';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['default_host'] = 'ssl:localhost';
$rcmail_config['default_port'] = 993;
$rcmail_config['drafts_mbox'] = 'INBOX.Drafts';
$rcmail_config['junk_mbox'] = 'INBOX.Junk';
$rcmail_config['sent_mbox'] = 'INBOX.Sent';
$rcmail_config['trash_mbox'] = 'INBOX.Trash';
$rcmail_config['default_imap_folders'] = array('INBOX', 'INBOX.Drafts', 'INBOX.Sent', 'INBOX.Junk', 'INBOX.Trash');
$rcmail_config['create_default_folders'] = true';
$rcmail_config['language'] = pt_BR;

Agora vamos configurar a conexão com o banco de dados

vim /var/www/mail/webmail/config/db.inc.php
$rcmail_config['db_dsnw'] = 'mysql:roundcube:ROUNDCUBEMAILPASSWORD@localhost/roundcubemail'; 

Agora vamos reiniciar o apache


/etc/init.d/apache2 restart

Agora vamos remover os arquivos que não são mais necessários


cd /var/www/mail/webmail
rm -rf installer/ CHANGELOG INSTALL LICENSE README UPGRADING

O seu webmail está em http://mailadmin.douglasqsantos.com.br/webmail

Referências