Informática Numaboa - Linux
Debian + Postfix + PostfixAdmin + SquirrelMail
Sab 16 Mai 2009 01:19 |
- Detalhes
- Categoria: Como fazer instalações
- Atualização: Quinta, 28 Janeiro 2010 21:08
- Autor: vovó Vicki
- Acessos: 59434
- Debian + Postfix + PostfixAdmin + SquirrelMail
- A lista de fontes
- Iptables e logcheck
- MySQL, Postfix e Dovecot
- Certificados SSL (Autoridade)
- Certificados SSL (Requisições)
- phpMyAdmin
- SquirrelMail e PostfixAdmin
- SquirrelMail e PostfixAdmin II
- SquirrelMail e PostfixAdmin III
- Configurar SASL e TLS
- Amavis e SpamAssassin
- Amavis, SpamAssassin, ClamAV, Razor, Pyzor
- Amavis
- Amavis II
- Tabelas Bayes e AWL
- Personalizar o SquirrelMail
- Razor, pflogsumm e BIND
- Configurações Postfix adicionais
- Férias no PostfixAdmin
- Quotas, MailGraph e mysql-zrm
- O problema dos Aliases
- Todas as Páginas
O problema dos Aliases
Neste ponto temos um pequeno problema relacionado aos aliases. A expansão dos aliases ocorre duas vezes, uma quando a mensagem entra pela porta da frente via um dos daemons smtp e outra quando o amavis devolve a mensagem na porta de reinjeção do Postfix (porta 10025). Desta forma, o endereço é reescrito antes e depois do amavisd-new. Por que isto tem importância? Para cada usuário adicionado via PostfixAdmin existe uma entrada criada na tabela postfix.alias com o seguinte formato:
teste@exemplo.com teste@exemplo.com
Se um encaminhamento (forward) for adicionado através do Squirrelmail ou do PostfixAdmin e se a interface PostfixAdmin for usada escolhendo-se "Deliver to the local mailbox" (entregar na caixa postal local), o registro do alias do usuário vai ficar parecido com:
teste@exemplo.com teste@exemplo.com,numaboa&64;exemplo.net
Neste exemplo, teste@exemplo.com é um usuário real no nosso sistema e a caixa postal numaboa@exemplo.net está hospedada em outro local. Neste caso a mensagem será endereçada tanto para teste@exemplo.com como para numaboa@exemplo.net. Depois que o amavisd-new processa a mensagem, duas mensagens são geradas, uma para cada alias. A mensagem que foi gerada com o endereço teste@exemplo.com é que é o problema. Como a porta de reinjeção 127.0.0.1:10025 é apenas mais um dos daemons smtp (que usa o daemon cleanup para facilitar a reescrita do endereço), o Postfix endereça esta mensagem novamente para ambos. O resultado é que numaboa&64;exemplo.net recebe a mensagem duas vezes (o que não acontece com teste@exemplo.com, que só recebe uma porque a mensagem foi originalmente endereçada a ele).
Quando escrevi este documento pela primeira vez, desabilitei a reescrita de endereços antes do amavisd-new (usei "-o receive_override_options=no_address_mappings" nos daemons smtp interfaceando a Internet). Isto funcionava quando todas as mensagens vinham endereçadas a usuários "reais" (os que possuem caixas postais), mas como ficaria a coisa se você quisesse criar um alias? Alguma coisa do tipo
teste.user@exemplo.com teste@exemplo.com
onde teste@exemplo.com possui uma caixa postal (e está na base de dados do amavis) e teste.user@exemplo.com foi criado pelo admin apenas para redirecionar convenientemente emails para a conta existente. Aí a coisa não funciona direito se os endereços só forem reescritos depois do amavisd-new. O motivo é que teste.user@exemplo.com acaba usando as configurações padrão presentes em amavisd.conf ou 50-user e não as configurações relativas a teste@exemplo.com, ou seja, não usa as configurações que estão na base de dados MySQL. Neste caso, qual seria a solução? Uma das possibilidades seria editar o daemon smtp 127.0.0.1:10025 e alterar este override
-o receive_override_options=no_header_body_checks, no_unknown_recipient_checks
por
-o receive_override_options=no_address_mappings, no_header_body_checks, no_unknown_recipient_checks
mas o problema é que há situações em que não queremos desabilitar completamente a reescrita depois do amavisd-new. Podemos simplesmente querer usar uma tabela de alias virtual diferente. Para isto, vamos adicionar um daemon de cleanup novo que o amavisd-new possa usar e, por enquanto, vamos fazer com que este daemon de cleanup não use uma tabela de alias virtual. Faça um
vi /etc/postfix/master.cf
copie o daemon de cleanup, chame a cópia de amavis-cleanup e adicione um override que desabilita o mapa de alias virtual atual:
cleanup unix n - - - 0 cleanup amavis-cleanup unix n - - - 0 cleanup -o virtual_alias_maps=hash:/etc/postfix/amavis_virtual qmgr fifo n - n 300 1 qmgr
Depois, na porta de reinjeção 127.0.0.1:10025, avise o Postfix para usar este daemon de cleanup novo nos emails que o amavisd-new manda para ele:
127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o cleanup_service_name=amavis-cleanup -o local_recipient_maps= <...>
Salve o arquivo e feche o editor. Depois:
/etc/init.d/postfix stop /etc/init.d/postfix start
Você pode ser mais criativo (se você precisar). Sugiro a leitura de http://www.ijs.si/software/amavisd/README.postfix.html e http://www.ijs.si/software/amavisd/README.postfix.old.
Observação: se o usuário utilizar a interface PostfixAdmin para alterar o(s) alias(es) de encaminhamento e escolher a opção "Forward to given email addresses only" (encaminhar apenas para o endereço indicado) ao invés da opção "Deliver to the local mailbox", o registro no postfix.alias deve estar neste formato:
teste@exemplo.com numaboa@exemplo.net
Neste exemplo, numaboa@exemplo.net ainda é uma caixa postal remota. Lembre-se de que caixas postais remotas não terão seus endereços de email na base de dados amavis do MySQL (a não ser que você os adicione manualmente). Neste caso este tipo de destinatário acaba usando as configurações padrão (estáticas) existentes nos arquivos 50-user ou amavisd.conf.
- << Anterior
- Próximo