vortal internetowy
artykuły
Powrót do listy artykułów
Temat artykułu: Poczta przez WWW - Instalacja systemu webmail-owego
Tekst napisał pitt2k dnia 08-01-2004
Tym razem zajmiemy się instalacją oprogramowania służącego do obsługi poczty przez
przeglądarkę WWW. Będziemy to robili na systemie Debian Woody, ale nic nie stoi
na przeszkodzie wykorzystać inny system operacyjny np. Linux RedHat czy Windows.
Bez zbędnych wstępów przechodzimy do konkretów.
Co nam jest potrzebne
?
- Debian Woody ;)
- Sendmail (w miare nowy)
- Apache z
obsługą PHP
- MySQL
No, wiec kiedy już mamy powyższy soft
zainstalowany i działający ;) możemy przejść do instalacji systemu
webmail-owego.
Musimy zaopatrzyć się w następujący soft:
- HORDE
2.2.3 - http://ftp.horde.org/pub/horde/horde-latest.tar.gz
- PEAR 1.1 -
http://ftp.horde.org/pub/pear/pear-1.1.tar.gz
- IMP 3.2.1 -
http://ftp.horde.org/pub/imp/imp-latest.tar.gz
- TURBA 1.2 -
http://ftp.horde.org/pub/turba/turba-latest.tar.gz
Pobranie softu z
netu:
mkdir /opt/download
cd /opt/download
wget
http://ftp.horde.org/pub/horde/horde-latest.tar.gz
wget
http://ftp.horde.org/pub/pear/pear-1.1.tar.gz
wget
http://ftp.horde.org/pub/imp/imp-latest.tar.gz
wget
http://ftp.horde.org/pub/turba/turba-latest.tar.gz
Instalacja
PEAR 1.1
UWAGA: Z tego co pamiętam, to PEAR w systemie RedHat (i
jemu podobnych) leży w katalogu /usr/local/lib/php !!!
cd
/usr/share/pear
tar xzf /opt/download/pear-1.1.tar.gz
mv pear-4.1.0
pear
Najlepszą metodą instalacji PEAR w systemie jest wydanie
polecenia:
lynx -source http://go-pear.org | php
Oczywiście, aby polecenie się wykonało musimy mieć
zainstalowaną przeglądarkę LYNX oraz kompilator PHP ;)
Instalacja
HORDE 2.2.3
Rozpakowujemy pakiet do katalogu, do którego możemy się
dostać z poziomu Apache-a (czyli przez naszą przeglądarkę WWW). U mnie jest to
/opt/apache/htdocs, ale u Was może (i pewnie jest) inaczej – zależy to od
konfiguracji serwera WWW.
cd /opt/apache/htdocs
tar xzf
/opt/download/horde-latest.tar.gz
mv horde-2.2.3 horde
cd
horde/scripts/db/
mysql --user=root -p < mysql_create.sql
cd
/opt/apache/htdocs/horde/config
for foo in *.dist; do cp $foo `basename $foo
.dist`; done
Edytujemy plik konfiguracyjny horde.php.
Musimy zmienić ustawienia dotyczące naszej bazy MySQL. Poniżej znajduje się
zrzut mojego polecenia diff, które obrazuje co i gdzie należy zmienić w pliku:
# diff horde.php horde.php horde.php.dist
134c134
<
$conf['prefs']['driver'] = 'sql';
---
> $conf['prefs']['driver'] =
'none';
143,148c143,148
< $conf['prefs']['params']['phptype'] =
'mysql';
< $conf['prefs']['params']['hostspec'] = 'localhost';
<
$conf['prefs']['params']['username'] = 'horde';
<
$conf['prefs']['params']['password'] = 'secretsecret';
<
$conf['prefs']['params']['database'] = 'horde';
<
$conf['prefs']['params']['table'] = 'horde_prefs';
---
> //
$conf['prefs']['params']['phptype'] = 'mysql';
> //
$conf['prefs']['params']['hostspec'] = 'localhost';
> //
$conf['prefs']['params']['username'] = 'horde';
> //
$conf['prefs']['params']['password'] = '*****';
> //
$conf['prefs']['params']['database'] = 'horde';
> //
$conf['prefs']['params']['table'] = 'horde_prefs';
Edytyjemy
plik registry.php, w którym znajdują się informacje na temat
doinstalowanych dodatków do HORDE (dla nas IMP i TURBA). Poniżej wynik polecenia
diff.
# diff registry.php
registry.php.dist
23,24c23,24
< $this->registry['auth']['login']
= 'imp';
< $this->registry['auth']['logout'] = 'imp';
---
> //
$this->registry['auth']['login'] = 'imp';
> //
$this->registry['auth']['logout'] = 'imp';
77,93c77,93
<
$this->applications['imp'] = array(
< 'fileroot' =>
dirname(__FILE__) . '/../imp',
< 'webroot' =>
$this->applications['horde']['webroot'] . '/imp',
< 'icon' =>
$this->applications['horde']['webroot'] . '/imp/graphics/imp.gif',
<
'name' => _("Mail"),
< 'allow_guests' => false,
< 'show' =>
true
< );
<
< $this->applications['turba'] =
array(
< 'fileroot' => dirname(__FILE__) . '/../turba',
<
'webroot' => $this->applications['horde']['webroot'] . '/turba',
<
'icon' => $this->applications['horde']['webroot'] .
'/turba/graphics/turba.gif',
< 'name' => _("Addressbook"),
<
'allow_guests' => false,
< 'show' => true
< );
---
>
// $this->applications['imp'] = array(
> // 'fileroot' =>
dirname(__FILE__) . '/../imp',
> // 'webroot' =>
$this->applications['horde']['webroot'] . '/imp',
> // 'icon' =>
$this->applications['horde']['webroot'] . '/imp/graphics/imp.gif',
> //
'name' => _("Mail"),
> // 'allow_guests' => false,
> // 'show'
=> true
> // );
>
> // $this->applications['turba'] =
array(
> // 'fileroot' => dirname(__FILE__) . '/../turba',
> //
'webroot' => $this->applications['horde']['webroot'] . '/turba',
>
// 'icon' => $this->applications['horde']['webroot'] .
'/turba/graphics/turba.gif',
> // 'name' => _("Addressbook"),
>
// 'allow_guests' => false,
> // 'show' => true
> //
);
Instalacja IMP 3.2.1
Zainstalujemy IMP-a w katalogu
z HORDE /opt/apache/htdocs/horde/:
cd
/opt/apache/htdocs/horde
tar xzf /opt/download/imp-latest.tar.gz
mv
imp-3.2.1 imp
cd /opt/apache/htdocs/horde/imp/config
for foo in *.dist; do
cp $foo `basename $foo .dist`; done
Edytujemy plik
konfiguracyjny IMP-a config.php, gdzie dodajemy do jego menu pakiet TURBA
(czyli naszą książkę adresową):
# diff conf.php
conf.php.dist
37c37
< $conf['menu']['apps'] =
array('turba');
---
> $conf['menu']['apps'] = array();
57c57
<
$conf['user']['allow_resume_all'] = true;
---
>
$conf['user']['allow_resume_all'] = false;
63c63
<
$conf['user']['allow_resume_all_in_drafts'] = true;
---
>
$conf['user']['allow_resume_all_in_drafts'] = false;
Edytujemy
plik servers.php, w celu podania informacji o naszym systemie mailowym:
# diff servers.php servers.php.dist
88c88
< 'server'
=> 'localhost',
---
> 'server' =>
'imap.example.com',
93,95c93,95
< 'maildomain' =>
'eboks.net',
< 'smtphost' => 'localhost',
< 'realm' =>
'eboks.net',
---
> 'maildomain' => 'example.com',
> 'smtphost'
=> 'smtp.example.com',
> 'realm' => 'example.com',
I
na koniec edytujemy pliczek prefs.php, aby nasi użytkownicy mogli
zapisywać swoje kontakty w książce adresowej:
# diff prefs.php
prefs.php.dist
763,764c763,764
< // 'value' => '',
<
'value' => 'localsql',
---
> 'value' => '',
> // 'value'
=> 'localsql',
Instalacja TURBA 1.2
Tak jak IMP-a instalujemy
pakiet TURBA w katalogu z HORDE. Turba jest naszym menedżerem kontaktów – lub po
ludzku – książką adresową ;)
cd /opt/apache/htdocs/horde
tar xzf
/opt/download/turba-latest.tar.gz
mv turba-1.2/ turba
cd
/opt/apache/htdocs/horde/turba/config/
for foo in *.dist; do cp $foo
`basename $foo .dist`; done
Jeżlei już wcześniej
zarejestrowaliśmy ten pakiet w HORDE i IMP, to wystarczy teraz tylko wyedytować
plik config.php
# diff conf.php conf.php.dist
32c32
<
$conf['menu']['apps'] = array('imp');
---
> $conf['menu']['apps'] =
array();
Wyedytujemy jeszcze tylko plik sources.php aby
Turba korzystała tylko z naszej bazy MySQL:
# diff sources.php
sources.php.dist
43,71c43,71
< // $cfgSources['netcenter'] =
array(
< // 'title' => 'Netcenter Member Directory',
< // 'type'
=> 'ldap',
< // 'params' => array(
< // 'server' =>
'memberdir.netscape.com',
< // 'port' => 389,
< // 'root' =>
'ou=member_directory,o=netcenter.com',
< // 'dn' =>
array('cn'),
< // 'objectclass' => 'person',
< // 'filter' =>
''
< // ),
< // 'map' => array(
< // '__key' =>
'dn',
< // 'name' => 'cn',
< // 'email' => 'mail',
< //
'alias' => 'givenname'
< // ),
< // 'search' => array(
<
// 'name',
< // 'email',
< // 'alias'
< // ),
< //
'strict' => array(
< // 'dn'
< // ),
< // 'public' =>
true,
< // 'readonly' => true,
< // 'export' => false
<
// );
---
> $cfgSources['netcenter'] = array(
> 'title' =>
'Netcenter Member Directory',
> 'type' => 'ldap',
> 'params'
=> array(
> 'server' => 'memberdir.netscape.com',
> 'port'
=> 389,
> 'root' => 'ou=member_directory,o=netcenter.com',
>
'dn' => array('cn'),
> 'objectclass' => 'person',
> 'filter'
=> ''
> ),
> 'map' => array(
> '__key' =>
'dn',
> 'name' => 'cn',
> 'email' => 'mail',
> 'alias'
=> 'givenname'
> ),
> 'search' => array(
>
'name',
> 'email',
> 'alias'
> ),
> 'strict' =>
array(
> 'dn'
> ),
> 'public' => true,
> 'readonly'
=> true,
> 'export' => false
> );
73,98c73,98
< //
$cfgSources['bigfoot'] = array(
< // 'title' => 'Bigfoot',
< //
'type' => 'ldap',
< // 'params' => array(
< // 'server' =>
'ldap.bigfoot.com',
< // 'port' => 389,
< // 'root' =>
''
< // ),
< // 'map' => array(
< // '__key' =>
'dn',
< // 'name' => 'cn',
< // 'email' => 'mail',
< //
'alias' => 'givenname'
< // ),
< // 'search' => array(
<
// 'name',
< // 'email',
< // 'alias'
< // ),
< //
'strict' => array(
< // 'dn'
< // ),
< // 'public' =>
true,
< // 'readonly' => true,
< // 'export' => false
<
// );
---
> $cfgSources['bigfoot'] = array(
> 'title' =>
'Bigfoot',
> 'type' => 'ldap',
> 'params' => array(
>
'server' => 'ldap.bigfoot.com',
> 'port' => 389,
> 'root'
=> ''
> ),
> 'map' => array(
> '__key' =>
'dn',
> 'name' => 'cn',
> 'email' => 'mail',
> 'alias'
=> 'givenname'
> ),
> 'search' => array(
>
'name',
> 'email',
> 'alias'
> ),
> 'strict' =>
array(
> 'dn'
> ),
> 'public' => true,
> 'readonly'
=> true,
> 'export' => false
> );
100,123c100,123
<
// $cfgSources['verisign'] = array(
< // 'title' => 'Verisign
Directory',
< // 'type' => 'ldap',
< // 'params' =>
array(
< // 'server' => 'directory.verisign.com',
< // 'port'
=> 389,
< // 'root' => '',
< // ),
< // 'map' =>
array(
< // '__key' => 'dn',
< // 'name' => 'cn',
< //
'email' => 'mail',
< // ),
< // 'search' => array(
< //
'name',
< // 'email'
< // ),
< // 'strict' =>
array(
< // 'dn'
< // ),
< // 'public' => true,
< //
'readonly' => true,
< // 'export' => false
< //
);
---
> $cfgSources['verisign'] = array(
> 'title' =>
'Verisign Directory',
> 'type' => 'ldap',
> 'params' =>
array(
> 'server' => 'directory.verisign.com',
> 'port' =>
389,
> 'root' => '',
> ),
> 'map' => array(
>
'__key' => 'dn',
> 'name' => 'cn',
> 'email' =>
'mail',
> ),
> 'search' => array(
> 'name',
>
'email'
> ),
> 'strict' => array(
> 'dn'
> ),
>
'public' => true,
> 'readonly' => true,
> 'export' =>
false
> );
140c140
< 'password' =>
'secretsecret',
---
> 'password' =>
'*****',
176,213c176,213
< // $cfgSources['localldap'] = array(
<
// 'title' => 'Shared Directory',
< // 'type' => 'ldap',
< //
'params' => array(
< // 'server' => 'ldap.example.com',
< //
'port' => 389,
< // 'root' => 'dc=example,dc=com',
< //
'bind_dn' => 'cn=admin,ou=users,dc=example,dc=com',
< //
'bind_password' => '********',
< // 'dn' => array('cn'),
< //
'objectclass' => 'person',
< // 'version' => 3
< // ),
<
// 'map' => array(
< // '__key' => 'dn',
< // 'name' =>
'cn',
< // 'email' => 'mail',
< // 'homePhone' =>
'telephonenumber',
< // 'workPhone' => 'workphonenumber',
< //
'cellPhone' => 'cellphonenumber',
< // 'homeAddress' =>
'homeaddress'
< // ),
< // 'search' => array(
< //
'name',
< // 'email',
< // 'homePhone',
< //
'workPhone',
< // 'cellPhone',
< // 'homeAddress'
< //
),
< // 'strict' => array(
< // 'dn'
< // ),
< //
'public' => true,
< // 'readonly' => false,
< // 'admin' =>
array(),
< // 'export' => true
< // );
---
>
$cfgSources['localldap'] = array(
> 'title' => 'Shared
Directory',
> 'type' => 'ldap',
> 'params' => array(
>
'server' => 'ldap.example.com',
> 'port' => 389,
> 'root'
=> 'dc=example,dc=com',
> 'bind_dn' =>
'cn=admin,ou=users,dc=example,dc=com',
> 'bind_password' =>
'********',
> 'dn' => array('cn'),
> 'objectclass' =>
'person',
> 'version' => 3
> ),
> 'map' =>
array(
> '__key' => 'dn',
> 'name' => 'cn',
> 'email'
=> 'mail',
> 'homePhone' => 'telephonenumber',
> 'workPhone'
=> 'workphonenumber',
> 'cellPhone' => 'cellphonenumber',
>
'homeAddress' => 'homeaddress'
> ),
> 'search' =>
array(
> 'name',
> 'email',
> 'homePhone',
>
'workPhone',
> 'cellPhone',
> 'homeAddress'
> ),
>
'strict' => array(
> 'dn'
> ),
> 'public' =>
true,
> 'readonly' => false,
> 'admin' => array(),
>
'export' => true
>
);