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