6. Sistema de Aliases/Forwards

O qmail possui um avançado, versátil e seguro sistema de aliases e forwards, e ainda pode aproveitar-se de mecanismos de aliases/forwards de terceiros, para facilitar migrações.

6.1. dot-qmail

/var/qmail/alias/.qmail- alias

Aonde alias é o nome do alias que será interpretado pelo qmail.

Normalmente é um arquivo contendo um ou mais endereços de e-mail para os quais as mensagens devem ser redirecionadas.

É importante lembrar que, ~/alias/.qmail-alias só será alcançado caso não exista um usuário local identificado por alias. Isto significa que, se existir um usuário telles e for criado um alias ~alias/.qmail-telles, este alias nunca será alcançado.

Linhas que iniciam com “#” (comentários) são ignoradas.

Ex: criando o alias rodrigo.

# echo telles@domain.net > /var/qmail/alias/.qmail-rodrigo

Isso fará o qmail redirecionar todas as mensagens enviadas a rodrigo para telles@domain.net.

É possível utilizar vários e-mails para redirecionamento de mensagens dentro do arquivo de alias, bastando para isso, que cada e-mail esteja em uma única linha:

# cat /var/qmail/alias/.qmail-galera

telles@tubes.br

cleri@tdk.ft

langona@ls.up

kerne@games.md

alvsan@lnx.pt

Ainda é possível utilizar scripts ou programas dentro dos arquivos .qmail-alias.

Ex:

# echo '| /home/telles/lixo.sh' > /var/qmail/alias/.qmail-spam

Desta forma, todas as mensagens enviadas para spam serão tratadas pelo script /home/telles/lixo.sh, o que provavelmente irá deletar a mensagem com algo do tipo:

#!/bin/bash

cat > /dev/null

exit 99

NOTA: Caso deseje criar aliases que possuam “.” (ponto) no meio do nome (Ex: r.p.telles), substitua “.” por “:” (dois pontos).

Ex:

$ echo telles@tubes.br > /var/qmail/alias/.qmail-r:p:telles

6.2. $HOME/.qmail- alias

Aonde alias é o nome do alias criado pelo usuário local.

Desta forma, o usuário pode criar seus próprios aliases, sem depender do administrador de sistemas.

Exemplo 1: $HOME da usuária aline.

$ echo joazinho > $HOME/.qmail-encontro

Quando for enviado um e-mail para aline-encontro, qmail redirecionará a mensagem para o usuário joaozinho.

Ainda é possível redirecionar mensagens para caixas de e-mail no formato mbox.

Exemplo 2: $HOME da usuária aline.

$ echo ./Mailbox.encontros > $HOME/.qmail-encontros

Desta forma, todos os e-mails enviados para aline-encontros serão armazenados na caixa de e-mail $HOME/Mailbox.encontros no formato mbox.

Quando uma mensagem para telles-amigos-smith é enviada, qmail-lspawn checa se o usuário telles existe, se existir qmail-local verifica no $HOME do usuário telles, se .qmail-amigos-smith existe, se não existir ou se estiver vazio, checa por qmail-amigos-default e por final .qmail-default; qmail-local seguirá as istruções contidas no primeiro arquivo encontrado que tenha conteúdo diferente de vazio. Se o usuário telles não existir, qmail-lspawn passa o controle da entrega para o usuário alias antes de rejeitar a mensagem.

Quando qmail-local encaminha uma mensagem seguindo instruções contidas em um arquivo $HOME/.qmail-alias (ou $HOME/.qmail-default), sempre verifica a existência de um arquivo do tipo $HOME/.qmail-alias-owner; se o arquivo existir, qmail-local utilizará usuario-alias-owner@dominio como sendo o sender (Return-Path:) da mensagem. Caso contrário, qmail-local mantem o endereço de sender original da mensagem.

Excessão: qmail-local sempre mantem o endereço original de sender se este for vazio ou contiver “#@[]” (mensagens de erro – bounces).

