Nainstaloval jsem Ubuntu 11.04, LAMP pomocí taskel.
Zjistil jsem, že PHP mail()
nefunguje.
Asi to musím povolit nebo co? Jak to udělám?
Nejlepší odpověď
Z poštovní příručky php:
Požadavky
Aby byly funkce pošty
dostupné, vyžaduje PHP nainstalovaný
a funkční e-mailový systém. Program
, který se má použít, je definován
konfiguračním nastavením v souboru php.ini
.
To znamená, že musíte nainstalovat nějaký poštovní server a nakonfigurovat php, aby jej používal. Obvykle je tento poštovní server postfix v Ubuntu. Nicméně – pokud bude php strana, kterou kódujete, nakonec uložena na straně hostingové služby (např. xmission), bude zde s největší pravděpodobností již nainstalován poštovní server. V takovém případě otestujte své stránky online namísto lokálně.
Pokud jej potřebujete otestovat na svém vlastním systému nebo hodláte hostovat na svém vlastním domácím serveru, pokračujte:
Instalace Postfixu
Instalace:postfix / sudo apt-get install postfix
Během procesu budete dotázáni, v jakém režimu chcete nainstalovat postfix. Existují čtyři možné režimy:
- Internet :Váš vlastní poštovní server.
- Satelitní :Pro odesílání a přijímání pošty bude použit externí poskytovatel pošty (např. Google). Server nebude přijímat žádnou poštu.
- Smarthost :Směs mezi těmito dvěma. Pošta je uložena lokálně, ale odesílá se prostřednictvím externího poskytovatele pošty.
- Pouze místní :Nebude se vás týkat. To je systémový interní poštovní server. V systému můžete odesílat poštu pouze od uživatele k uživateli.
Zbývající možnosti instalace závisí na vaší volbě této obecné konfigurace.
S největší pravděpodobností zvolíte satelitní instalaci. To znamená, že pošta bude odeslána pomocí externího poskytovatele. Jako smtp-server (server odchozí pošty) pak budete muset zadat své poskytovatele smtp. Zbývající možnosti jsou samozřejmé.
Konfigurace po instalaci
Většina smtp serverů vyžaduje pro odesílání pošty ověření heslem. Postfix tedy bude muset znát toto heslo. Také je třeba zvážit věci, jako je šifrování (které budete muset vygooglovat). Takto konfigurujete postfix pomocí ověřování heslem (sasl):
-
Nainstalujte moduly libsasl2 a sasl2-bin kliknutím na ikony Centra softwaru nebo z terminálu pomocí:
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
-
Povolte sasl-auth přidáním těchto řádků do
/etc/postfix/main.cf
# add to /etc/postfix/main.cf smtp_sasl_auth_enable = yes smtp_sasl_security_options = noplaintext noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
-
Vytvořte soubor
/etc/postfix/sasl_password
s řádkem jako:smtp.gmail.com [email protected]:USERPASSWORD
Nahraďte skutečné heslo, uživatelské jméno a smtp-adresu.
-
Aktualizovat postfix:
sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password sudo postmap hash:/etc/postfix/sasl_password sudo postmap /etc/postfix/sender_canonical sudo /etc/init.d/postfix restart
Možná budete muset obejít chybu „povolení odepřeno“ pomocí
chown postfix:postfix /etc/postfix
předem.
To by mělo fungovat ve většině případů. Přesto někteří poskytovatelé smtp vyžadují specifickou adresu jako odesílatele nebo šifrování.
Související:PEAR::Mailové rozhraní by vás také mohlo zajímat.
Gmailu (a možná i dalším službám) se nemusí líbit, že se pokoušíte odeslat poštu tímto způsobem, protože by to mohlo být podle jejich standardů považováno za nezabezpečené a váš pokus by zablokovalo, tj. vaše ověření. Také váš POP3 musí být povolen.
Chcete-li tomu zabránit, viz zde. (Pokud chcete být na bezpečné straně, vytvořte si falešný účet Gmail)