Dovecot mail duplikáció [Megoldva]

Üdv,

Egy olyan problémám lenne, hogy van 5 db. fiókom (A,B,C,D,E) és most mindegyikben van egy script ami elküldi az egyik fiókba érkező levelet
a többi fiókba.
Ez eddig egyszerű. Na de, ha jön egy levél amelyikben a To mezőben van két fiók is, mondjuk A,B akkor A elküldi B-nek és B elküldi A-nak.

Ezt a duplikációt kell megszüntetnem.

A felállás Postfix + Dovecot + Virtual Users MySql adatbázisban, a levelek kezelését sieve script végzi.

Nagyon szívesen fogadok bármilyen ötletet. Mert nekem már nincs.

Szerk.:

Most már van egy ötletem, azaz írok egy olyan sieve scriptet ami a To mezőt végignyálazza, és csak az első címzettnek tartja meg a levelet a
többinél eldobja, mert az elő úgyis tovább küldi.

Ha valaki tud sieve-űl akkor segítene nekem ?

Eddigi ötlet:

require ["regex", "variables"];

if :regex ["To", "Cc", "Bcc"] "[a-z]*@domain.hu"
{
if :is "${1}" "keresett@domain.hu"
{
keep; /* itt az első helyen találta meg */
}
else
{
discard; /* itt valahol máshol */
}
}

Ez csak azért ötlet, mert a mostani dovecot implementációm 1.1.11, és a "variables" extension-höz 1.2 kellene.

Ha el tudnám hagyni a variables-t akkor az nagyon jó lenne, van valakinek valami ötlete, hogy hogyan lehet :

Egy kifejezésben regex-el visszakapni CSAK az első találatot ?

Előre is köszönöm.

Szerk2.:

A megoldás, az hogy a sieve-et el kell felejteni, legalábbis amíg nincs kész az edtiheader pluginja.
Mivel a Postfix azért hogy gyorsabb legyen, mint a Sendmail a leveleket párhozamosan ás állapot tartás
nélkül továbbítja.
Tehát közbe kell iktatni a postfix és a dovecot közzé a procmail-t.

postfix master.cf-be:
procmail unix - n n - - pipe
-o flags=RO user=vmail:mail argv=/usr/bin/procmail -t -m USER=${user} SENDER=${sender} RECIPIENT=${recipient} EXTENSION=${extension} /etc/procmailrc

postfix main.cf-be:
#mailbox_command =
virtual_transport = procmail

/etc/procmailrc-be (0640):
SHELL=/bin/bash
LOGFILE="/var/log/procmail.log"
ORGMAIL="/var/vmail/$DOMAIN/$USER"
MAILDIR="/var/vmail/$DOMAIN/$USER"
DEFAULT="$MAILDIR/"
DELIVER="/usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -f $SENDER "
SENDMAIL="/usr/sbin/sendmail"

:0 Whc: msgid.lock
| formail -D 8192 /var/vmail/$DOMAIN/msgid.cache # fontos, hogy globális legyen különben nem találja meg a duplikációkat

:0 a:
/dev/null

:0
* ^TO_valaki@domain.hu
{
:0 wc
| $DELIVER -d $RECIPIENT
:0 wc
| $DELIVER -d valaki2@domain.hu
:0 wc
| $DELIVER -d valaki3@domain.hu
:0 wc
| $DELIVER -d valaki4@domain.hu
:0 wc
| $DELIVER -d valaki5.peter@domain.hu
:0 wc
| $DELIVER -d valaki6@domain.hu
SWITCHRC=
}

és ezekből a megfelelő (ez azt jelenti, hogy az alacsonyabb szint előrébb) mennyiségű és kész is. :)

Persze ha valaki tud jobbat, vagy gyorsabbat, nagyon szívesen elolvasom.

Hozzászólások

Miért nem postfix-el csinálsz több aliaszt? Bár a duplikáció az megmarad, hiszen két to van, akkor kétszer kell küldeni.

Legrosszabb esetben beleírod a scriptbe, hogy ellenőrizze a message-id-t, és ha az már megvan a másik mailboxba, oda ne kézbesítse. Jobb helyeken ezt a levelezőrendszer elintézi.

suckIT szopás minden nap! Solaris Itaniumon

Találtam ilyet, hogy ungreedy regex, de ezt csak pár nyelvre találtam példát, ez azt jelenti, hogy ez a mód egy
nem szabványos kiterjesztése a.... (POSIX szabványban található reguláris kifejezés elemzőnek ?)