qmail-local também suporta a utilização de sender variável (VERP – Variable Envelope Return Paths). Se $HOME/.qmail-alias-owner e $HOME/.qmail-alias-owner-default existirem, qmail-local utilizará usuario-alias-owner-@dominio-@[] como sender de mensagens encaminhadas. Isto fará com que o recipiente da mensagem - recipiente@host - veja o sender como sendo usuario-alias-owner-recipiente=host@dominio.

O arquivo $HOME/.qmail pode ser utilizado para alterar o método padrão de entrega de mensagens para o usuário.

Se $HOME/.qmail estiver completamente vazio ou não existir, qmail-local utilizará o método padrão definido pelo administrador do sistema em qmail-start (defaultdelivery); normalmente o método padrão é mbox e todas as mensagens serão adicionadas ao arquivo $HOME/Mailbox neste padrão.

$HOME/.qmail pode conter espaços em branco e tabs no final de cada linha; Linhas em branco são permitidas, desde que não sejam a primeira linha do arquivo.

Se $HOME/.qmail for executável (possuir o bit de execução – x – ligado) e contiver qualquer linha de programa, instruções de Mailbox ou Maildir, qmail-local suspende a entrega e devolve a mensagem à fila de e-mails.

Exemplo 3: $HOME do usuário telles.

$ echo './Maildir/' > $HOME/.qmail

É importante lembrar que, será necessário criar o diretório Maildir e sua estrutura, utilizando o programa maildirmake.

Ainda é possível utilizar scripts e/ou programas dentro dos arquivos dot-qmail.

Exemplo 4: $HOME do usuário telles.

$ cat $HOME/.qmail

# Programa para filtragem de lixo

|./lixo.sh

&telles@tubes.sp

./Maildir/

No exemplo acima, todas as mensagens enviadas para o usuário telles, serão submetidas ao programa lixo.sh e se passarem desta etapa, serão encaminhadas ao e-mail telles@tubes.sp e entregues no Maildir do usuário.

Se .qmail possuir permissões de leitura para todos usuários ou grupos do sistema, ou se o diretório $HOME do usuário possuir a flag sticky ligada, qmail-local suspende a entrega e devolve a mensagem à fila de e-mails.

A utilização da flag sticky (chmod +t $HOME) deve ser utilizada para manutenção e edição do arquivo .qmail com segurança, fazendo com que novas mensagens que alcancem a caixa de correio do usuário, voltem para a fila e sejam entregues mais tarde, quando a flag sticky não estiver mais setada (chmod -t $HOME) .

Exemplo 5:

$ chmod +t $HOME

$ /var/qmail/bin/qmail-local -n $USER ~ $USER '' '' '' '' ./Maildir/

Warning: home directory is sticky.

maildir ./Maildir/

did 1+0+0

$ chmod -t $HOME

$ /var/qmail/bin/qmail-local -n $USER ~ $USER '' '' '' '' ./Maildir/

maildir ./Maildir/

did 1+0+0

6.3. qmail-users - assign/cdb

É possível criar uma tabela de usuários do qmail associada a usuários do sistema.

Este sistema utiliza os arquivos assign e cdb que estão localizados no diretório /var/qmail/users e é muito similar aos sistemas de aliases já mencionados, com a diferença de utilizar métodos e programas diferentes para a mesma tarefa.

O arquivo assign contem os mapeamentos de usuários qmail para usuários do sistema, um em cada linha; cdb, é um arquivo binário gerado pelo programa qmail-newu a partir de assign.

assign possui o formato:

=endereço:usuário:uid:gid:diretório:traço:alias:

Ainda é possível utilizar o sinal “+” (adição) como curinga no lugar de “=” (igual), que fará o qmail localizar endereço no início do endereço de recipiente.

Ex:

# cat /var/qmail/users/assign

=telles:rodrigo:500:500:/home/rodrigo:::

+news-:rodrigo:500:500:/home/rodrigo:-::

.

# /var/qmail/bin/qmail-newu

E-mails enviados para telles serão entregues para o usuário rodrigo e e-mails enviados para qualquer endereço que comece com “news-” também serão entregues ao usuário rodrigo.

Desta forma, um e-mail enviado para news-unix será tratado por /home/rodrigo/.qmail-unix.

NOTA: A última linha do arquivo assign sempre deve ser um único “.” (ponto).

Entrega local: