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.
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
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:
Reiniciar o fetchmail:
# rcfetchmail restart
NOTAS:
$ cyradm --user cyrus localhost Password: localhost> sam user.arquivo.FAXESLX novouser lrsw
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!