BOMBOLOM.COM

(correio) Cyrus plus-addressing

O que vem a ser isto?

O Cyrus permite que enderecemos correio directamente para pastas definidas no servidor. Por exemplo:

username+folder@example.com

Enviará o correio directamente para a caixa postal do user username, no servidor example.com, para a pasta folder. Isto pode ser bastante útil numa infinidade de situações, por exemplo se quisermos transferir pastas de um servidor para outro, se quisermos ter numa única conta o correio de várias contas (por exemplo podemos fazer o forward do mail que tivermos no Google Mail para uma conta específica), etc...

No meu caso necessito de transferir o conteúdo de uma série de pastas que tenho num servidor central para 4 sitios diferentes e bastante remotos (de facto tratam-se de sistemas que tenho a correr em África e no Brasil). Vou a seguir exemplificar como consegui isso.

Os servidores remotos e locais estão configurados da mesma forma que descrevo em Servidor de Mail SuSE - Postfix + Amavis + Cyrus, todos eles a funcionarem com o SuSE.

Configuração dos servidores remotos

Os servidores remotos vão ler os mails a partir do servidor local e armazenar esses mails em pastas especificas. A primeira tarefa consiste em configurar os MTAs de forma a que aceitem a convenção do plus-addressing. No meu caso utilizo o Postfix para o efeito e basta editar o ficheiro /etc/postfix/main.cf e acrescentar a seguinte linha:

recipient_delimiter = +
A seguir é necessário reiniciar o servidor de correio:
# rcpostfix restart

Obter os mails do servidor local

Já tenho configurado o Fetchmail configurado nestes sistemas. Assim bastou-me editar em cada servidor remoto o respectivo /etc/fetchmailrc. Para cada pasta que quero transferida acrescentei:

poll example.com proto imap
      user fax pass XXXXXX
      is arquivo+FAXESLX here 
      folder INBOX.FAXES
      keep;

Isto trocado por miudos quer dizer:

  1. Em cada sessão do fetchmail vamos verificar se há correio novo no servidor example.com utilizando o proto[colo] imap;
  2. Vamo-nos autenticar como utilizador fax com senha XXXXXX;
  3. O referido utilizador fax corresponde ao utilizador local arquivo para onde vai ser transferido este correio e além disso vamos armazenar esse correio directamente no folder FAXESLX;
  4. A pasta remota onde está o correio a retirar é a FAXES que está por baixo da pasta INBOX do utilizador fax;
  5. Finalmente os mails no servidor example.com não deverão ser apagados.

Reiniciar o fetchmail:

# rcfetchmail restart

NOTAS:

Permissões das pastas

Nos servidores remotos (aqueles que descarregam o correio), é necessário dar permissões correctas às pastas indicadas usando a convenção do plus-addressing. No FAQ do Cyrus indicam apenas que o ACL p tem de estar definido para essas pastas. As pastas tinham o seguinte ACL:

$ cyradm --user cyrus localhost
Password:
localhost> lam user.arquivo.FAXESLX
arquivo lrswipcda

De facto lá está o ACL p, no entanto as mensagens descarregadas iam sempre parar à inbox do utilizador. Após alguma procura descobri que o user anonymous também tem de ter definido o ACL p. Para isso basta fazer na consola do cyrus:

$ cyradm --user cyrus localhost
Password:
localhost> sam user.arquivo.FAXESLX anonymous p

Assunto arrumado! Temos o plus-addressing a funcionar sem problemas.

Ainda estou a reflectir nas possíveis implicações de segurança desta configuração mas por principio julgo que o maior risco é termos spam directamente distribuido para sub pastas no nosso servidor!

25.10.2006 | Ler mais | Comentários | Tags ,

Voltar à Página principal | Made with PyBlosxom