Postfix feltételes charset rewrite

Hello,

Belefutottam egy olyan problémába, hogy Postfix-szel kellene megoldani azt, hogy egy bizonyos feladó esetén a levél kódolását át kellene állítani utf8-ról iso-8859-2-re.

A /etc/postfix/header_checks file-ba próbáltam a REPLACE-t, de nem sok sikerrel, pl:
/^From: XYFelado/i REPLACE Content-Type: text/html; charset="utf8" charset="iso-8859-2"

Bárhogy próbálkozom, nem sikerül elérni, hogy átírja Content-Type-nál az utf8-at iso8859-2-re, belekerül mindkettő és nem jelenik meg a levélből semmi.
Hogy lehet ezt megoldani?
Google-t már kérdeztem, de ilyen összetettebb példával nem találkoztam sehol.

Előre is köszönöm a segítséget!

Hozzászólások

A Replace a man oldal szerint az aktuális sort cseréli le:

REPLACE text...
Replace the current line with the specified text, and inspect
the next input line.

Elvileg Milterből simán tudsz fejléceket cserélni, de csak tipp. (legalábbis a pymilter-ben a Milter.Base-nek van chgheader-je)

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

azert ertjuk is, mit csinalunk? Adott egy utf-8-as melleklet, ami nyilvan utf-8-as kodolasu (de fixme). Namost ha a content-type-ban atirod iso-8859-2-re, akkor a mail kliens nem tudja (korrekten) megjeleniteni...

--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)

Adott egy utf-8-as melleklet, ami nyilvan utf-8-as kodolasu

Azért előferdül, hogy a kliens retardált, és rossz mime type-ot küld (pl. egy printer, ami vígan elfogad [sőt: kér] UTF-8 szöveget a webes felületén, aztán becsapja a mailbe "us-ascii" charsettel). Legalábbis nekem ez jött át az eredeti kérdésfeltevésből.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

ilyen osszetett feltetelt nem tudsz csinalni, mert a postfix mindig csak az aktualis sort nezi, azaz mire a content-type-hoz er, mar nem is emlekszik ra, hogy ki volt a felado.

En ugy csinalnam meg, felteve, hogy a feladat tenyleg ertelmes, hogy /From: felado/ FILTER whatever, majd a 'whatever' filter lecsereli az utf8-at iso-8859-2-re.

--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)

Köszi, elindultam a FILTER-rel, de sajnos megakadtam.
Beállítottam ezt a filtert:
cat header_checks
/^From: Felado/i FILTER smtp:[127.0.0.1]:20025

Megcsináltam a bejegyzést a master.cf-ben:

127.0.0.1:20025 inet n - n - - smtpd
-o header_checks=pcre:/etc/postfix/header_checks_chchar
-o content_filter=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_restriction_classes=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings
-o local_header_rewrite_clients=
-o smtpd_milters=
-o local_recipient_maps=
-o relay_recipient_maps=

$ cat header_checks_chchar

/^Content-Type:/ IGNORE
/^Message-Id:/i PREPEND Content-Type: text/html; charset="iso-8859-2"

Amennyiben nincs jelen a "no_header_body_checks", akkor a levél körbe-körbe megy, átveszi a 20025-ös porton és újra bedobja a 20025-ös portra, valahány próbálkozás (kb 50) után eldobja, hogy "too many hops".
Ha van, akkor átveszi a levelet és nem csinál vele semmit, kiküldi,de nem változik a header.

Egyenlőre nem sikerült rájönnöm, hogy mi lehet a hiba.

PS:
A levelet egy alkalmazás küldi úgy, hogy a törzse iso-8859-2, de a header-be szívfájdalom nélkül beleírja, hogy utf-8 a kódolás.
Kézzel átállítva minden ékezetes karakter a helyére kerül.

Nem lehetne az alkalmazást javítani? :)

Nem tudom pontosan, hogy milyen parancsokkal, de nyiss egy új portot, a bejövő kapcsolatokat told át grepen és onnan az igazi smtp portra, az alkalmazásban meg cseréld le az smtp portot erre a kamu portra.

Én általában azt vallom, hogy hekkelést másik hekkeléssel javítani nem bűn, de akkor minimális hatósugárral támadjunk.

--