Administre Emails com Qmail

Autor: Pablo Martins F. Costa 
Data: 22/04/2002
http://www.cbsp.com.br/pablo/conectiva-toaster/qmail-admin.txt

Você pode distribuir, utilizar e alterar livremente estas rotinas desde
que mantenha este comentário que identifica o autor original.

Conectiva Toaster versao 0.5: Copyright 2000 Pablo Martins F. Costa 

You should have received a copy of the GNU Public
License along with this package; if not, write to the
Free Software Foundation, Inc., 59 Temple Place – Suite 330,
Boston, MA 02111-1307, USA.

*/ 

Este documento tem o objetivo de familiarizar administradores
de rede com o sistema de email formado pela solucao:

qmail, vpopmail, courier-qmapd, qmail-scanner e sqwebmail

Descricao:

qmail:
O qmail é um dos mais poderosos servidores de emails existentes
hoje no mercado e tambem um dos mais seguros.

vpopmail:
E’ um excelente sistema que funciona integrado ao qmail para
fornecer e facilitar a admintracao de dominios virtuais. Com ele nao
ha necessidade de se utilizar contas reais no sistema para os usuarios.
Possui otimas ferramentas para adminstracao, tanto via console quanto
via web.

courier-imapd:
É um servidor de imap que alem de muito bom é compativel com o formado
de armazenar emails que o qmail utiliza. Ele é importante na utilizacao
de webmails como o IMP que se utilizam de imap para acessar as mensagens.

qmail-scanner:
Um poderoso sistema que filtra as mensagens a procura de virus
e caso encontre intercepta a mensagem e impede que ela chegue
ao destinatario.

maildrop:
Excelente filtro de mensagens

Agora vou discutir cada um destes programas explorando os aspectos
mais importantes na adminstracao do sistema.

sqwebmail: Leitor de emails via web

*** qmail

O diretorio base do qmail é /var/qmail 

Exemplos: 

/var/qmail/control (arquivos de configuracao)
/var/qmail/bin (binarios do qmail)
/var/qmail/queue (fila de emails)
/var/qmail/alias (apelidos de email)
/var/qmail/supervise (scritps de inicializacao)

* Dentro de /var/qmail/control encontramos varios arquivos importantes
os quais podemos modificar suas configuracoes sem precisar dar restart
no sistema de email.

concurrencyremote

– Serve para definir quantos emails simultaneos o sistema aceita
enviar. Geralmente seu conteudo e’ 255. Voce pode aumentar ou
dimuir este valor, mas sempre levando em conta a velocidade da
sua rede e a capacidade da maquina de lidar com muitas conexoes
simultaneas 

databytes

– Serve para se definir o tamanho maximo que uma mensagem pode ter
por exemplo: 50000000 (seria algo como 50 Megabytes)
deixe vazio ou apague o arquivo se nao quiser limitar

defaultdomain

– Define o dominio padrao do sistema. EX. exemplo.com.br

me

– Este arquivo contem o nome de seu servidor de email

rcpthosts

– Contem os nomes dos dominios para os quais ele aceita receber emails.
as ferramentas de adminstracao editam este arquivo automaticamente

tarpitcount e tarpitdelay

– Estes dois arquivos funcionam em conjunto. Eles servem para evitar
que os usuarios enviem spam ou emails com milhares de destinatarios.
tarpitcount define o maximo de destinatarios que uma mensagem pode 
conter, e tarpitdelay diz o tempo que o servidor de qmail demora
para aceitar cada novo destinatario depois que ultrapassou o limite
de destinatarios especificados em tarpitcount. 
exemplo: se tarpitcount=50 e tarpitdelay=30, o sistema demorara 
30 segundos para aceitar cada novo destinatario excedente
desestimulando a pessoa que esta enviando de continuar.

virtualdomains

– Define os dominios virtuais, voce nao precisara editar este arquivo,
as ferramentas de administracao fazem isto automaticamente.

* Iniciar, parar os servicos.

Os scripts de inicializacao estao em /var/qmail/supervise,
mas existe um link para este diretorio em /service

