Tema LinuxBSD Ver. 0.2 lnx
 http://www.linuxbsd.com.br 

  


  

  

Servidor de E-mail QMAIL com SMTPD Autenticado

Enviado por DarkWarrior em Qua, 2007-01-17 14:24.

Autor: Slackdi
Data: 11/2004

1.1 Fazendo o download do netqmail
% mkdir /usr/local/src/qmail
% cd /usr/local/src/qmail
% wget http://www.qmail.org/netqmail-1.05.tar.gz
% tar -xvzf netqmail-1.05.tar.gz
1.2 - Instalando UCSPI-TCP
% cd /usr/local/src/qmail
% wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
% tar -xvzf ucspi-tcp-0.88.tar.gz
% cd ucspi-tcp-0.88/
* Aplicando patch
% patch /var/qmail/alias/.qmail-root
% echo > /var/qmail/alias/.qmail-postmaster
% echo > /var/qmail/alias/.qmail-mailer-daemon
% chmod 644 /var/qmail/alias/.qmail-*
Criando o diretorio Maildir para o usuario correio
% su correio
% cd /var/qmail/bin/
% ./maildirmake /home/correio/Maildir
% exit
% chmod 700 /home/correio/Maildir/
Número maximo de mensagens entrando no servidor simultaneamente:
% echo 255 > /var/qmail/control/concurrencyremote
% chmod 644 /var/qmail/control/concurrencyremote
% echo 30 > /var/qmail/control/concurrencyincoming
% chmod 644 /var/qmail/control/concurrencyincoming
Redes IP dos clientes da slackdi.homelinux.com, substitua pela sua rede:
% cat > /etc/tcp.smtp /var/qmail/control/defaultdelivery
Scripts de inicialização
Crie e edite o arquivo "/var/qmail/rc" preenchendo-o com o seguinte conteudo:
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH"
qmail-start "`cat /var/qmail/control/defaultdelivery`"
Setando a permissão para "/var/qmail/rc"
% chmod 755 /var/qmail/rc
Crie e edite o arquivo "/var/qmail/supervise/qmail-send/run" preenchendo-o com o seguinte conteudo:
#!/bin/sh
exec /var/qmail/rc
Crie e edite o arquivo "/var/qmail/supervise/qmail-send/log/run" preenchendo-o com o seguinte conteudo:
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000
n20 /var/log/qmail/qmail-send
2>&1
Setando as permissões:
% chmod 755 /var/qmail/supervise/qmail-send/run
% chmod 755 /var/qmail/supervise/qmail-send/log/run
Crie e edite o arquivo "/var/qmail/supervise/qmail-smtpd/run" preenchendo-o com o seguinte conteudo:
#!/bin/sh
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
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 15000000 /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
Crie e edite o arquivo "/var/qmail/supervise/qmail-smtpd/log/run" preenchendo-o com o seguinte conteudo:
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000 n20 /var/log/qmail/qmail-smtpd 2>&1
Setando as permissões
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
Crie e edite o arquivo "/var/qmail/supervise/qmail-pop3d/run" preenchendo-o com o seguinte conteudo:
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec tcpserver -H -R -v -c100 0 110 qmail-popup mail.slackdi.homelinux.com
/bin/checkpasswordqmail-pop3d Maildir 2>&1
Crie e edite o arquivo "/var/qmail/supervise/qmail-pop3d/log/run" preenchendo-o com o seguinte conteudo:
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec setuidgid qmaill multilog t s100000
n20 /var/log/qmail/qmail-pop3d 2>&1
Setando as pemissões:
% chmod 751 /var/qmail/supervise/qmail-pop3d/run
% chmod 751 /var/qmail/supervise/qmail-pop3d/log/run
Colocar os scripts para serem monitorados pelo daemontools:
% ln -s /var/qmail/supervise/* /service
Bom, precisamos de um comando para parar e iniciar o qmail, não será descrito aqui pois já está prontinho no endereço:
* http://www.lifewithqmail.org/qmailctl-script-dt70
Execute:
% cd /var/qmail
% wget http://www.lifewithqmail.org/qmailctl-script-dt70
% mv qmailctl-script-dt70 /var/qmail/bin/qmailctl
% ln -s /var/qmail/bin/qmailctl /usr/bin
% chmod +x /var/qmail/bin/qmailctl
Construa a base de dados para que o SMTP funcione:
% qmailctl stop
% qmailctl cdb
% qmailctl start
Pessoal muito cuidado com os scripts pois qualquer erro pode não funcionar, se alguem quiser eu passo por e-mail.
Agora nós estamos com o Qmail + pop3 autenticado e smtp aberto. Você já pode configurar uma conta no seu cliente de e-mail para fazer o teste.
1.7 - Configurando o Mysql
Usaremos o Vpopmail para hospedar nosso dommio que realmente vamos usar, ele seré responsavel pela nossa autenticação no pop e smtp. Sendo assim não será necessario ter os usuarios cadastrados no sistema, para isso vamos preparar o MySQL para usar com o Vpopmail.
% mysqladmin -u root -p create vpopmail
* Será¡ pedido a senha do mysql
% mysql -u root -p mysql
* Coloque a senha e digite os comandos abaixo no prompt do MySQL
mysql> GRANT ALL PRIVILEGES ON vpopmail.* TO vpopmail@NOMEDAMAQUINA
-> IDENTIFIED BY 'SUASENHA' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> q
Tente logar
% mysql -u vpopmail -h NOMEDAMAQUINA -p
* Se você conseguiu logar está tudo certo, caso não tenha conseguido revise o procedimento acima
1.8 - Configurando o Vpopmail
% cd /usr/local/src/qmail
% wget http://www.qmailrocks.org/downloads/vpopmail-5.4.6.tar.gz
% tar -xvzf vpopmail-5.4.6.tar.gz
% cd vpopmail-5.4.6
% ./configure --enable-passwd=y --enable-auth-logging=y --enable-logging=y --enable-auth-module=mysql --enable-roaming-users=y --enable-large-site=n --disable-clear-passwd --enable-qmail-ext=y
% make
% make install-strip
Vamos editar a o arquivo vpopmail.mysql que se localiza em /home/vpopmail/etc/. Sua sintaxe é a seguinte:
host|0|user|password|database
No meu caso vai ficar assim
localhost|0|vpopmail|MINHASENHA|vpopmail
Adicioando o dominio ao vpopmail
% /home/vpopmail/bin/vadddomain dominio
* Coloque a senha que você cadastrou no MySQL e não se esqueça de colocar o dominio no seu /etc/hosts ou no DNS
Adicioando usuarios ao vopmail
% /home/vpopmail/bin/vadduser diego@dominio
* Senha para o usuario diego
Agora toda e qualquer autenticação feita deve ser usuario@dominio.
Agora devemos fazer algumas alterações nos scripts de inicialização, primeiro para o serviço.
% qmailctl stop
% svc -d /service/qmail-smtpd /service/qmail-smtpd/log/
% svc -d /service/qmail-pop3d /service/qmail-pop3d/log/
Se quiser fazer um backup dos script atuais essa é hora, não vou fazer aqui.
Modifique o arquivo "/var/qmail/supervise/qmail-pop3d/run", para:
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin
export PATH
exec tcpserver -H -R -v -c100 0 110 qmail-popup mail.seudominio.com.br
/home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1
Modifique o arquivo "/var/qmail/supervise/qmail-pop3d/run", para:
#!/bin/sh
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
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 15000000 /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
MAIL.MEUDOMINIO.COM.BR
/home/vpopmail/bin/vchkpw /usr/bin/true 2>&1
Agora vamos levantar os serviços novamente
% qmailctl start
% svc -u /service/qmail-smtpd /service/qmail-smtpd/log/
% svc -u /service/qmail-pop3d /service/qmail-pop3d/log/
Verifique se as portas 25 e 110 estão abertas
% nmap localhost
Caso não esteja procure o erro com esse comando
% ps ax | grep error
Bom agora é só³ testar. E relembrando na configuração do seu cliente de e-mail coloque na conta usuario@dominio caso contásrio não funcionará.
Aqui já está funcionando

»