Estou implementando uma sincronização bidirecional com o Mailman. Esta comunidade sente que eliminar o Mailman é inviável, e eles desejam que os usuários do Mailman continuem usando apenas o Mailman, mas ainda assim possam interagir com usuários do Discourse que participam de uma única categoria.
Por um momento, parecia que assinar o endereço de categoria do Mailman na lista, ativar a opção categoria espelha uma lista de e-mail e, em seguida, adicionar um usuário do Discourse com o endereço da lista do Mailman que estava monitorando a categoria, quase funcionaria.
Minha maior preocupação eram os loops de e-mail. Achei que, no meu primeiro teste, estava funcionando perfeitamente e que o único problema era que os membros da lista de e-mail poderiam cancelar a assinatura da lista do Mailman de monitorar a categoria do Discourse. Escrevi um plugin para remover os links de cancelamento de assinatura e pensei que estaríamos livres de problemas. Mas estava errado.
A maior questão, na minha opinião, é que, quando uma mensagem do Discourse é enviada para a lista, um usuário que responde à mensagem responde diretamente ao Discourse. Ao fazer isso, a mensagem é rejeitada porque esse usuário não é o usuário do Discourse que está assinando a lista. Não tenho certeza se há uma maneira de resolver isso. Talvez eu pudesse sobrescrever o código que faz essa verificação e, se o remetente tiver algum endereço diferente do esperado, tratá-lo como qualquer outro usuário em espera? Nesse caso, o único problema seria que pessoas que clicam em responder, achando que estão enviando para um único usuário, estariam, na verdade, enviando para a lista?
MAS, a outra questão, que acho que pode ser mais difícil de resolver, é que, se um usuário do Mailman responder ao Mailman em sua resposta (em vez do endereço de resposta discutido anteriormente), a mensagem chegará ao Discourse através do Mailman, e o Discourse a tratará como um novo tópico. Não vejo como resolver isso (já que o assunto recebe cada vez mais strings [blah] adicionadas pelo Mailman e pelo Discourse). Mas talvez resolver apenas o problema de resposta seja suficiente.
Alguém tem outras ideias?