Temos os scripts:

/service/smtp/run (Inicializa o servidor de smtp)
/service/send/run (Inicializa o servico de envio)
/service/pop3/run (Inicializa o servico de pop3)

O adminstrador nao deve se preocupar com os scripts acima,
tudo que ele precisa saber eh que para iniciar/parar
o sistema usa-se:

/etc/init.d/qmail start (inicia todos os servicos de /service)
/etc/init.d/qmail stop (para todos os servicos de /service)

Os programas responsaveis pelo start ou stop dos servicos se chamam
daemontools e ucspi-tcp. O daemontools é um vigilante do servico,
se algum dos servicos parar de funcionar o daemontools liga ele
novamente, e o ucspi-tcp é um substituto do inetd, ou seja ele que
eh responsavel pela execucao dos servidores de smtp e pop3.

* qmailctl {restart|doqueue|reload|stat|pause|cont|cdb|queue|help}

Para adminstrar outras funcoes do qmail temos o comando qmailctl.

Descricao das opcoes

restart : Reinicia os servicos 
reload : Le novamente os arquivos de configuracao
pause : Paralisa o envio da fila de emails
cont : Continua a enviar a fila de emails
doqueue : Manda ele percorrer a fila de email novamente
stat : Verifica o status dos servicos

queue : Serve para visualizar a fila de emails a serem enviados

exemplo: qmailctl queue

15 Mar 2002 18:55:14 GMT #286970 2473 
remote test@dominio.com.br 

A primeira linha informa quem esta enviando a mensagem, e a segunda
qual o destinatario. O codigo #286970 eh a identificacao da mensagem
na fila de emails.

se executar o comando:

find /var/qmail/queue -name “285816” -print 

voce encontrara algo parecido com isto:

/var/qmail/queue/bounce/285816
/var/qmail/queue/mess/18/285816
/var/qmail/queue/info/18/285816
/var/qmail/queue/remote/18/285816 

E’ que o qmail organiza sua fila de emails numa estrutura de diretorios,
mas nao vamos aqui explicar exatamente como isto funciona, apenas vou dizer
que a mensagem fica no diretorio /var/qmail/queue/mess que no exemplo é:
/var/qmail/queue/mess/18/285816 
Uma dica interessante é a seguinte. Imagine que um usuario tenha enviado um email
com grandes anexos para varios destinatarios, e isto esteja deixando seu servidor
muito lento. Voce pode remover este email da fila usando o comando qmailctl queue
para identificar o codigo da mensagem (no nosso exemplo 285816). dai em seguida 
executar o comando:

find /var/qmail/queue -name “285816” -exec -rm -f {} ;

com isto este email saira da fila e seu sistema se livrara do pesado fardo 🙂

cdb : Serve para atualizar a lista de ips para o qual este servidor aceita
enviar emails (Isto se chama fazer relay no jargao)

O arquivo que vc especifica quem pode fazer relay fica em
/usr/local/vpopmail/etc/tcp.smtp 

exemplo de seu conteudo:

127.0.0.1:allow,RELAYCLIENT=”” 
:allow

com isto esta maquina so aceita fazer relay para si mesma. Imagine que
na sua intranet os micros tenham ip na faixa 172.16.1.*
voce entao deixaria o arquivo assim:

127.0.0.1:allow,RELAYCLIENT=””
172.16.1.:allow,RELAYCLIENT=”” 
:allow

com isto seu sistema aceitara enviar emails provenientes
de ips de sua intranet.
Lembre-se de sempre executar o comando qmailctl cdb quando fizer
qualquer alteracao no arquivo /usr/local/vpopmail/etc/tcp.smtp

E quanto as pessoas que se conectam a internet via linha discada
e com ip dinamico, como abrir o relay para elas?
Para isto o sistema de email possui uma caracteristica que se chama
relay after pop, ou seja, qualquer usuario que leia seu email via
pop3 tera automaticamente o relay aberto para seu ip pelo periodo
de uma hora. No crontab da maquina (Executor de tarefas agendadas)

