Alias ​​Postfix ed e-mail duplicate, come risolvere?


18

Ho degli alias impostati in postfix, come il seguente:

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

Quando viene inviata un'e-mail a all@mydomain.com e uno qualsiasi dei destinatari di tale alias è cc: ed che è abbastanza comune (cioè: "Rispondi a tutti"), l'e-mail viene recapitata in duplicati. Ad esempio, se un'e-mail viene inviata a all@mydomain.com e foo@mydomain.com è cc: ed, verrà consegnata due volte. Secondo le FAQ di Postfix , questo è in base alla progettazione poiché Postfix invia e-mail in parallelo senza espandere i gruppi, il che lo rende più veloce di sendmail. Ora va tutto bene e dandy, ma è possibile configurare Postfix per rimuovere effettivamente i destinatari duplicati prima di inviare l'e-mail?

Ho trovato molti post di persone in tutta la rete che hanno lo stesso problema, ma devo ancora trovare una risposta. Se ciò non è possibile in Postfix, è possibile farlo da qualche parte lungo la strada? Ho provato a educare i miei utenti, ma è piuttosto inutile temo ...

Sto eseguendo postfix su Mac OS X Server 10.6, amavis è impostato come content_filter e dovecot è impostato come mailbox_command. Ho provato a configurare procmail come content_filter per la consegna smtp (come da suggerimento di seguito), ma non riesco a farlo bene. Per vari motivi, non posso sostituire la configurazione standard di OS X, il che significa che postfix, amavis e dovecot rimangono in sospeso. Posso comunque aggiungerlo se lo desidero.


Penso che non sia proprio possibile ...
Antoine Benkemoun,

Sto davvero iniziando a credere che tu abbia ragione Antoine.
Marcus Stade,

Beh, quello è stato uno spreco di una taglia ...
Marcus Stade,

2
hai mai trovato una soluzione per questo? Sto avendo lo stesso problema.
Tommy Arnold,

Risposte:


4

Postfix non ha idea di e-mail duplicate a causa del modo in cui è strutturata. È possibile fare ciò che stai suggerendo utilizzando procmail come agente di consegna.

In sostanza, ogni messaggio proveniente da un client dovrebbe essere recapitato con un ID messaggio univoco. Nel caso in cui venga consegnato a più persone, l'ID messaggio dovrebbe essere lo stesso, quindi salviamo tutte le Message-Idintestazioni che abbiamo visto e scartiamo e quelle future che corrispondono a tale elenco.

Da http://novosial.org/procmail/

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

Se capisco correttamente il problema, non è possibile risolverlo in Postfix perché Postfix invia le e-mail in parallelo, ovvero invia a foo@mydomain.com allo stesso tempo in cui si espande all@mydomain.com e poi di nuovo invia a foo@mydomain.com. La soluzione Procmail non introdurrebbe quindi una condizione di competizione in cui un'altra e-mail non correlata (con un diverso ID messaggio) viene inviata tra le due e-mail in questione e sovrascrivendo così la cache in modo che le e-mail duplicate siano consegnato comunque?
Marcus Stade,

Sto cercando di far funzionare il tuo suggerimento, ma non sono sicuro di come combinarlo con la consegna dovecot, che viene utilizzata da OS X 10.5+ per impostazione predefinita.
Marcus Stade,

Se stai usando dovecot come agente di consegna, puoi usare procmail come un content_filterche ti consentirà di eseguire la stessa attività a livello globale
Philip Reynolds,

Devo confessare che probabilmente sono sopra la mia testa qui. Mi sono fissato cieco sulla pagina dei parametri di configurazione per postfix e ho cercato su Google fino a sanguinare le dita, ma non riesco a capire come configurarlo. Qualsiasi risorsa tu possa conoscere o spingere nella giusta direzione sarebbe davvero apprezzata!
Marcus Stade,

Penso di capire come funziona ora, ma c'è già un content_filter impostato su amavis. Questo sembra essere una sorta di controllo antivirus. Ho letto che è possibile concatenare content_filters, ma sembra piuttosto non intuitivo e la documentazione è meno che stellare. È davvero ridicolo quanto sia difficile estirpare e-mail duplicate. Indipendentemente dal design, mi sembra che dovrebbe essere lì fuori dalla scatola o almeno non richiedere questi hack mostruosi.
Marcus Stade,

3

C'è un modo per farlo, ma non usando Postfix stesso.

Se si utilizza un'implementazione Dovecot abbastanza recente con Pigeonhole di Sieve , è disponibile un'estensione speciale che può essere utilizzata per la deduplicazione alla consegna. In Dovecot precedente alla 2.2.18, il nome di questa estensione è "vnd.dovecot.duplicate" ed è disabilitato per impostazione predefinita, nelle versioni più recenti l' estensione è chiamata "duplicata" e dovrebbe essere già abilitata, ma abilitandola esplicitamente non danno.

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

