Introdução
O qmail é um dos mais seguros, rápidos e confiáveis servidores de e-mail disponíveis hoje no mercado. Infelizmente, entre suas características, não está a facilidade de instalação. Vamos tentar aqui amenizar o sofrimento que é instalar um server qmail com um mini-howto em português bem claro e objetivo.
Sobre o autor
Eri Ramos Bastos trabalha com Linux desde 1998, passando por diversas distribuições e fases diferentes do pinguim. Atualmente trabalha como consultor em soluções Linux / Unix e está disponível para ajudar a sua empresa a implantar Linux em todos os setores. Consultoria
Requisitos
Um sistema Unix, preferencialmente ligado ao projeto GNU de alguma forma. Já implementei o Qmail em Linux (Conectiva, Debian e SuSE), FreeBSD e OpenBSD com sucesso e poucas modificações nas sintaxes dos comandos. Mostrarei a sintaxe dos comandos para o Linux, mas se você usa outro sistema, provavelmente conhece a sintaxe dele e poderá adaptar os comandos facilmente. Em algumas etapas a instalação pode parecer muito confusa.... E realmente é. Tenha fé e vá em frente.
Instalando o Qmail
O Qmail tem uma licença um tanto quanto restritiva, o que impede que ele seja distribuído em formato binnário (rpm, por exemplo). Por isso precisamos baixar o código fonte e compilá-lo. Você precisará dos seguintes arquivos inicialmente:
qmail, ftp://cr.yp.to/software/qmail-1.03.tar.gz
ucspi-tcp, ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
daemontools, ftp://cr.yp.to/daemontools/daemontools-0.76.tar.gz
Procedimento
Todos os passos abaixo deverão ser executados como root
Caso você tenha o wget instalado na sua máquina:
cd /usr/src/
mkdir qmail; cd qmail
wget ftp://cr.yp.to/software/qmail-1.03.tar.gz
wget ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget ftp://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget http://www.qmail.org/qmailqueue-patch
Antes de iniciar a instalação, é preciso criar alguns grupos e usuários na máquina:
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias -s /BIN/FALSE
useradd -g nofiles -d /var/qmail qmaild -s /BIN/FALSE
useradd -g nofiles -d /var/qmail qmaill -s /BIN/FALSE
useradd -g nofiles -d /var/qmail qmailp -s /BIN/FALSE
groupadd qmail
useradd -g qmail -d /var/qmail qmailq -s /BIN/FALSE
useradd -g qmail -d /var/qmail qmailr -s /BIN/FALSE
useradd -g qmail -d /var/qmail qmails -s /BIN/FALSE
groupadd vchkpw
useradd -g vchkpw -d /var/qmail/vpopmail vpopmail
Vamos agora descompactar os sources e iniciar a instalação:
tar zxvf qmail-1.03.tar.gz
cd qmail-1.03
patch -p1 < ../qmailqueue-patch
make setup CHECK
./config-fast nome.DO.seu.servidor
Pronto! Qmail instalado! Mas vamos com calma! Ainda não dá para rodar dessa forma...
Instalando o
ucspi-tcp
cd /usr/src/qmail/
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup CHECK
Instalando o
daemontools
cd /usr/src/qmail
tar zxvf daemontools-0.76.tar.gz
mv admin /
cd /
cd admin/daemontools-0.76
sh package/install
Modificando arquivos e permissões
Para o perfeito funcionamento junto ao vpopmail+mysql que estamos propondo, precisamos utilizar a estrutura de Maildir, ao invés da Mailbox (padrão)
/var/qmail/rc
cd /var/qmail
cp boot/home rc
Edite o arquivo rc e troque a palavra Mailbox por Maildir (IMPORTANTE: o "M" é maiúsculo) Dê permissão de execução ao arquivo rc
chmod +x rc
Scripts de inicialização e arquivos de LOG
É importante que todos os arquivos e diretórios sejam criados com todo cuidado, ou nada irá funcionar.
mkdir -p /var/qmail/supervise/qmail-send/LOG
mkdir -p /var/qmail/supervise/qmail-smtpd/LOG
Arquivo
/var/qmail/supervise/qmail-send/run com conteúdo:
#!/bin/sh
exec /var/qmail/rc
Arquivo
/var/qmail/supervise/qmail-send/log/run com conteúdo:
#!/bin/sh
exec /usr/local/BIN/setuidgid qmaill /usr/local/BIN/multilog t /var/LOG/qmail
Arquivo
/var/qmail/supervise/qmail-smtpd/run com conteúdo:
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; THEN
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; THEN
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/BIN/softlimit -m 2000000
/usr/local/BIN/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/BIN/qmail-smtpd 2>&1
Criando configuração de conexões concorrentes. Altere de acordo com suas necessidades.
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
Arquivo
/var/qmail/supervise/qmail-smtpd/log/run com conteúdo:
#!/bin/sh
exec /usr/local/BIN/setuidgid qmaill /usr/local/BIN/multilog t /var/LOG/qmail/smtpd
Dando as permissões corretas:
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/LOG/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/LOG/run
Criando diretórios de LOG:
mkdir -p /var/LOG/qmail/smtpd
chown qmaill /var/LOG/qmail /var/LOG/qmail/smtpd
LN -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
Liberando o relay definitivo para localhost (RECOMENDADO):
echo '127.:allow,RELAYCLIENT=""' >> /etc/tcp.smtp
O Script qmailctl
Existem muitas operações que podem ser feitas com o qmail. Para facilitar a nossa vida, o site Life With Qmail nos disponibiliza um script muito útil, chamado qmailctl, o qual pode ser baixado [35]aqui (oficial) ou [36]aqui (linuxman).
cd /var/qmail/BIN
wget http://www.linuxman.pro.br/qmail/qmailctl
chmod +x qmailctl
LN -s /var/qmail/BIN/qmailctl /usr/BIN
Referências
Life With Qmail [http://www.lifewithqmail.org/lwq.html] Qmail.org [http://www.qmail.org] Página do autor do qmail [http://cr.yp.to]
Instalando o vpopmail
Como pretendemos instalar o vpopmail com suporte a banco de dados mysql, vou assumir que você já tem um server sql rodando e configurado, não sendo abordada aqui a instalação do mesmo.
Criando usuário no mysql
mysql> GRANT all on vpopmail.* to vmail@nome.DO.seu.server identified BY 'sua-senha';
mysql> flush PRIVILEGES
cd /usr/src/qmail
wget http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz
tar zxvf vpopmail-5.2.1.tar.gz
cd vpopmail-5.2.1
mkdir -p /var/qmail/vpopmail/etc
Edite o arquivo
vmysql.h substituindo:
#define MYSQL_UPDATE_SERVER "localhost"
#define MYSQL_UPDATE_USER "root"
#define MYSQL_UPDATE_PASSWD "secret"
#define MYSQL_READ_SERVER "localhost"
#define MYSQL_READ_USER "root"
#define MYSQL_READ_PASSWD "secret"
por:
#define MYSQL_UPDATE_SERVER "seu-server-mysql"
#define MYSQL_UPDATE_USER "vmail"
#define MYSQL_UPDATE_PASSWD "sua-senha"
#define MYSQL_READ_SERVER "seu-server-mysql"
#define MYSQL_READ_USER "vmail"
#define MYSQL_READ_PASSWD "sua-senha"
Configurando o
Makefile
Nesse passo é muito importante você conhecer o seu sistema, visto que algumas libs e includes precisarão ser referenciadas:
./configure --enable-relay-clear-minutes=180
--enable-vpopuser=vpopmail --enable-vpopgroup=vchkpw
--enable-tcpserver-file=/etc/tcp.smtp
--enable-sqllibdir=LIBMYSQL --enable-passwd=y
--enable-qmaildir=/var/qmail
--enable-admin-email=admin@seu.dominio
--enable-tcprules-prog=`which tcprules`
--enable-auth-logging=y --enable-logging=y
--enable-sqwebmail-pass=y --enable-default-domain=seu.dominio
--enable-mysql=y --enable-roaming-users=y
--enable-deliver-filter=y --enable-defaultquota=10485760
--enable-large-site=n --enable-clear-passwd=n
--enable-sqlincdir=INCLUDEMYSQL
Compilando:
make
make install-strip
Arquivo de inicialização do vpopmail
cd /var/qmail
Arquivo pop com o conteúdo:
/usr/local/BIN/tcpserver 0 110 \
/var/qmail/BIN/qmail-popup nome.DO.seu.server
/var/qmail/vpopmail/BIN/vchkpw \
/var/qmail/BIN/qmail-pop3d Maildir >/dev/NULL &
Esse arquivo deve ser iniciado no seu run-level padrão. coloque-o na inicialização da forma que achar mais simples.
Referências
Inter7 DicasLinux
Qmailadmin
O qmailadmin é uma ferramenta de gerenciamento para os domínios virtuais do qmail. Muito útil e simples de utilizar depois de instalada.
Baixando os sources
cd /usr/src/qmail
wget http://www.inter7.com/qmailadmin/qmailadmin-1.0.2.tar.gz
Instalando
tar zxvf qmailadmin-1.0.2.tar.gz
cd qmailadmin-1.0.2
./configure --enable-htmldir=/SEU/DIR/DE/HTML
--enable-cgibindir=/SEU/DIR/DE/CGI
make
make install
QmailScanner
Com a quantidade de virus e worms que circulam pela web esses dias, um sistema de anti-virus é essencial. Existem diversos meios de se integrar o Qmail com os anti-virus, mas o mais usado é sem dúvida o QmailScanner.
Instalando o QmailScanner
Os pré-requisitos são:
Perl 5.005_03+
Perl module Time::HiRes [http://search.cpan.org/search?module=Time::HiRes]
Perl module DB_File [http://search.cpan.org/search?module=DB_File]
Perl module Sys::Syslog [http://search.cpan.org/search?module=Sys::Syslog]
Algum anti-virus
Mas não vamos falar aqui como instalar esses módulos, recomendo que procure em alguma documentação mais específica.
cd /usr/src/qmail
wget http://umn.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-1.15.tgz
tar zxvf qmail-scanner-1.15.tgz
cd qmail-scanner-1.15
./configure --help # Nesse momento você irá escolher as opções que se enquadram no seu sistema
./configure --SUAS-OPCOES
./configure --SUAS-OPCOES --install
Testando a instalação
Esse é um passo importante. Caso não funcione, reveja as opções que você colocou com o ./configure
sh /contrib/test_installation.sh
Configurando o Qmail para utilizar o QmailScanner
Edite o arquivo /service/qmail-smtpd/run e adicione a seguinte linha logo após "#!/bin/sh":
export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
E modifique a linha
"exec /usr/local/bin/softlimit -m 2000000 "
por
"exec /usr/local/bin/softlimit -m 8000000 "
Esse valor foi suficiente para mim, mas observe o seu caso.
Referências
QmailScanner
Finalizando
Algumas considerações finais:
A instalação descrita nesse tutorial é a mais simples possível, sendo que existe uma farta documentação sobre qmail na internet. Nem sempre as coisas são muito claras, por isso tentei ajudar com mais esse tutorial.
O Daemontools deve ser iniciado no boot, por isso depois de tudo instalado é necessáro dar um reboot na máquina
Se receber a mensagem: "451 qq temporary problem (#4.3.0)" tente aumentar o softlimit
Boa sorte!