tem a seguinte configuracao:

9-59,10 * * * * /usr/local/vpopmail/bin/clearopensmtp 2>&1 > /dev/null 

Isto faz com que a lista de ips que tem direito a relay seja limpa 
de minuto em minuto.

Voce pode ver a lista de arquivos temporarios que este sistema gera
executando o comando: ls /usr/local/vpopmail/etc/tcp.smtp*

*** vpopmail

O vpopmail extende muito as capacidades do qmail, provendo
dominios virtuias e diversas maneiras de autenticacao, alem
de possuir ferramentas de admintracao muito boas.

Os programas do vpopmail estao em:

/usr/local/vpopmail

Os dois diretorios mais importantes sao:

/usr/local/vpopmail/bin (onde ficam os binarios)
/usr/local/vpopmail/domains (onde ficam as contas dos usuarios)

Os comandos do vpopmail que discutiemos aqui sao:

vadddomain
vadduser
vdeluser
vpasswd
vsetuserquota
vuserinfo 

Neste tutorial vamos usar de exemplo a criacao de um dominio de teste.

Lembre-se: antes de criar um dominio, tenha previamente um dns com
o mx configurado para que ele possa receber emails.

Admitindo-se que estamos no diretorio /usr/local/vpopmail/bin
para criar um dominio utilizamos o comando:

./vadddomain teste.com.br senha

Voce nao precisa saber, mas para usa informacao este
comando automaticamente modifica os seguintes arquivos:

/var/qmail/control/locals, rcpthosts, virtualdomains
/var/qmail/control/virtualdomains
/var/qmail/users/assign, cdb

e tambem cria os diretorios

/usr/local/vpopmail/domains/teste.com.br
/usr/local/vpopmail/domains/teste.com.br/postmaster/Maildir

O arquivo de senhas pode ser encontrado em:
/usr/local/vpopmail/domains/teste.com.br/vpasswd

Sempre que um dominio novo eh criado, juntamente com ele é criado
o usuario padrao chamado postmaster que posteriormente servira
para administrar o sistema via web com a ferramenta qmailadmin.
O usuario postmaster terá a senha que vc especificou na criacao do dominio.

Agora que ja criamos o dominio vamos a proxima etapa que é criar um usuario

./vadduser pablo@teste.com.br senha

com isto o usuario pablo sera criado, e seu diretorio home sera:
/usr/local/vpopmail/domains/teste.com.br/pablo

No aquivo de senhas /usr/local/vpopmail/domains/teste.com.br/vpasswd 
tera uma entrada do tipo:

pablo:$1$7nqTyLOr$iZKRcKCBSQXta1t1mnoWs/:1:0:Pablo Costa:/usr/local/vpopmail/domains/teste.com.br/pablo:50000000:xxxx 

Que representa:
username:senha criptografada:uid:gid:nome:diretorio home:quota:senha nao criptografada

com o comando vuserinfo podemos obter estas informacoes sem olhar no arquivo de senha:

./vuserinfo pablo@teste.com.br
name: pablo
passwd: $1$7nqTyLOr$iZKRcKCBSQXta1t1mnoWs/ 
clear passwd: 123456 
uid: 1
gid: 0
dir: /usr/local/vpopmail/domains/teste.com.br/pablo
quota: 50000000

Uma coisa interessante sao as quotas, ou seja, o espaco em disco
que um usuario pode utilizar.

como referencia 1000000 equivale aproximandamente a um megabytes

Por exemplo podemos por a quota do usuario em 5Mbytes

./vsetuserquota pablo@teste.com.br 5000000

para desabilitar as quotas:
./vsetuserquota pablo@teste.com.br NOQUOTA 

PS: O sistema esta de padrao tem uma quota de 50Mbytes

Para alterar a senha de um usuario
./vpasswd pablo@teste.com.br nova_senha

Para remover um usuario:
./vdeluser pablo@teste.com.br

* Aliases (Apelidos)

