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.0qmailctl cdb
echo postmaster > /var/qmail/alias/.qmail-root
echo postmaster > /var/qmail/alias/.qmail-postmaster
echo postmaster > /var/qmail/alias/.qmail-mailer-daemonln -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 [email protected] 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 : SMTPIMAP Settings
————–
4. IMAP Server : localhost
5. IMAP Port : 143
6. Authentication type : login
7. Secure IMAP (TLS) : false
8. Server software : other
9. Delimiter : detectSMTP 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 [email protected] 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 [email protected]|[email protected]|*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.
Praticamente uma trilogia! hehhehe
=P
vlw!
A…MI…GÃOOO!!!!, você estava super inspirado para fazer este texto beeeemm simplificado. hahaha! 😛
Ate mais amigão!
[…] por Alexandro Silva (penguimΘubuntu·com) – referência […]
Alex realmente você estava inspirado.
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#
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
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
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!
[…] […]
Tem como colocar o anti spam rodando em uma maquina diferente do servidor que roda o qmail? como que dá pra fazer?
obrigado.
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!
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!
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
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
An updated guide (with newer software version) designed especially for Debian Lenny exists on http://qmailrocks.thibs.com
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
galera o link esta quebrado. http://www.cropalato.com/alexos/qmailrockzdebian.tar.bz2
alguém tem o pacote completo