Postfix alias y correos electrónicos duplicados, ¿cómo solucionarlo?


18

Tengo alias configurados en postfix, como los siguientes:

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

Cuando se envía un correo electrónico a all@mydomain.com, y cualquiera de los destinatarios de ese alias es cc: ed, que es bastante común (es decir, "Responder a todos"), el correo electrónico se entrega por duplicado. Por ejemplo, si se envía un correo electrónico a all@mydomain.com y foo@mydomain.com es cc: ed, se entregará dos veces. De acuerdo con las preguntas frecuentes de Postfix , esto es así por diseño, ya que Postfix envía correo electrónico en paralelo sin expandir los grupos, lo que lo hace más rápido que sendmail. Ahora todo está bien, pero ¿es posible configurar Postfix para eliminar realmente los destinatarios duplicados antes de enviar el correo electrónico?

He encontrado muchas publicaciones de personas en toda la red que tienen el mismo problema, pero aún no he encontrado una respuesta. Si esto no es posible en Postfix, ¿es posible hacerlo en algún lugar del camino? He intentado educar a mis usuarios, pero me temo que es bastante inútil ...

Estoy ejecutando postfix en Mac OS X Server 10.6, amavis está configurado como content_filter y dovecot está configurado como buzón_comando. Intenté configurar procmail como content_filter para la entrega de smtp (según la sugerencia a continuación), pero parece que no puedo hacerlo bien. Por varias razones, no puedo reemplazar la configuración estándar de OS X, lo que significa que postfix, amavis y dovecot se quedan. Sin embargo, puedo agregarlo si lo deseo.


Creo que realmente no es posible ...
Antoine Benkemoun

Realmente estoy empezando a creer que tienes razón, Antoine.
Marcus Stade

Bueno, eso fue un desperdicio de una recompensa ...
Marcus Stade

2
¿Alguna vez encontraste una solución para esto? Estoy teniendo el mismo problema
Tommy Arnold

Respuestas:


4

Postfix no tiene idea de correos electrónicos duplicados debido a la forma en que está estructurado. Es posible hacer lo que está sugiriendo utilizando procmail como su agente de entrega.

Esencialmente, cada mensaje proveniente de un cliente debe entregarse con un Id. De mensaje único. En el caso de que se entregue a varias personas, el Id. De mensaje debe ser el mismo, por lo que guardamos los Message-Idencabezados que hemos visto y descartamos y los futuros que coincidan con esa lista.

De http://novosial.org/procmail/

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

Si entiendo el problema correctamente, no es posible resolverlo en Postfix porque Postfix envía los correos electrónicos en paralelo, es decir, se envía a foo@mydomain.com al mismo tiempo que expande all@mydomain.com y luego nuevamente envía a foo@midominio.com. La solución de Procmail no introduciría una condición de carrera en la que se envíe otro correo electrónico no relacionado (con una identificación de mensaje diferente) entre los dos correos electrónicos en cuestión y sobrescribiendo el caché para que los correos electrónicos duplicados sean entregado de todos modos?
Marcus Stade

Estoy tratando de hacer que su sugerencia funcione, pero no estoy realmente seguro de cómo combinar esto con la entrega de palomar, que OS X 10.5+ utiliza de forma predeterminada.
Marcus Stade

Si está utilizando Dovecot como agente de entrega, puede utilizar Procmail como un sistema content_filterque le permitirá realizar la misma tarea a nivel global
Philip Reynolds,

Tengo que confesar que probablemente estoy por encima de mi cabeza aquí. Me he quedado ciego en la página de parámetros de configuración para postfix y buscando en Google hasta que me sangran los dedos, pero parece que no puedo entender cómo configurar esto. ¡Cualquier recurso que conozcas o te empuje en la dirección correcta sería realmente apreciado!
Marcus Stade

Creo que entiendo cómo funciona ahora, pero ya hay un content_filter configurado para amavis. Esto parece ser algún tipo de antivirus. He leído que es posible encadenar content_filters, pero parece poco intuitivo y la documentación es menos que estelar. Es realmente ridículo lo difícil que es eliminar los correos electrónicos duplicados. Independientemente de las desiciones de diseño, me parece que debería estar allí fuera de la caja o al menos no requerir estos monstruos hacks.
Marcus Stade

3

Hay una manera de hacerlo, pero no usando Postfix en sí.

Si está utilizando una implementación razonablemente reciente de Dovecot con Pigeonhole de Sieve , hay una extensión especial que se puede usar para la deduplicación en el momento de la entrega. En Dovecot anterior a 2.2.18, el nombre de esta extensión es "vnd.dovecot.duplicate" y está deshabilitado de forma predeterminada, en las versiones más recientes la extensión se llama "duplicado" y ya debería estar habilitada, pero habilitarla explícitamente no lo hará. daño.