Voce pode criar contas que sao apelidos para outras,
para isto basta criar arquivos com o nome .qmail-apelido
na raiz do dominio. Dentro deste arquivo deve ser colocado
uma email por linha.

Por exemplo:

Criamos o arquivo:
/usr/local/vpopmail/domains/teste.com.br/.qmail-webmaster

com o conteudo:

fulano@teste.com.br
ciclano@teste.com.br

Quando o sistema receber algum email enderecado para
webmaster@teste.com.br ele enviara para a lista de
enderecos definida acima.

Tome cuidado para nao criar apelidos, quando uma conta ja
existe. Por exemplo se existe o usuario fulano, voce nao
podera criar o alias .qmail-fulano que nao vai funcionar.

* Maildir

Aqui explicaremos como como e’ a estrutura Maildir
que e’ onde ficam armazenadas as mensagens dos usuarios.

O usuario pablo por exemplo quando recebe uma mensagem nova
ela vai parar em:

/usr/local/vpopmail/domains/teste.com.br/pablo/Maildir/new

Se o usuario pablo ler a mensagem sem remove-la do servidor
ela vai para:

/usr/local/vpopmail/domains/teste.com.br/pablo/Maildir/cur

E para manipulacao de temporarios existe o diretorio:
/usr/local/vpopmail/domains/teste.com.br/pablo/Maildir/tmp

Quando vc cria uma pasta no webmail por exemplo com o nome “pasta”

ela vai parar em:

/usr/local/vpopmail/domains/teste.com.br/pablo/Maildir/.pasta
e dentro dela se repetem as estruturas new, cur e tmp

O formato maildir guarda cada mensagem separadamente, ao contrario
do formato inbox que tem um unico arquivo para todas as mensagens

*** qmailadmin

Acessando o endereco: http://mail.teste.com.br/cgi-bin/qmailadmin
vc vai ver a interface de administracao de usuarios do vpopmail
preencha o campos

Conta Principal : postmaster
Dominio : teste.com.br
Senha : senha

Como se trata de um sistema visual, nao vou explicar neste documento
como usar o qmailadmin, mas ele é bastante intuitivo e la voce podera
criar/remover/alterar contas, criar redirecionamentos e listas de email

*** Endereco de templates do qmailadmin:

/usr/local/share/qmailadmin/html/

Todas as paginas que terminam com .html sao templates

O arquivo /usr/local/share/qmailadmin/html/pt-BR
é a traducao do sistema.

*** vqadmin

O vqadmin eh uma ferramenta para o admistrador do sistema de email como
um todo, e o qmailadmin e’ um administrador restrito a um dominio.

Para acessa-lo visite: http://mail.teste.com.br/cgi-bin/vqadmin/vqadmin.cgi
ele pedira usuario e senha pré cadastrada pelo instalador
do sistema.

Como ele vc pode definir os padroes de cada dominio, como por exemplo
a quota padrao dos usuarios.

Por exemplo a partir da tela principal clique em “Mostrar Dominios”
e em seguida pressione o botao “Mostrar Dominios”.
Voce vera a lista dos dominios existentes.

Escolha um para administrar clicando em cima do nome dele.

as opcoes: 

Contas
Redirecionamento
Apelidos
Auto Resposta
Listas de distribuição 

Servem para voce definir o numero deste recurso que estara disponivel
no qmailadmin. Por exemplo se vc fixar contas em 100, no qmailadmin
nao sera possivel criar mais que 100 contas.

Outra opcao interessante eh mudar a quota de um usuario:
clique em “Mostrar Dominios” e em seguida pressione 
o botao “Mostrar Dominios” e a seguir no final da tela
clique em “Mostrar Usuarios”

Escolha o usuario clicando em cima de seu nome, defina quota e pressione
“Modificar conta de email”

Para trocar a senha do vqadmin que fica em:
Utilize o comando:

htpasswd /usr/local/vpopmail/etc/vqadmin.passwd postmaster

PS: A senha so vqadmin eh independente da senha do qmailadmin

*** Os templates do vqadmin estao em:

/var/www/cgi-bin/vqadmin/html
Todas as paginas que terminam com .html sao templates