Quindi crea lo script setaccio per gestire la deduplicazione stessa (puoi regolare il nome file come ritieni opportuno).

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

Compilare lo script usando sievec e assicurarsi che lo script sia leggibile dall'utente dovecot .Altro nei documenti Dovecot.

Se si utilizza Cyrus, esiste una funzione di soppressione del recapito dei messaggi duplicata che può essere abilitata tramite suppress_duplicates = yes.


Grazie mille per aver sottolineato questo meccanismo. Quella sensazione di "trovare un ago in un pagliaio".
lkraav,

Scoperte durante l'implementazione: l' duplicateestensione funziona a livello di utente. Stavo cercando di bloccare i duplicati su più utenti verso / Cc-d in una fileintocassetta postale centrale . Questo non funziona Dovevo anche impostare una virtual_alias_mapsvoce catch-all postfix , come ad esempio @domain.com catchall@domain.com, il controllo duplicato del setaccio colpirà catchalll'elenco duplicato dell'utente.
lkraav,

Sì, è molto simile alla sensazione di "trovare un ago in un pagliaio"
Net Runner


0

Questo è da alcune vecchie domande frequenti postfix:

Postfix invia messaggi duplicati Alcune persone si lamentano che Postfix invia messaggi duplicati. Ciò accade ogni volta che un messaggio viene inviato a più indirizzi che raggiungono lo stesso utente. Esempi di tali scenari sono:

  • Un messaggio viene inviato all'utente e a un alias che elenca l'utente. L'utente riceve direttamente una copia della posta e una copia tramite l'alias.

    • Un messaggio viene inviato a più alias che elencano l'utente. L'utente riceve una copia della posta tramite ogni alias.

Alcune persone sosterranno addirittura che questo è il comportamento "giusto". Probabilmente è più una questione di aspettativa e di cosa si è abituati.

Questo può essere "risolto" solo rallentando Postfix. Negli esempi sopra, Postfix dovrebbe prima espandere completamente tutte le liste di distribuzione prima di iniziare qualsiasi consegna. In base alla progettazione, Postfix consegna la posta verso diverse destinazioni in parallelo e la consegna locale non fa eccezione. Ecco perché Postfix può essere più veloce di sendmail.

Quindi, in base alla progettazione, stai vedendo quel comportamento. Forse se trovi un filtro di contenuto in grado di rimuovere gli ID dei messaggi duplicati, puoi eliminarlo dopo l'evento di consegna.

Sendmail non ha questo problema perché espande prima tutto e rimuove i duplicati.


Sì, l'ho letto, forse avrei dovuto aggiornare la mia domanda. In base alla progettazione o meno, è ancora un problema. Capisco perché si sta comportando in questo modo e capisco che cercare di trovare una soluzione in Postfix è inutile. Tuttavia, ho provato a trovare una soluzione di filtro dei contenuti utilizzando Procmail e non riesco proprio a farlo bene. È molto probabile che non capisca correttamente i filtri di contenuto o procmail, o entrambi. In entrambi i casi, vorrei ancora risolvere questo problema. Sfortunatamente, l'installazione così com'è non può essere modificata, ma solo aggiunta. Purtroppo non posso usare sendmail al posto di postfix.
Marcus Stade,

Ho aggiornato la domanda con qualche informazione in più ma onestamente, il link alle FAQ era lì per cominciare. Apprezzo comunque ogni suggerimento utile!
Marcus Stade,

Non mi rendevo conto che era un collegamento allo stesso contenuto. Lavorando nella sicurezza IT, diventi piuttosto paranoico nel fare clic su collegamenti casuali. Puoi confermare che i messaggi duplicati hanno gli stessi ID messaggio?
jeffatrackaid,

È stata una lunga giornata, quindi ho bisogno di rivedere il tuo post originale, ma che dire di questo: postfix.org/postconf.5.html#duplicate_filter_limit
jeffatrackaid

Posso davvero confermare che i messaggi duplicati hanno gli stessi ID messaggio. L'impostazione di duplicate_filter_limit non aiuta nulla, sfortunatamente.
Marcus Stade,

0

La soluzione ufficiale è qui .. http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html

duplicate_filter_limit (10000) Il numero massimo di indirizzi ricordato dai filtri duplicati del destinatario per gli alias (5) o l'espansione degli alias virtuali (5) o per le visualizzazioni della coda showq (8) (con le versioni precedenti di Postfix il limite predefinito era 1000).

duplicate_filter_style (rigoroso) La politica di filtro dei destinatari duplicati: rigorosa o pragmatica.


1
Questo non sembra fare nulla ...
Grufftech,

postfix.1071664.n5.nabble.com/… afferma che questo non è mai stato implementato
Yanko Hernández Álvarez

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.