/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
}

Luego, cree el script de tamiz para manejar la deduplicación en sí (puede ajustar el nombre de archivo como mejor le parezca).

/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;
}

Compilar la secuencia de comandos con sievec y asegúrese de que el guión es legible por palomar usuario. Más en Dovecot docs.

Si está utilizando Cyrus, hay una función de supresión de entrega de mensajes duplicados que se puede habilitar utilizando suppress_duplicates = yes.


Muchas gracias por señalar este mecanismo. Esa sensación de "encontrar una aguja en un pajar".
lkraav

Descubrimientos durante la implementación: la duplicateextensión funciona a nivel de usuario. Intenté detener los duplicados en varios usuarios To / Cc-d en un fileintobuzón central . Esto no funciona También tenía que establecer una entrada general postfix virtual_alias_maps, como @domain.com catchall@domain.com, entonces, la verificación duplicada del tamiz alcanzará catchallla lista de duplicados del usuario.
lkraav

Sí, eso es muy similar a la sensación de "encontrar una aguja en un pajar"
Net Runner


0

Esto es de algunas antiguas preguntas frecuentes postfix:

Postfix envía correos duplicados Algunas personas se quejarán de que Postfix envía mensajes duplicados. Esto sucede cada vez que se envía un mensaje a varias direcciones que llegan al mismo usuario. Ejemplos de tales escenarios son:

  • Se envía un mensaje al usuario y a un alias que enumera al usuario. El usuario recibe una copia del correo directamente y una copia a través del alias.

    • Se envía un mensaje a varios alias que enumeran al usuario. El usuario recibe una copia del correo a través de cada alias.

Algunas personas incluso argumentan que este es el comportamiento "correcto". Probablemente es más una cuestión de expectativas y de lo que uno está acostumbrado.

Esto solo se puede "arreglar" haciendo que Postfix sea más lento. En los ejemplos anteriores, Postfix primero tendría que expandir completamente todas las listas de distribución antes de comenzar cualquier entrega. Por diseño, Postfix entrega correo a diferentes destinos en paralelo, y la entrega local no es una excepción. Es por eso que Postfix puede ser más rápido que sendmail.

Entonces, por diseño, estás viendo ese comportamiento. Quizás si encuentra un filtro de contenido que puede eliminar las identificaciones de mensajes duplicados, puede eliminar esto después del evento de entrega.

Sendmail no tiene este problema porque expande todo primero y elimina los duplicados.


Sí, lo leí, quizás debería haber actualizado mi pregunta. Por diseño o no, sigue siendo un problema. Entiendo por qué se comporta como lo hace y entiendo que intentar encontrar una solución en Postfix es inútil. Sin embargo, he intentado encontrar una solución de filtro de contenido usando Procmail y parece que no puedo hacerlo bien. Es muy probable que no entienda los filtros de contenido o procmail correctamente, o ambos. En cualquier caso, todavía me gustaría arreglar esto. Desafortunadamente, la configuración tal como está no se puede modificar, solo agregar. Desafortunadamente, no puedo usar sendmail en lugar de postfix.
Marcus Stade

Actualicé la pregunta con más información, pero, sinceramente, el enlace a las preguntas frecuentes estaba allí para empezar. Sin embargo, agradezco cualquier sugerencia útil.
Marcus Stade

No me di cuenta de que era un enlace al mismo contenido. Al trabajar en seguridad de TI, te vuelves bastante paranoico al hacer clic en enlaces aleatorios. ¿Puede confirmar que los mensajes duplicados tienen las mismas ID de mensaje?
jeffatrackaid

Ha sido un día largo, así que necesito revisar su publicación original, pero ¿qué pasa con esto: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

De hecho, puedo confirmar que los mensajes duplicados tienen las mismas ID de mensaje. Desafortunadamente, configurar duplicate_filter_limit no ayuda en nada.
Marcus Stade

0

La solución oficial está aquí ... http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) El número máximo de direcciones recordadas por los filtros duplicados del destinatario para alias (5) o virtual (5) expansión de alias, o para pantallas de cola showq (8) (con versiones anteriores de Postfix, el límite predeterminado era 1000).

duplicate_filter_style (estricto) La política de filtro de destinatario duplicado: estricto o pragmático.


1
Esto no parece hacer nada ...
grufftech

postfix.1071664.n5.nabble.com/… afirma que esto nunca se implementó
Yanko Hernández Álvarez

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.