Aliases do Postfix e e-mails duplicados, como corrigir?


18

Tenho aliases configurados no postfix, como o seguinte:

all@mydomain.com:    foo@mydomain.com, bar@mydomain.com ...

Quando um email é enviado para all@mydomain.com e qualquer um dos destinatários desse alias é cc: ed, o que é bastante comum (por exemplo: "Responder a todos"), o email é entregue em duplicado. Por exemplo, se um email for enviado para all@mydomain.com e foo@mydomain.com for cc: ed, ele será entregue duas vezes. De acordo com as Perguntas frequentes do Postfix , isso ocorre por design, pois o Postfix envia email em paralelo sem expandir os grupos, o que o torna mais rápido que o sendmail. Agora está tudo bem e elegante, mas é possível configurar o Postfix para realmente remover destinatários duplicados antes de enviar o email?

Encontrei muitas postagens de pessoas em toda a rede com o mesmo problema, mas ainda não encontrei uma resposta. Se isso não for possível no Postfix, é possível fazê-lo em algum lugar do caminho? Eu tentei educar meus usuários, mas acho que é inútil ...

Estou executando o postfix no Mac OS X Server 10.6, amavis é definido como content_filter e dovecot é definido como mailbox_command. Eu tentei configurar o procmail como um content_filter para entrega smtp (conforme a sugestão abaixo), mas não consigo acertar. Por várias razões, não posso substituir a configuração padrão do OS X, o que significa que o postfix, o amavis e o dovecot permanecem. No entanto, posso acrescentar, se assim o desejar.


Eu acho que é realmente apenas não é possível ...
Antoine Benkemoun

Estou realmente começando a acreditar que você está certo, Antoine.
Marcus Stade

Bem, isso foi um desperdício de uma recompensa ...
Marcus Stade

2
você já encontrou uma solução para isso? Estou tendo o mesmo problema.
Tommy Arnold

Respostas:


4

O Postfix não tem idéia sobre e-mails duplicados devido à maneira como está estruturado. É possível fazer o que você está sugerindo usando o procmail como seu agente de entrega.

Essencialmente, cada mensagem proveniente de um cliente deve ser entregue com um ID da mensagem exclusivo. No caso de ser entregue a várias pessoas, o ID da mensagem deve ser o mesmo; portanto, salvamos os Message-Idcabeçalhos que vimos e descartamos e os futuros que correspondem a essa lista.

Em http://novosial.org/procmail/

:0 Wh: msgid.lock
| formail -D 8192 ~/.procmail/msgid.cache

Se eu entendi o problema corretamente, não é possível resolver no Postfix porque o Postfix envia os e-mails em paralelo, ou seja, envia para foo@mydomain.com ao mesmo tempo em que expande all@mydomain.com e depois novamente envia para foo@meudominio.com. A solução Procmail não introduziria uma condição de corrida em que outro email não relacionado (com um ID de mensagem diferente) seja enviado entre os dois emails em questão e substituindo o cache, fazendo com que os emails duplicados sejam entregue de qualquer maneira?
Marcus Stade

Estou tentando fazer sua sugestão funcionar, mas não tenho muita certeza de como combinar isso com a entrega dovecot, que é usada pelo OS X 10.5+ por padrão.
Marcus Stade

Se você estiver usando dovecot como um agente de entrega, você pode usar o procmail como um content_filterque lhe permitirá realizar a mesma tarefa em um nível global
Philip Reynolds

Eu tenho que confessar que provavelmente estou passando por cima da minha cabeça aqui. Venho me encarando cegamente na página de parâmetros de configuração para postfix e pesquisa até meus dedos sangrarem, mas não consigo descobrir como configurar isso. Quaisquer recursos que você conheça ou cutuque na direção certa serão realmente apreciados!
Marcus Stade

Acho que meio que entendo como funciona agora, mas já existe um content_filter definido como amavis. Parece ser algum tipo de antivírus. Eu li que é possível encadear content_filters, mas parece pouco intuitivo e a documentação é menos do que estelar. É realmente muito ridículo o quão difícil é eliminar apenas emails duplicados. Design desicions independentemente, isso me parece que deveria estar lá fora da caixa ou pelo menos não exigir esses hacks monstruosos.
Marcus Stade

3

Existe uma maneira de fazer isso, mas não usando o próprio Postfix.

Se você estiver usando uma implementação razoavelmente recente do Dovecot with Pigeonhole do Sieve , há uma extensão especial que pode ser usada para desduplicação na entrega. No Dovecot anterior à 2.2.18, o nome dessa extensão é "vnd.dovecot.duplicate" e é desativado por padrão. Nas versões mais recentes, a extensão é chamada "duplicada" e já deve estar ativada, mas habilitar explicitamente não será prejuízo.

/etc/dovecot/conf.d/90-sieve.conf:

