A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Slackware + Postfix + Domínios Virtuais

Seg

20

Mar

2006


12:34

(5 votos, média 4.60 de 5) 


Domínios separados + contas não Unix

Em sistemas com vários domínios virtuais e um montão de usuários o gerenciamento de contas Unix dá um trabalho maluco. Até agora só vimos a atuação do agente de entregas local do Postfix. Mas, se é possível criar domínios virtuais, porque não acionar um agente de entregas virtual? Graças a Deus o Wietse Venema, autor do Postfix, pensou nisso e deu uma solução smile

Com o agente de entregas virtual, cada endereço pode ter sua própria caixa postal (mailbox) virtual. Ao contrário dos domínios virtuais com alias, os domínios virtuais com mailbox não precisam de traduções e os proprietários da caixa de correio virtual não precisam ter uma conta Unix.

O agente de entrega virtual controla o caminho da caixa postal, a uid (identificação do usuário) e a gid (identificação do grupo) usando tabelas específicas. E aí você pensa... xiiii, com alias só havia uma tabela para controlar, agora são três? Mas garanto que a solução é boa: uma vez que este modelo esteja funcionando com as tabelas, migrar para uma base de dados SQL são dois palitos. Aliás, este será o tema do próximo tutorial.

Bem, então vamos fazer estas tabelas funcionarem. Você se lembra que no modelo anterior usamos alguns parâmetros para informar o Postfix de que queríamos habilitar domínios virtuais com alias. Neste caso, a coisa não é muito diferente. Existem parâmetros específicos para esta solução. Veja o que é preciso adicionar ao /etc/postfix/main.cf:

virtual_mailbox_domains = numaboa.org
virtual_mailbox_base = /home/postfix
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:1020
virtual_gid_maps = static:1020
virtual_alias_domains =
   (não pode referir numaboa.org)

Com virtual_mailbox_domains = numaboa.org declaramos o domínio numaboa.org como sendo do tipo virtual com mailbox. Todo endereço criado para este domínio irá para um diretório próprio criado em /home/postfix/ e a lista de endereços se encontra no arquivo /etc/postfix/vmailbox. Primeiro algumas considerações sobre o domínio.

Se declaramos o domínio numaboa.org como sendo virtual, ele NÃO pode ser declarado junto com o domínio canônico nos parâmetros mydestination e realy_domains. Mas tem mais: se declaramos o domínio como virtual com mailbox, ele NÃO pode também ser declarado como domínio virtual com alias. Ou bem uma coisa, ou bem outra para não acionar dois agentes de entrega diferentes para realizar a mesma tarefa. Caso você opte por usar domínios virtuais com alias e com mailbox (o que você pode fazer sem problemas com domínios virtuais diferentes), tome muito cuidado para não incluir um coringa de caixa postal de um domínio virtual com mailbox (por exemplo, @numaboa.org) no arquivo de aliases.

Proprietários

Os usuários locais são os proprietários dos seus diretórios (por exemplo, o diretório /home/postfix/teste/ é de teste:users). Como os usuários virtuais não podem ser proprietários de nada, eles precisam de uma espécie de fiador. Para exercer esta função vamos criar o usuário fiador com uid 1020 e o grupo fiador com gid 1020:

# groupadd -g 1020 fiador
# useradd -d /home/postfix -g 1020 -u 1020 -s /bin/false fiador

Este será o fiador para todos os usuários sem contas locais pois foi "empossado" através dos parâmetros virtual_uid_maps = static:1020 e virtual_gid_maps = static:1020.

atencao DICA: lembre-se destas uid e gid porque ainda serão utilizadas em configurações importantes nos tutoriais que fazem parte do pacote Postfix.

No tutorial Slackware + Postfix + Maildir criamos os diretórios base para as caixas de correio, só que usamos a identidade root. Isto fez com que o proprietário destes diretórios ficassem como root:root. Verifique com:

# ls -l /home
drwxr-xr-x  6 root root 168 2006-02-26 17:32 postfix/

Mude o usuário e o grupo e confira:

# chown fiador:fiador /home/postfix
# ls -l /home
drwxr-xr-x  6 fiador fiador 168 2006-02-26 17:32 postfix/

Se não fizermos esta alteração, os arquivos de emails não podem ser salvos nos respectivos diretórios por falta de autorização.

O mapa de dados

Indicamos como fonte de dados o arquivo vmailbox. Este arquivo precisa ser criado com o seguinte formato:

maria@numaboa.org     numaboa.org/maria/
pedro@numaboa.org     numaboa.org/pedro/
teste@numaboa.org     numaboa.org/teste

Cada linha deste arquivo especifica um endereço e o diretório onde deve ser criada sua caixa postal. Observe que os diretórios dos usuários maria e pedro terminam com uma barra (/) e que o do usuário teste termina sem barra. Quando existe a barra no final, os emails serão guardados no formato Maildir (um arquivo para cada email); caso contrário, os emails serão armazenados no formato mailbox (todos os emails num único arquivo).

Observe que há um usuário local teste e um usuário virtual teste. Não há problema algum. As mensagens para teste@numaboa.com.br serão entregues na caixa postal /home/postfix/teste/Maildir/new/ e as para teste@numaboa.org serão entregues na caixa postal /home/postfix/numaboa.org/teste/new/ porque os agentes de entrega são diferentes e trabalham com parâmetros de configuração diferentes. É coisa do tipo carta registrada e Sedex - tudo acontece no correio, mas os sistemas de entrega não se misturam.

Agora só falta indexar o mapa e atualizar o Postfix, ou seja:

# postmap /etc/postfix/vmailbox
# postfix reload

Prontinho! O postmap criou o arquivo vmailbox.db e o Postfix foi avisado das alterações. Agora é cruzar os dedos e partir para os testes. Com tanta coisa, será que ficou algum erro? :bug:

Informações adicionais