Instalando o Qmail no Debian Lenny


3 de julho de 2009 | Autor: antonini

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.

Por Alexandro Silva

Imprimir
[Voltar]