Design do servidor de email: evitando loops [fechado]
Digamos que você esteja criando um servidor de e-mail sofisticado com suporte a regras (como encaminhamento condicional, etc.). O antigo problema dos loops de e-mail o encarava:
1) Digamos que você estabeleceu uma regra que encaminha todos os seus emails para outro endereço. E se esse endereço não existir e o postmaster nesse domínio enviar mensagens de volta para você, informando isso. Obviamente, sua regra não faz distinção para essas mensagens e as encaminha também, criando um loop.
2) Outra situação são dois usuários, usando esse cliente, configurando regras de encaminhamento para o endereço um do outro. Tudo o que precisamos é de uma única mensagem inicial e eles irão girar em um loop.
3) Ou, que tal um caso de resposta automática, em que o cliente encaminha para um endereço que responde automaticamente, causando mais um loop.
Não sou especialista nessas coisas, mas não parece que a detecção de loops funcionaria. Certamente poderíamos apresentar algumas heurísticas, mas parece não existir um algoritmo genérico.
Uma solução em que estive pensando não envolve a detecção. Em vez disso, apenas observamos as contas com atividade de envio alto de email (ou atividade de envio alto causada por regras) e desabilitamos temporariamente o email / regras para essas contas até que eles corrigam o problema. No entanto, essa solução precisa percorrer a linha entre contas que causam loops e contas que simplesmente recebem muito correio e o encaminham para outro lugar.
Também podemos aplicar a otimização a todas as contas e garantir que, se os loops forem iniciados, eles não consumam uma tonelada de largura de banda. Isso não impedirá a execução de loops até que as caixas de correio sejam preenchidas.
Faltam algumas boas soluções?