Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: TOMeek 30 Března 2016, 22:26:55

Název: Bash zachycení emailu
Přispěvatel: TOMeek 30 Března 2016, 22:26:55
Zdravím,
měl bych dotaz. Mám pár klientů s www stránkami, ale někteří to přehánějí s posíláním emailů přes PHP sktipt (není to spam, ale na můj vkus už to přehánějí) proto bych si rád napsal nějaký mezistupeň mezi poslání emailu a sendmail, kde bych si ověřil zda doména xy neposlala za posledních třeba 10 min více než emailů. Problém je, že pokud napíšu skrypt tak se sice email odešle, ale třeba připojení k DB, které by mi to ověřilo už se neprovede. Mám to nějak takto:
Kód: [Vybrat]
#!/bin/bash

... přiopjení na mysql a ověření ...

/usr/sbin/sendmail -t -i

V configu apache mám u dané domény doplněk :
Kód: [Vybrat]

<VirtualHost *:80>
    ...

    php_admin_value sendmail_path "/usr/local/sbin/sendmail.sh domenaxy.cz"
</VirtualHost>
Viděl jsem něco podobného v Pythonu, ale je to už z roku 2012 a funkčnost byla všeljaká. Tak bych potřeboval poradit, zda něco podobného v bashi vůbec de nebo zda je lehčí cesta než vlastní script.
Název: Re:Bash zachycení emailu
Přispěvatel: Petr Merlin Vaněček 31 Března 2016, 09:48:14
Jde a bash je dle mého ta nejjednodušší cesta.
Proč by Ti to neprovedlo ověření v DB? Jen nevíš jak z bashe na select z DB?
Název: Re:Bash zachycení emailu
Přispěvatel: TOMeek 01 Dubna 2016, 08:44:30
Vím, jak na dotaz v bashi, ale přijde mi, že to prostě přeskočí vše co je před tím sendmailem a provede to jen ten příkaz. Dokonce i když si dám před ten sendmail něco jako
Kód: [Vybrat]
echo "Test" > log.txt tak to nic nezapíše a jen se provede ten sendmail.
Název: Re:Bash zachycení emailu
Přispěvatel: Petr Merlin Vaněček 01 Dubna 2016, 08:59:17
A jsi si jist, že to ten script vůbec zavolá?
Občas taky využívají různe redakční systémy apod. ne php příkaz mail, ale vlastní verzi, která se připojuje na definovaný SMTP přes protokol.
Název: Re:Bash zachycení emailu
Přispěvatel: TOMeek 01 Dubna 2016, 09:05:16
Tady na to mám testovací soubor jen s prostou funkcí mail();
Pokud v tom bashi ten řádek zakomentuju, tak se email nepošle, takže předpokládám, že se to odesílá přes něj.
Název: Re:Bash zachycení emailu
Přispěvatel: Petr Merlin Vaněček 01 Dubna 2016, 09:15:56
Zkus

Kód: [Vybrat]
echo "Test" > /tmp/log.txt

S jakými právy se spustí ten script?
Název: Re:Bash zachycení emailu
Přispěvatel: TOMeek 01 Dubna 2016, 09:22:48
Áha, práva to mě nenapadlo.
Na soubor mám: -rwxrwxr-x 1 root root   66 dub  1 09:20 sendmail.sh a předpokládám, že to pouští www-data když PHP běží přes apache.
Název: Re:Bash zachycení emailu
Přispěvatel: Petr Merlin Vaněček 01 Dubna 2016, 10:27:04
Na soubor jsou asi jedno (tedy pokud explicitně nezakazují), ale jde o to, zda uživatel www-data má práva udělat to, co po něm chceš.
Co ten výstup do tempu, už to projde?
Název: Re:Bash zachycení emailu
Přispěvatel: TOMeek 01 Dubna 2016, 10:45:40
Ano do tempu už to projde bez problému.
Tím jsem se posunul dál.
Díky za rady.
Název: Re:Bash zachycení emailu
Přispěvatel: Petr Merlin Vaněček 01 Dubna 2016, 10:48:46
Nz, dej pak vědět :)