Ü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.