O arquivo /var/www/cgi-bin/vqadmin/html/pt-BR
e’ a traducao do sistema.

*** Antivirus

Os emails que contiverem virus vao parar numa pasta
em formato maildir que fica em:

/var/spool/qmailscan/viruses/new

Aconselha-se apagar os arquivos da pasta acima de tempos em tempos
para evitar superlotacao do HD

Voce recebera no email postmaster@dominio.com.br as notificacoes dos
emails que continham virus.

Voce tambem pode ver o log dos virus encontrados em:
/var/spool/qmailscan/viruses.log 

* Script de atualizacao

Existe o script: /etc/cron.daily/update_mcafee
que e’ responsavel pela atualizacao diaria do antivirus
se voce quiser pode excuta-lo diretamente:
/etc/cron.daily/update_mcafee 

* Verificacao da versao
execute o comando: /usr/local/bin/uvscan –version

Exemplo de saida:

Virus Scan for Linux v4.16.0
Copyright (c) 1992-2001 Networks Associates Technology Inc. All rights reserved.
(408) 988-3832 LICENSED COPY – Nov 13 2001

Scan engine v4.1.60 for Linux.
Virus data file v4191 created Mar 14 2002
Scanning for 60089 viruses, trojans and variants. 

Veja a linha “Virus data file v4191 created Mar 14 2002″
ela diz qual foi a ultima atualizacao do antivirus.

* desligar o antivirus

Se o computador nao tiver muita memoria (O ideal eh 256M no minimo)
Vc pode desligar a varredura de virus ate solucionar o problema.

Edite o arquivo /service/smtp/run

Comente as linhas

QMAILQUEUE=”/var/qmail/bin/qmail-scanner-queue.pl”

Deixando-as assim:

#QMAILQUEUE=”/var/qmail/bin/qmail-scanner-queue.pl”

Comente tambem a linha linha:

#export QMAILQUEUE QMAILINJECT PATH 

Deixe somente assim:

export PATH 

A seguir execute:
qmailctl restart 

* Perlscanner

O qmail-scanner alem de funcionar como antivirus pode funcionar como
um filtro de email para banir certas extensoes que comumente sao virus
como .vbs .pif 

Atraves do sistema de filtros que existe no qmail-scanner podemos colocar certos filtros
no arquivo /var/spool/qmailscan/quarantine-attachments.txt 

no final deste arquivo vc pode especificar seus filtros como por exemplo:

email@dominio.com.br From: “Email Banido”

Ou seja sao 3 campos que devem ser separados por um espaco de Tab.

email From: “Descricao do filtro”

Mas va ao final deste arquivo para ver os filtros
implementados.

Voce vera as extensoes de arquivos que sao proibidas,
pelo fato de invariavelmente conterem virus.

O filtro segue o formato:

Extensao 0 Descricao

O zero signigica o tamanho maximo que o arquivo com determinada
extensao pode ter. Como colocamos zero ele nao permite a extensao.

Apos efetuar qualquer modificacao no filtro executar o comando:

/var/qmail/bin/qmail-scanner-queue.pl -g

Para ele refazer a base de filtros.

Maiores informacoes:
http://exe2bin.com/qmail-scanner/

* Badmailfrom

Muitos virus como NIMDA ou CODERED quando infectam um computador
costumam causar lentidao no servidor de email porque ficam se 
espalhando via email de minuto em minuto.

Isto provoca lentidao na rede e overload no servidor de email
que tem que analisar muitas mensagens com virus.

Para evitar que isto aconteca eu criei uma solucao bastante simples
atraves da utilizacao do arquivo de configuracao badmailfrom do qmail.

Quando colocamos um email no arquivo /var/qmail/control/badmailfrom
o qmail se recusa a receber emails deste REMETENTE antes mesmo de receber
o email, poupando a rede e o servidor de email.

O sistema funciona assim:

Por exemplo o usuario lammer@example.com esta com um virus em seu computador

No primeiro email que lammer enviar ocorrera a seguinte sequencia:

