Tutoriais/sendmail-qmail-postfix/qmail-vpomail-mysql-qmailadmin-qmailscanner
De UnderLinux Wiki
Qmail + vpopmail + mysql + QmailAdmin + QmailScanner
Tabela de conteúdo |
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. erirb@xtms.com.br
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:
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 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 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: <pre> #!/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 http://www.lifewithqmail.org/qmailctl-script-dt70 (oficial) ou http://www.linuxman.pro.br/qmail/qmailctl (linuxman).
cd /var/qmail/bin wget http://www.linuxman.pro.br/qmail/qmailctl chmod +x qmailctl
Referências
- http://www.lifewithqmail.org/lwq.html Life With Qmail
- http://www.qmail.org Qmail.org
- http://cr.yp.to Página do autor do qmail
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 (em NEGRITO):
- --enable-sqllibdir=LIBMYSQL --enable-passwd=y
- --enable-sqlincdir=INCLUDEMYSQL
./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
- http://www.inter7.com/vpopmail/ Inter7>
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 http://search.cpan.org/search?module=Time::HiRes Time::HiRes
- Perl module http://search.cpan.org/search?module=DB_File DB_File
- Perl module http://search.cpan.org/search?module=Sys::Syslog 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
http://qmail-scanner.sourceforge.net QmailScanner
Epílogo
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!
Créditos
Tutorial no underlinux: http://www.underlinux.com.br/content/view/4415/70/
Este tutorial foi desenvolvido por Eri Ramos Bastos e editado no wiki por Duca.
--Duca 17:52, 12 Janeiro 2006 (BRDT)


