O Qmail é um dos MTAs mais usados no planeta, todos reclamam que é dificil falam que tem de aplicar vários patches, mas na hora do vamos ver ele continua prevalecendo nos provedores e em algumas empresas.
Muito por causa da excelente ferramenta de configuração QmailAdmin e por não dar pau nem a pau ( perdoem o trocadilho ;-P ). Por isso resolvi criar este post com uma solução completa de email usando o Qmail e seus complementos.
Minha fonte de inspiração principal foi o sitio Qmailrockz, porém ele anda muito mas muito desatualizado, então para ajudar toda a comunidade instalei o Debian Lenny no VirtualBox e iniciei minha jornada, diga-se de passagem e que jornada.
Fica ai mas uma contribuição.
Então divirta-se!!!!
Instale todas as dependências necessárias
aptitude install apache2 php5 perl gcc mysql-server openssl libssl-dev wget patch patchutils build-essential courier-imap-ssl libdb-dev libmysqlclient15-dev perl-suid unzip libpcre3-dev libgdbm-dev libdigest-sha1-perl libdigest-hmac-perl libnet-dns-perl libtime-hires-perl libhtml-parser-perl libparse-syslog-perl libstorable-perl
Crie o diretório downloads na raiz.
*OBS: É muito importante que seja criado como informado abaixo senão problemas ocorrerão durante a execução dos scripts.
mkdir /downloads
Acesse o diretório criado
cd /downloads
Como a base da instalação foi baseada no qmailrockz estou disponibilizando um pacote tar.gz com todos os softwares necessários.
Aproveitando o ensejo eu atualizei alguns sources com as versões mais recentes e dei uma enxugada retirando arquivos desnecessários para a instalação no Debian.
Baixe o pacote qmailrockzdebian e descompacte-o
wget -c http://www.cropalato.com/alexos/qmailrockzdebian.tar.bz2
tar jxvf qmailrockzdebian.tar.bz2
Execute o script de instalação inicial
/downloads/qmailrocks/scripts/install/qmr_install_linux-s1.script
Aplique os patches
/downloads/qmailrocks/scripts/util/qmail_big_patches.script
Compile o Qmail
cd /usr/src/qmail/qmail-1.03
make man && make setup check
./config-fast nome_do_host ( ex: ./config-fast mail.teste.org )
Crie um certificado digital
make cert
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Bahia
Locality Name (eg, city) []:Salvador
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NGSecurity
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:debian
Email Address []:postmaster@debian
Mude o dono do arquivo criado
chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem
Compile o Ucspi
cd /usr/src/qmail/ucspi-tcp-0.88/
patch < /downloads/qmailrocks/patches/ucspi-tcp-0.88.errno.patch
make && make setup check
Compile o Daemontools
cd /package/admin/daemontools-0.76/src
patch < /downloads/qmailrocks/patches/daemontools-0.76.errno.patch
cd /package/admin/daemontools-0.76
package/install
Compile o Ezmlm
cd /downloads/qmailrocks/
tar zxvf ezmlm-0.53-idx-0.41.tar.gz
cd ezmlm-0.53-idx-0.41
make && make setup
Compile o Autoresponder
cd /downloads/qmailrocks
tar zxvf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make && make install
Compile o Vpopmail com suporte a MySQL
Crie um usuário
adduser ( ex. adduser vpopm )
mkdir -p ~vpopmail/etc
chown vpopmail:vchkpw ~vpopmail/etc
echo “localhost|0|vpopmailuser|password|vpopmail” > ~vpopmail/etc/vpopmail.mysql ( ex. echo “localhost|0|vpopm|123456|vpopmail” > ~vpopmail/etc/vpopmail.mysql )
chown vpopmail:vchkpw ~vpopmail/etc/vpopmail.mysql
chmod 640 ~vpopmail/etc/vpopmail.mysql
Configure o MySQL
mysql -u root -p
CREATE DATABASE vpopmail;
GRANT all privileges ON vpopmail.* TO vpopm@localhost IDENTIFIED BY ‘123456′;
*OBS: Mude o usuário e a senha de acordo com o usuário criado anteriormente, como no meu exemplo criei o usuário vpopm vou usá-lo.
quit
Testando
mysql -u vpopm -p
Compile o Vpopmail
cd /downloads/qmailrocks
tar jxvf vpopmail-5.4.27.tar.bz2 && cd vpopmail-5.4.27
./configure –enable-logging=p –enable-auth-module=mysql –disable-passwd –enable-clear-passwd –disable-many-domains –enable-auth-logging –enable-sql-logging –enable-valias –disable-mysql-limits
make && make install-strip
Compile o Vqadmi
cd /downloads/qmailrocks
tar zxvf vqadmin-2.3.6.tar.gz && cd vqadmin-2.3.6
./configure –enable-cgibindir=/usr/lib/cgi-bin –enable-htmldir=/var/www/html
make && make install-strip
Configure o Apache2
Edite o arquivo /etc/apache2/sites-available/default
vim /etc/apache2/sites-available/default
Comente as seguintes linhas:
#
# AllowOverride None
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all
#
e adicione as seguintes linhas:
deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
*OBS: Veja como ficou o arquivo default após a alteração AQUI
Crie os arquivos necessários para autenticação no Apache
Acesse o diretório do Vqadmin
cd /usr/lib/cgi-bin/vqadmin
Crie o arquivo .htaccess
vim .htaccess
Copie o conteúdo abaixo:
AuthType Basic
AuthUserFile /etc/apache2/.htpasswd
AuthName vQadmin
require valid-user
satisfy any
Mude o dono e as permissões do arquivo criado
chown www-data .htaccess
chmod 644 .htaccess
Crie o arquivo .htpasswd e informa a senha do usuário admin* e altere as pemissões do arquivo criado
htpasswd -bc /etc/apache2/.htpasswd admin senha_admin
chmod 644 /etc/apache2/.htpasswd
apache2ctl restart
*OBS: Por padrão o vqadmin configura todas as permissões para o usuário admin. Se você quiser criar outro usuário leia a observação em http://www.qmailrocks.org/vqadmin.htm
Testando
Acesse http://IP_SERVIDOR/cgi-bin/vqadmin/vqadmin.cgi
Crie um dominio de email e informe a senha do postmaster
*OBS: Para habilitar o SSL leia estes posts [1] [2]
Compile o Maildrop
cd /downloads/qmailrocks
tar jxvf maildrop-2.0.4.tar.bz2 && cd maildrop-2.0.4
./configure –prefix=/usr/local –exec-prefix=/usr/local –enable-maildrop-uid=root –enable-maildrop-gid=vchkpw –enable-maildirquota
make && make install-strip && make install-man
Instale o Qmailadmin
cd /downloads/qmailrocks
tar zxvf qmailadmin-1.2.12.tar.gz && cd qmailadmin-1.2.12
./configure –enable-help –enable-htmldir=/var/www –enable-cgibindir=/usr/lib/cgi-bin –enable-imageurl=/images-qa –enable-imagedir=/var/www/images-qa
make && make install-strip
Testando
Acesse http://IP_SERVIDOR/cgi-bin/qmailadmin
Informe o dominio criado no Vqadmin e a senha do postmaster
Instale o Qmail
/downloads/qmailrocks/scripts/finalize/linux/finalize_linux.script
*Edite os arquivos /var/qmail/supervise/qmail-pop3d/run e /var/qmail/supervise/qmail-smtpd/run localizando o mail.example.com e mude para o hostname do seu servidor
Finalize a configuração do Qmail
qmailctl stop
echo ‘127.:allow,RELAYCLIENT=””‘ >> /etc/tcp.smtp
echo ‘172.16:allow,RELAYCLIENT=””‘ >> /etc/tcp.smtp *Aqui você irá informar a rede que poderá enviar email, que no meu exemplo é 172.16.0.0qmailctl cdb
echo postmaster > /var/qmail/alias/.qmail-root
echo postmaster > /var/qmail/alias/.qmail-postmaster
echo postmaster > /var/qmail/alias/.qmail-mailer-daemonln -s /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-anonymous
chmod 644 /var/qmail/alias/.qmail*
Removendo o Exim
/etc/init.d/exim4 stop
update-rc.d exim remove
*O mesmo pode ser feito para para o postfix ou qualquer outro MTA instalado
Inicie o Qmail
Rode o script qmr_inst_check
/downloads/qmailrocks/scripts/util/qmr_inst_check
Obtendo a saida abaixo tudo está OK.
Congratulations, your Qmailrocks.org Qmail installation looks good!
Reinicie o qmail e verifique o status
qmailctl stop
qmailctl start
qmailctl stat
Configure o Courier Imap
Compile o courier-authlib para obter uma biblioteca importante para autenticação via vpopmail
cd /downloads/qmailrocks/
tar jxvf courier-authlib-0.58.tar.bz2 && cd courier-authlib-0.58
./configure –prefix=/usr/local –exec-prefix=/usr/local –with-authvchkpw –without-authldap –without-authmysql –disable-root-check –with-ssl –with-authchangepwdir=/usr/local/libexec/authlib
make && make check
cp .libs/libauthvchkpw.so /usr/lib/courier-authlib/
Configurando o Courier
Edite o arquivo /etc/courier/authdaemonrc
vim /etc/courier/authdaemonrc
Mude a linha authmodulelist
de
“authpam”
para
“authvchkpw”
após a mudança ela ficará assim authmodulelist=”authvchkpw”
Mude a linha authmodulelistorig
de
“authuserdb authpam authpgsql authldap authmysql authcustom authpipe”
para
“authvchkpw”
após a mudança ela ficará assim authmodulelistorig=”authvchkpw”
Reinicie os serviços IMAP
/etc/init.d/courier-imap stop && /etc/init.d/courier-authdaemon stop && /etc/init.d/courier-imap-ssl stop && /etc/init.d/courier-imap start && /etc/init.d/courier-authdaemon start && /etc/init.d/courier-imap-ssl start
Testando
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-2008 Double Precision, Inc. See COPYING for distribution information.
a login postmaster@dominio.com.br senha
a OK LOGIN Ok. ( Logado com sucesso!!! )
a logout
* BYE Courier-IMAP server shutting down
a OK LOGOUT completed
Connection closed by foreign host.
Instalando o Squirrelmail
O Squirrelmail é um dos webmails mais usados pela comunidade, além de ser bastante simples de usar e configurar ele possui vários plugins que incrementam o ambiente.
Existe um fork em pt_BR bastante interessante para as empresas chamado squirreloutlook , além de ser bastante bonito este tema facilita a interação do usuário com o ambiente.
Eu inclui o squirreloutlook no pacote do qmailrockzdebian com todas as correções necessárias, então com pequenos ajustes ele estará pronto para o seu ambiente.
Configurando o Squirreloutlook
Descompacte o arquivo webmail.tar.gz no diretório /var/www/html e configure-o
tar zxvf webmail.tar.gz -C /var/www/html/
mkdir /var/sqattachements
chown -R www-data:www-data /var/sqattachements
cd /var/www/html
chown -R www-data:www-data /var/www/html/webmail/data
cd /var/www/html/webmail/config
./conf.pl
General
——-
1. Domain : 1.2.3.4 (MUDE PARA O IP DO SEU SERVIDOR)
2. Invert Time : false
3. Sendmail or SMTP : SMTPIMAP Settings
————–
4. IMAP Server : localhost
5. IMAP Port : 143
6. Authentication type : login
7. Secure IMAP (TLS) : false
8. Server software : other
9. Delimiter : detectSMTP Settings
————-
4. SMTP Server : localhost
5. SMTP Port : 25
6. POP before SMTP : false
7. SMTP Authentication : login
8. Secure SMTP (TLS) : false
Testando
Acesse http://IP_SERVIDOR/webmail
Instale o Clamav
cd /downloads/qmailrocks/
tar zxvf clamav-0.87.tar.gz
cd clamav-0.87
useradd -s /sbin/nologin -d /tmp clamav
groupadd clamav
useradd -s /sbin/nologin -d /bin/false qscand
groupadd qscand
./configure –prefix=/usr –sysconfdir=/etc
make && make check && make install
mkdir /var/log/clamav /var/lib/clamav
chown -R clamav:clamav /var/log/clamav /var/lib/clamav
Configure o Clamav
Edite o arquivo /etc/clamd.conf
vim /etc/clamd.conf
“Example” – Comente
“LogFile” – Mude para /var/log/clamav/clamd.log
“LogTime” – Descomente
“LogSyslog” – Descomente
“PidFile” – Descomente e mude para /var/run/clamav/clamd.pid
“User” – Mude para qscand
“ScanMail” – Descomente
Configure o Freshclam
Edite o arquivo /etc/freshclam.conf
vim /etc/freshclam.conf
“Example” – Comente
DatabaseDirectory – Descomente e mude para /var/lib/clamav
Atualize a base de dados do Clamav
/usr/bin/freshclam -l /var/log/clamav/clam-update.log
Agende as atualizações
crontab -e
35 1 * * * /usr/bin/freshclam –quiet -l /var/log/clamav/clam-update.log
Crie o script de inicialização
cp /downloads/qmailrocks/scripts/misc/debian_clamd /etc/init.d/clamd
mkdir /var/run/clamav
chown -R qscand:qscand /var/run/clamav
/etc/init.d/clamd stop && /etc/init.d/clamd start
update-rc.d clamd start 75 2 3 4 5 .
Instale o Spamassassin
cd /downloads/qmailrocks
tar jxvf Mail-SpamAssassin-3.2.5.tar.bz2
cd Mail-SpamAssassin-3.2.5
perl Makefile.PL
make && make install
groupadd spamd
useradd -g spamd -s /bin/false -m -d /home/spamassassin spamd
Configure o Spamassassin
vim /etc/mail/spamassassin/local.cf
Edite o arquivo adicionando o parâmetros abaixo:
rewrite_subject 1
required_hits 5
Crie o script de inicialização
cp /downloads/qmailrocks/scripts/misc/debian_spamd /etc/init.d/spamd
mkdir /var/run/spamd
chown -R spamd:spamd /var/run/spamd
Localize o arquivo spamd
whereis spamd
Edite o arquivo /etc/init.d/spamd
vim /etc/init.d/spamd
DAEMON=”ADICIONE AQUI O CAMINHO INFORMADO PELO COMANDO WHEREIS”
Inicie o Spamassassin
/etc/init.d/spamd start
update-rc.d spamd start 75 2 3 4 5 .
Instale o Qmail-scanner
cd /downloads/qmailrocks
tar zxvf qmail-scanner-1.25.tgz
tar zxvf qms-analog-0.4.4.tar.gz
cd qms-analog-0.4.4
make all
cp qmail-scanner-1.25-st-qms-20050618.patch /downloads/qmailrocks/qmail-scanner-1.25
cd /downloads/qmailrocks/qmail-scanner-1.25
patch -p1 &1
Reinicie o Qmail
qmailctl stop && qmailctl start && qmailctl stat
Testando o Qmail-scanner
cd /downloads/qmailrocks/qmail-scanner-1.25/contrib
chmod 755 test_installation.sh
./test_installation.sh -doit
Instale o Qmailanalog
cd /downloads/qmailrocks/
tar zxvf qmailanalog-0.70.tar.gz
cd qmailanalog-0.70
make && make setup check
Instale o Qlogtools
cd /downloads/qmailrocks/
tar zxvf qlogtools-3.1.tar.gz
cd qlogtools-3.1
mkdir /usr/local/man
make
./installer
Configure o Qmailstats
cp /downloads/qmailrocks/qms-analog-0.4.2/qmailstats /var/qmail/bin
vim /var/qmail/bin/qmailstats
*Edite o arquivo qmailstats alterando as linhas your_postmaster@yourdomain.com com email do usuário que receberá os relatórios.
Concluindo a instalação do Qmailstats
chmod 750 /var/qmail/bin/qmailstats
/var/qmail/bin/qmailstats
crontab -e
0 3 * * * /var/qmail/bin/qmailstats 1>/dev/null 2>/dev/null
Instale o Qtrap
cd /home/vpopmail
mkdir -p qtrap/logs
cd qtrap
cp /downloads/qmailrocks/scripts/qtrap/qtrap-2.0.0 ./qtrap.sh
vim qtrap.sh
*Altere a linha address@somewhere.com|address@somewhereelse.com|*entiredomain.com
informado os emails ou diminios que estarão na whitelist do qtrap.
*Altere a linha porn|PORN|Sex|SEX informando as palavras proibidas.
Concluindo a configuração do Qtrap
touch /home/vpopmail/qtrap/logs/qtrap.log
chown -R vpopmail:vchkpw /home/vpopmail/qtrap
chmod -R 755 /home/vpopmail/qtrap
cd /home/vpopmail/domains/SEUDOMINIO
vim .qmail-default
*Adicione a linha | /home/vpopmail/qtrap/qtrap.sh acima da linha existente como no exemplo abaixo:
Antes
| /home/vpopmail/bin/vdelivermail ” delete
Depois
| /home/vpopmail/qtrap/qtrap.sh
| /home/vpopmail/bin/vdelivermail ” delete
Finalizando todos estes passos você terá uma solução robusta e completa de email.
Próximos passos:
1 – Autenticar o Qmail no AD
2 – Criar uma ferramenta que agilize esta instalação.
Então mãos a obra!!!
Fontes:
http://www.qmailrocks.org
http://www.len.ro/2007/12/qmail/
Troubleshooting
Ocorrendo o erro “configure: error: No vpopmail etc/lib_deps file. Upgrade to vpopmail-4.9.8 or above” durante a compilação do Vqadmin execute os seguintes comandos:
cp /downloads/qmailrocks/scripts/misc/*_deps /home/vpopmail/etc/
chown -R vpopmail:vchkpw /home/vpopmail/etc
Após executar estes comandos compile os Vqadmin normalmente.
Por Alexandro Silva
[Voltar]