você está aqui: Home  → Arquivo de Mensagens Workshop Gratuito: Os Segredos do Shell, com o Prof. Julio Neves

Instalando o Qmail no Debian Lenny

Colaboração: Alexandro Silva

Data de Publicação: 14 de Abril de 2009

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

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 no final desta página

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:

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. < strong>( Logado com sucesso!!! )</strong>
< a logout </strong>
* 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 < a 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 </strong>
"LogTime" - Descomente
"LogSyslog" - Descomente
"PidFile" - Descomente e mude para < /var/run/clamav/clamd.pid</strong>
"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</strong>

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

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



Veja a relação completa dos artigos de Alexandro Silva