plugin {
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve

  sieve_before = /mnt/mail/users/global_sieve/deduplicate.sieve
  # sieve_before2 = /mnt/mail/users/global_sieve/antispam.sieve

  sieve_extensions = +vnd.dovecot.duplicate  # for dovecot < 2.2.18
  #sieve_extensions = +duplicate             # for dovecot >= 2.2.18
}

Em seguida, crie o script de peneira para lidar com a desduplicação (você pode ajustar o nome do arquivo como achar melhor).

/mnt/mail/users/global_sieve/deduplicate.sieve:

require "vnd.dovecot.duplicate"; # for dovecot < 2.2.18
# require "duplicate";           # for dovecot >= 2.2.18

if duplicate {
    discard;
    stop;
}

Compile o script usando sievec e verifique se o script é legível pelo usuário dovecot . Mais em documentos Dovecot.

Se você estiver usando o Cyrus, há um recurso de supressão de entrega de mensagens duplicadas que pode ser ativado usando suppress_duplicates = yes.


Muito obrigado por apontar esse mecanismo. Aquele sentimento de "encontrar uma agulha no palheiro".
lkraav

Descobertas durante a implementação: a duplicateextensão funciona no nível do usuário. Eu estava tentando parar duplicatas em vários usuários para / Cc-d em uma fileintocaixa de correio central . Isso não funciona. Também era necessário definir uma entrada catchfix virtual_alias_mapsall postfix , como, por exemplo @domain.com catchall@domain.com, a verificação duplicada da peneira atingirá catchalla lista duplicada do usuário.
lkraav

Sim, isso é muito semelhante a "encontrar uma agulha num palheiro" sentindo
Runner Net


0

Isto é de algumas perguntas antigas do postfix:

O Postfix envia mensagens duplicadas Algumas pessoas reclamam que o Postfix envia mensagens duplicadas. Isso acontece sempre que uma mensagem é enviada para vários endereços que atingem o mesmo usuário. Exemplos de tais cenários são:

  • Uma mensagem é enviada ao usuário e a um alias que lista o usuário. O usuário recebe uma cópia do correio diretamente e uma cópia através do alias.

    • Uma mensagem é enviada para vários aliases que listam o usuário. O usuário recebe uma cópia do email por cada alias.

Algumas pessoas até argumentam que esse é o comportamento "certo". Provavelmente é mais uma questão de expectativa e do que estamos acostumados.

Isso pode ser "corrigido" apenas tornando o Postfix mais lento. Nos exemplos acima, o Postfix precisaria primeiro expandir completamente todas as listas de distribuição antes de iniciar qualquer entrega. Por padrão, o Postfix entrega correspondências para diferentes destinos em paralelo, e a entrega local não é uma exceção. É por isso que o Postfix pode ser mais rápido que o sendmail.

Então, por design, você está vendo esse comportamento. Talvez se você encontrar um filtro de conteúdo capaz de remover IDs de mensagem duplicados, poderá eliminá-lo após o evento de entrega.

O Sendmail não tem esse problema porque expande tudo primeiro e retira as duplicatas.


Sim, eu li isso, talvez eu devesse ter atualizado minha pergunta. Por design ou não, ainda é um problema. Entendo por que está se comportando dessa maneira e entendo que é inútil tentar encontrar uma solução no Postfix. No entanto, tentei encontrar uma solução de filtro de conteúdo usando o Procmail e não consigo entender direito. É muito provável que eu não esteja entendendo os filtros de conteúdo ou o procmail corretamente, ou ambos. Em ambos os casos, eu ainda gostaria de corrigir isso. Infelizmente, a configuração como está não pode ser modificada, apenas adicionada a. Infelizmente, não posso usar o sendmail em vez do postfix.
Marcus Stade

Atualizei a pergunta com mais algumas informações, mas sinceramente, o link para o FAQ estava lá para começar. Agradeço qualquer sugestão útil embora!
Marcus Stade

Não sabia que havia um link para o mesmo conteúdo. Trabalhando em segurança de TI, você fica paranóico ao clicar em links aleatórios. Você pode confirmar que as mensagens duplicadas têm os mesmos IDs de mensagem?
jeffatrackaid

Faz um longo dia, então eu preciso revisar sua postagem original, mas e sobre isso: postfix.org/postconf.5.html#duplicate_filter_limit #
jeffatrackaid

Posso confirmar que as mensagens duplicadas têm os mesmos IDs de mensagem. Definir o duplicate_filter_limit não ajuda em nada, infelizmente.
Marcus Stade

0

A solução oficial está aqui. Http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) O número máximo de endereços lembrados pelo destinatário duplicam filtros para aliases (5) ou expansão virtual (5), ou para exibições de fila showq (8) (com lançamentos anteriores do Postfix, o limite padrão era 1000).

duplicate_filter_style (strict) A política de filtro de destinatários duplicados: estrita ou pragmática.


11
Isso não parece fazer nada ...
grufftech

O postfix.1071664.n5.nabble.com/… afirma que isso nunca foi implementado
Yanko Hernández Álvarez

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.