[lammer]—>[email]—>[servidor]—>[qmail-scanner]—>[badmailfrom]

Ou seja, quando o qmail-scanner encontra um virus num email ele coloca
o email do remetente no /var/qmail/control/badmailfrom, evitando que o
sistema receba os proximos emails deste REMETENTE.

O usuario lammer recebera um email informando que sua maquina esta contaminada.

Como nao vamos bloquear para sempre este usuario, colocamos um script que limpa
o badmailfrom de tempos em tempos de acordo com sua preferencia.

/root/bin/badmailfromclear.sh

no crontab tem a linha:

*/30 * * * * /root/bin/badmailfromclear.sh

Que significa limpar o badmailfrom de 30 em 30 minutos

vc pode limpar a qualquer momento executando o comando:
/root/bin/badmailfromclear.sh

Os emails banidos vao parar no arquivo:

/var/qmail/control/badmailfrom

Lembre: este arquivo tem que ter permissao
de qmailq para user e qmail para grupo
e permissao 644

apos mudancas eu se remove-lo e criar novamente
executar:

chown qmailq.qmail /var/qmail/control/badmailfrom
chmod 644 /var/qmail/control/badmailfrom

Voce pode simplesmente editar o arquivo
badmailfrom e remover os emails que quer tirar
da blacklist.

* maildrop

Atraves da utilizacao do maildrop em conjunto com o sqwebmail pode-se
elaborar poderosos filtros de email via web.

Configuracao para o usuario teste@example.com

cd /usr/local/vpopmail/domains/example.com

echo “|/usr/local/bin/maildrop ./teste/Maildir/maildirfilter” > .qmail-teste
chown vpopmail.vchkpw .qmail-teste

cd teste/Maildir

Crie um arquivo chamado maildirfilterconfig
com o seguinte conteudo:

———————————————————————————
MAILDIRFILTER=/usr/local/vpopmail/domains/cbsp.com.br/pablo/Maildir/maildirfilter
MAILDIR=/usr/local/vpopmail/domains/cbsp.com.br/pablo/Maildir
———————————————————————————

chown vpopmail.vchpw maildirfilterconfig

Agora acesse http://www.teste.com.br/cgi-bin/sqwebmail
entre com usuario e senha

Se tudo estiver correto aparecera a opcao: Edit Mail Filters 
no topo da pagina.

Agora vc ja pode editar seus filtros.

Entre com o nome da regra no “Rule Name”

Entre a condicao no bloco abaixo, lembrando que Header pode significar:
From, To, Subject etc.

Escolha a acao e pressione Submit.
Para finalizar pressione “Save All Changes”

*** Sqwebmail

O sqwebmail permite acesso web aos emails.
Ele no momento nao tem traducao para o portugues.
Ele esta disponivel na Url: http://www.teste.com.br/cgi-bin/sqwebmail
Uma caracteristica muito interessante dele eh sua capacidade de editar filtros
de email como mostrado acima e tambem a integracao com o gpg para recebimento
e envio de emails criptografados (Assunto nao tratado aqui).

*** Courier-imapd

O Courier-imapd eh o servidor de imap, importante para o funcionamento do webmail
IMP por exemplo.

sobre ele devemos saber como inicia-lo e como para-lo

/etc/init.d/courier-imap start (inicia o servico)
/etc/init.d/courier-imap stop (para o servico)

*** Logs

Os logs ficam em /var/log/qmail/send/human
com o programa qmailanalog é gerado uma pagina com estatisticas
visiveis em: http://mail.exemplo.com.br/qmaillog

no crontab este processo esta ativado para funcionar
todo dia as 23:59

59 23 * * * /root/bin/qmaillog.sh 

Voce pode mudar este valores para mais vezes ao dia se tiver
mais pressa em ver os logs ou executar manualmente o comando
/root/bin/qmaillog.sh

Referencia:
http://www.lifewithqmail.org/lwq.html

Teste de Relay
http://www.abuse.net/relay.html

 

 

Fonte: http://www.linuxdicas.com.br/section-printpage-24.html