Press "Enter" to skip to content

Instalando o Qmail no Debian Lenny

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.0

qmailctl cdb

echo postmaster > /var/qmail/alias/.qmail-root
echo postmaster > /var/qmail/alias/.qmail-postmaster
echo postmaster > /var/qmail/alias/.qmail-mailer-daemon

ln -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 : SMTP

IMAP Settings
————–
4. IMAP Server : localhost
5. IMAP Port : 143
6. Authentication type : login
7. Secure IMAP (TLS) : false
8. Server software : other
9. Delimiter : detect

SMTP 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.

creysson.jpg

17 Comments

  1. Iron Junior Iron Junior March 13, 2009

    Praticamente uma trilogia! hehhehe

    =P
    vlw!

  2. A…MI…GÃOOO!!!!, você estava super inspirado para fazer este texto beeeemm simplificado. hahaha! 😛

    Ate mais amigão!

  3. zenildo zenildo March 16, 2009

    Alex realmente você estava inspirado.

  4. weslly21 weslly21 April 12, 2009

    deu esse erro ai o que fazer ?

    meu debian eh o 64 bit amd

    proxy2:/downloads/qmailrocks/vqadmin-2.3.6# ./configure –enable-cgibindir=/usr/lib/cgi-bin –enable-htmldir=/var/www/html
    checking for a BSD-compatible install… /usr/bin/install -c
    checking whether build environment is sane… yes
    /downloads/qmailrocks/vqadmin-2.3.6/missing: Unknown `–run’ option
    Try `/downloads/qmailrocks/vqadmin-2.3.6/missing –help’ for more information
    configure: WARNING: `missing’ script is too old or missing
    checking for gawk… no
    checking for mawk… mawk
    checking whether make sets $(MAKE)… yes
    checking build system type… Invalid configuration `x86_64-unknown-linux’: machine `x86_64-unknown’ not recognized
    configure: error: /bin/sh ./config.sub x86_64-unknown-linux failed
    proxy2:/downloads/qmailrocks/vqadmin-2.3.6#

  5. Wesley Wesley April 17, 2009

    Olá…
    Muito bom artigo….

    segui seu passos e funcionou tudo blzera!
    so esta acontecendo algo, talvez vc possa me ajudar

    todo email q eu mando do meu servidor, ele automaticamente eh tratado como spam!

    por exemplo seu eu mando uma mensagem do servidor qmail p/ o meu email do google ele cai ja na pasta spam

    pq será??
    funcei mas naum consegui arrumar isso!

    eu testei mandando email p/ um conta no gmail e no yahoo

  6. Alexandro Silva Alexandro Silva April 17, 2009

    Olá Wesley,

    Veja seu DNS, provavelmente está sem o reverso do servidor de email.

    Outra coisa:

    Normalmente é necessário criar um nat 1:1 para o servidor de email no firewall.

    Espero ter ajudado.

    Sds,

    Alex

  7. Wesley Wesley April 28, 2009

    Obrigado pelo toque Alexandro…

    realmente o problema era mesmo o reverso, que por sinal começou a funcionar hj graças ao péssimo serviço da BrasilTelecom!

    agora eu consigo mandar email p/ o gmail!
    soh q para o yahoo os email’s demoram a chegar e quando chegam ele vai na pasta spam!

    verifiquei se o meu ip esta em alguma blacklist, q não é o caso!

    oq mais pode estar acontecendo p/ o yahoo classificar meus email’s como spam?

    o servidor de email não esta atraz de um nat!

    obrigado desde ja!

  8. Vinicius Vinicius June 16, 2009

    Tem como colocar o anti spam rodando em uma maquina diferente do servidor que roda o qmail? como que dá pra fazer?

    obrigado.

  9. WesleyE WesleyE June 19, 2009

    Primeiramente parabenizo pelo seu beu trabalho, gostaria de saber o que pode estar causando este erro ao tentar executar o comando qmailctl cdb:
    /usr/bin/qmailctl: line 102: tcprules: command not found
    chmod: impossível acessar `/etc/tcp.smtp.cdb’: Arquivo ou diretório não encontrado
    Reloaded /etc/tcp.smtp.
    Rodei todos os scripts até chegar ao erro e parar por aqui, OBRIGADO!

  10. Sobrinho Sobrinho June 19, 2009

    Primeiramente parabenizo pelo seu belo trabalho, gostaria de saber o que pode estar causando este erro ao tentar executar o comando qmailctl cdb:
    /usr/bin/qmailctl: line 102: tcprules: command not found
    chmod: impossível acessar `/etc/tcp.smtp.cdb’: Arquivo ou diretório não encontrado
    Reloaded /etc/tcp.smtp.
    Rodei todos os scripts até chegar ao erro e parar por aqui, OBRIGADO!

  11. penguim penguim June 20, 2009

    Olá Wesley,

    Pelo que estou vendo, me parece que o Qmail não foi compilado com sucesso por isso estão faltando estes arquivos. Repita todo o processo prestando atenção nas mensagens.

    Sds,

    Alexandro

  12. Luiz Adolfo Luiz Adolfo November 9, 2009

    Olá,

    Na minha empresa tem um servidor FreeBSD rodando qmail, vpopmail…

    Quero migrar este servidor para Debian Lenny, alguém tem idéia como migro as contas (que são muitas neste caso) e os e-mails pro novo servidor?

    Valeu, Obrigado
    Luiz Adolfo
    Cel.: (41) 8439-6632
    Tel.: (41) 3329-1242

  13. Thibs Thibs August 9, 2010

    An updated guide (with newer software version) designed especially for Debian Lenny exists on http://qmailrocks.thibs.com

  14. Mário Jorge Mário Jorge February 14, 2011

    Caro Alexandro,
    Estou tentando instalar o Qmail através desse artigo, mas o link cropalato para baixar o pacote está quebrado, havia possibilidade de ser enviado por e-mail?

    Desde já agradeço sua atenção.

    Mário

Comments are closed.