wtorek, 5 sierpnia 2008

Postfix - Domeny Virtualne

Często osoby się mnie pytają jak zrobić obsługę domen virtualnych w postfixie. Dziwię się trochę bo to naprawdę jest banalnie proste.

Pamiętajmy o jednym. W postfixie jest tak, że użytkownik@domena1.pl nie jest tym samym kontem co użytkownik@domena2.pl tak jak to miało miejsce w sendmailu. Oczywiście może tak być ale pod warunkiem, że go o tym powiadomimy.

A więc tak w pliku konfiguracyjnym /etc/postfix/main.cf no chyba, że twoja konfiguracja jest gdzieś indziej - robimy tylko JEDEN dodatkowy wpis a mianowicie:
virtual_maps = hash:/etc/postfix/virtual
no jasne może się on również dowolnie nazywać to juz nie moja w tym głowa. Teraz zapisujemy zmiany i tworzymy plik virtual no lub jak go sobie wymyślimy.
W tym pliku zamieszczamy w pierwszej linijce nazwe domeny i komentarz (cos obojętnego) a w następnych linijkach konfigurujemy aliasy. Przykładowo:

domena2.pl to jest domena druga
dyrek@domena2.pl kazek
sekretarz@domena2.pl basia
opinie@domena2.pl basia

Tak więc widzimy ze poczta na dyrek leci do pana kazka a z sekretarza i opinie lecą do pani basi.

Na koniec całej tej zabawy pozostaje wydać komendę:
postmap /etc/postfix/virtual
oraz zrestartować postfixa
/etc/init.d/postfix reload

niedziela, 3 sierpnia 2008

mod_rewrite

Czasem zastanawiasz się, patrząc na swój serwis WWW, że adresy linków w Twoim serwisie nie są ani przyjazne ani przyjemne nie tylko dla oka ale na pewno już nie sposób ich zapamiętać. Pomyśl, gdyby można było zamiast odnośnika:

http://mojastrona.pl/promocje/pokaz.php?r=1435

sprowadzić to do następującej prostej postaci:
http://mojastrona.pl/promocje/1435

Jak nie patrzeć to teraz jest o wiele lepiej. To właśnie dzięki mod_rewrite możemy skorzystać w prosty sposób z takiej opcji. Oczywiście to nie jedna zaleta mod_rewrite gdyż dzięki temu modułowi możemy również ukryć niechciane parametry języka php.

No ale do rzeczy. Jak włączyć mod_rewrite w apache2:

w pliku /etc/apache2/sites-available/default w sekcji

Directory /
Options FollowSymLinks
AllowOverride FileInfo
/Directory

oraz

Directory /var/www/
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo
Order allow,deny
allow from all
/Directory

oraz nieco ponizej dopisujemy

IfModule mod_rewrite.c
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 9
/IfModule

Polecam również stworzyć sobie jakąś rotacje tego loga albo pominąć tą opcje.
Teraz pozostaje nam jeszcze włączyć faktyczny moduł do apache2

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

już w zasadzie mamy komplet do działania restart apache2 i do dzieła

sudo /etc/itit.d/apache2 restart

jak nie posypało błędami to jest nieźle

Jeśli chcemy skrócić nasz adres tak jak pisałem na początku, musimy utworzyć plik .htaccess w którym zamieścimy parę linijek. Jak łatwo zauważyć są to głównie wyrażenia regularne perla.


RewriteEngine On
RewriteRule ^pokaz/([0-9][0-9])/$ pokaz.php?id=$1


Jak łatwo można zauważyć taka linijka zamieni nam końcówkę adresu ale tylko w wypadku kiedy ta będzie liczbą.


RewriteEngine On
RewriteRule ^pokaz/([0-9][a-zA-Z]+)/$ pokaz.php?id=$1


Zrobi w zasadzie to samo ale też zamieni nie tylko liczby lecz także litery.
Oczywiście przykładów można by mnożyć. Jeśli tylko w miarę zna się wyrażenia regularne perla można wiele osiągnąć.

Uwaga!!! Należy pamiętać o tym że ostatnia linijka pliki .htaccess powinna być pusta. Tak więc proszę dawać Enter na końcu pliku