Fórum Ubuntu CZ/SK

Ostatní => Ubuntu Server => Téma založeno: mr.p 29 Března 2015, 13:40:17

Název: Jak kontrolovat zda byl email odeslán
Přispěvatel: mr.p 29 Března 2015, 13:40:17
Zdravím,

na serveru mi běží webová aplikace, která odesílá emaily. Chtěl bych tu appku rozšířit ještě o kontrolu zda by email opravdu odeslán ze serveru.

Zatím mě napadlo pouze jediné řešení. A to takové, že bych parsoval mail.log a vytáhl si tak info pro konkrétní email.

Je tohle dobrá cesta nebo existuje i jiné lepší řešení?
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: ntz_reloaded 29 Března 2015, 13:57:33
je to jedine logicke reseni
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: donny 29 Března 2015, 21:57:48
Je nejaky duvod, proc neveris navratovemu kodu (resp. vyhozeni vyjimky) u odesilaci fce?
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: mr.p 02 Dubna 2015, 17:33:35
Je nejaky duvod, proc neveris navratovemu kodu (resp. vyhozeni vyjimky) u odesilaci fce?

No funkce mail v php totiž vrací jen boolean hodnotu zda se mu podařilo dokončit operaci (tedy předání dat emailovému klientovi). Já bych chtěl vědět, zda email byl odeslán ze serveru nebo jestli byl odmítnut druhou stranou jako neexistující apod.
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: ntz_reloaded 02 Dubna 2015, 17:37:12
to je vsechno v tech logach
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: mr.p 02 Dubna 2015, 18:18:06
Ano, jenže od doby co jsem sem psal, tak jsem neměl pořádně čas se na to kouknout.

Co jsem zatím vymyslel jako řešení tak napsat jednoduchý bash script a dát ho do cronu, který grepem vytáhne řádky, který hledám, ty zapsat do souboru a v php pak parsovat ten soubor. Musel by samozřejmě kontrolovat datum, kdy byl spuštěn naposled, abych netahal stejný řádky znova.

Zatím mám jen tohle:
Kód: [Vybrat]
grep 'postfix/smtp\[.*status=' /var/log/mail.logProtože řádek v logu, který mě zajímá vypadá takto:
Kód: [Vybrat]
Apr  2 18:03:59 vm11268 postfix/smtp[28432]: 3A532735: to=<example@seznam.cz>, relay=mx1.seznam.cz[77.75.76.42]:25, delay=2.2, delays=0.07/0.01/1/1.1, dsn=2.0.0, status=sent (250 2.0.0 Mail 44697760 queued for delivery in session 70a500000062.)
Akorát mě trápí, že to vytáhne celý řádek. Jak bych to měl udělat, aby text, který nechci zahodil?

Ještě jsem koukal na sed. Ten by mohl být taky použitelný.
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: Petr Merlin Vaněček 08 Dubna 2015, 14:49:26
Anebo si napsat vlastní e-mailový klient ...
Název: Re:Jak kontrolovat zda byl email odeslán
Přispěvatel: ntz_reloaded 08 Dubna 2015, 16:19:54
co treba pouzit pflogsum ????