Fórum Root.cz

Hlavní témata => Server => Téma založeno: undefined 09. 09. 2014, 13:40:42

Název: Postfix: skript při přijetí pošty
Přispěvatel: undefined 09. 09. 2014, 13:40:42
Dobrý den,
potřeboval bych radu zkušeného sysadmina :)

Mám nakonfigurovaný postfix s virtuálními uživateli (v mysql).
Potřeboval bych detekovat okamžik, kdy uživateli přijde nový e-mail a na základě toho provést nějakou reakci. Script, který by se měl spouštět při nově příchozím e-mailu by měl dostat minimálně hlavičky (od koho mail je a pro koho je).

Zkoušel jsem řešení co je zde http://blog.thecodingmachine.com/content/triggering-php-script-when-your-postfix-server-receives-mail
které by bylo OK až na malou drobnost - e-mail "skončí" v tom scriptu a už nespadne samozřejmě do mailboxu, což je nežádoucí.

Hodilo by se mi podobné řešení, s tím, že e-mail do mailboxu dorazí.

Za Vaše rady/tipy předem děkuji.
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: aaa 09. 09. 2014, 14:31:25
Hack od hobby sysadmina (nie "fotka"):
Kód: [Vybrat]
cat email | $SENDMAIL "$@"
Na lepsie riesenie si asi budes musiet pockat.
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: anonym 09. 09. 2014, 14:34:09
co presne si zkousel v tom postfixu?

podle me by melo jit si ten svuj skript zahookovat jako filter, kterej na kazdou zpravu odpovi kladne. postfix se potom postara o to ze to preda dal

nikdy sem to ale prakticky nezkousel, takze to neni jisty
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: David1234 09. 09. 2014, 14:40:57
Na tyhle věci se používá procmail...
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: undefined 09. 09. 2014, 15:02:52
Ok, řešení od aaa by asi s některými úpravami použít šlo, ale zajímá mě, davide tvoje řešení.
Mohl bys až budeš mít chvilku zastavit se na IRC? Na autistech jsem tě nenašel :)) Jsem na starém.

Díky, b.
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: anonym 09. 09. 2014, 15:40:31
Procmail bych uplne nevidel, teda zalezi na tom co chces

pokud to chces globalne tak spis filterem v postfixu, pokud to chces per-user tak procmail/sieve
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: undefined 09. 09. 2014, 16:17:19
Nezlobte se na mě, ale proč si nepřečtete ten původní dotaz víckrát, ... než mu porozumíte? S prominutím, platí to trochu i pro pana Krčmáře - nepoptávám odpověď na script pro příjem pošty (jak bylo toto vlákno upraveno).

Zkusím to ještě jednou -

1) poštu příjmám. Potřebuji řešení, které mi dá vědět, že uživatel xyz@domain má v INBOXU nový e-mail od abc@anotherdomain.
2) filtry postfixu jsem použil, viz "Zkoušel jsem řešení co je zde http://blog.thecodingmachine.com/content/triggering-php-script-when-your-postfix-server-receives-mail, které by bylo OK ..."

v master.cf jsem testoval něco podobného

Kód: [Vybrat]
tester unix - n n - - pipe
  flags=F user=www-data argv=/tmp/postfix/test.php ${sender} ${recipient}

smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=tester:dummy


3) problém je v tom, že pokud si nastavím jako content_filter svůj script, tak ten přijme na stdin e-mail, který už se už neuloží do mailboxu. Jak jsem po konsultaci s 'aaa' zjistil, je možné si v mém scriptu zavolat sendmail, kterému e-mail předám a znovu ho pošlu. V tutu chvíli by podle dokumentace neměl znova procházet chainem a neměl by na něj být aplikovaný znova content_filter.

Řešení (viz bod 3) by mohlo být považováno za funkční, avšak nepřijde mi to jako úplně čisté řešení. Jelikož používám PHP, mohl bych ten e-mail přes imap funkce i do toho mailboxu appendovat. Ale to je snad ještě horší řešení. Hledám nějaký čistší způsob.

Děkuji a omlouvám se pokud jsem původní dotaz napsal nesrozumitelně.
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: MP 09. 09. 2014, 16:20:11
Co treba pouzit sieve, jako napr. v: http://wiki2.dovecot.org/Pigeonhole/Sieve/Plugins/Pipe ?
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: undefined 09. 09. 2014, 16:26:57
Co treba pouzit sieve, jako napr. v: http://wiki2.dovecot.org/Pigeonhole/Sieve/Plugins/Pipe ?

To vypadá že by mohlo být řešením. Díky!
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: Dzavy 09. 09. 2014, 16:36:04
A nebo muzes zkusit pouzit always_bcc, ktere bude smerovane pres mailbox_command_maps do toho skriptu.
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: j 09. 09. 2014, 19:44:46
Jen takovej nastrel z voleje, ale pouzivas amavis? Byva pouzivanej dost casto. Je to takovej "superscript", kterej ma obsahlou konfiguraci, umi pomalu zavazovat i tkanicky ... takze predpokladam, ze nebude mit zadnej problem poslat ti v ramci pruchodu mail.

Pokud dobre vidim, v konfiguraku sekce IV - Notifications.

Jinak konfigurace vypada asi takhle:
content_filter = smtp-amavis:[127.0.0.1]:10024

:D
Název: Re:Postfix: skript při přijetí pošty
Přispěvatel: Dusan27 09. 09. 2014, 22:14:52
http://www.postfix.org/MAILDROP_README.html (http://www.postfix.org/MAILDROP_README.html)
http://gogs.info/books/debian-mail/chunked/utilities.html#utilities.maildrop (http://gogs.info/books/debian-mail/chunked/utilities.html#utilities.maildrop)