Ajax介面的Webmail - Roundcube
RoundCube 是從 Iloha 改寫而來,也承席Iloha 羽量級的靈巧速度,加上RoundCube 精美的介面、以及AJAX 級的設計表現,雖然目前只是0.2-beta2 版,卻讓人愛不釋手。唯一可惜的,是它必需使用MySQL資料庫,但比起Hola 之類使用資料庫的Webmail, RoundCube 更為簡單精巧,也因為輕巧而避免掉效能上的問題以及使用者的手誤導致系統凌亂,請先確定你的MTA以及DNS可正常使用。測試背景
主機名稱 : mail.example.com.tw
IP : 192.168.239.170 / 24
網域 : example.com.tw
1 . 套件安裝
因為Roundcube所需要的套件包含php-dom、php-xml,這兩個套件事DVD光碟中所沒有的,需要從網路上取得,且與其他套件又有相依性的關係,所以有關php、php-mysql、mysql-server、httpd及其他相依性套件均從yum自動安裝。
# yum install -y httpd php php-mysql php-dom php-xml mysql-server
2 . 網頁相關方面的資料夾佈署及權限設定
RoundCube對 Server的溝通是透過IMAP通訊協定做溝通,所以dovecot需要開啟IMAP通訊協定。
# vi /etc/dovecot.conf
protocols = pop3 imap
重新啟動
#service dovecot restart
解壓縮Roundcube Web Mail套件
# cd /root
# tar zxvf roundcubemail-0.2-alpha.1.tar.gz
修改roundcubemail-0.2-alpha資料夾的權限為root.root。
# chown -R root.root /root/roundcubemail-0.2-alpha
將logs、temp兩個資料夾給予Apache可寫入的權限
# chown -R apache.apache /root/roundcubemail-0.2-alpha/logs/
# chown -R apache.apache /root/roundcubemail-0.2-alpha/temp/
將網頁原始碼複製到/var/www/webmail中
# mkdir /var/www/webmail
# cp -a /root/roundcubemail-0.2-alpha/* /var/www/webmail/.
2.2 虛擬伺服器的設定
用意是將網址原為簡化為webmail.example.com.tw
# vi /etc/httpd/conf/httpd.conf
DirectoryIndex index.html index.html.var
修改為
DirectoryIndex index.html index.html.var index.php
在檔案最末端新增以下設定
ServerName mail.test.com.tw:80
NameVirtualHost 192.168.239.170:80
<VirtualHost 192.168.239.170:80>
DocumentRoot /var/www/webmail
ServerName mail.test.com.tw
</VirtualHost>
重新啟動Httpd
# service httpd restart
3 . 資料庫方面的相關設定
因為資料庫要在啟動的後才能進行建立資料庫方面的操作,作所以我們必須先啟動資料庫。
# service mysqld start
先設定資料庫的管理者帳號密碼
# mysqladmin -u root password 'password'
以root帳號登入來建立資料庫,以及建立資料庫的使用者及權限指派。
# mysql -u root -p
Enter password:
mysql> create database webmail;
mysql> grant all privileges on webmail.* to mailuser@localhost identified by 'password';
mysql> exit
grant那一行意思是指,給予所有權限在webmail的資料庫上,資料庫使用者是本機上面的mailuser,密碼是password。
匯入資料庫
# cd /var/www/webmail/SQL/
# mysql -u root -p webmail < mysql5.initial.sql
4 . RoundCube 的資料庫及環境變數設定
將config資料夾下的db.inc.php.dist、main.inc.php.dist兩個檔案檔名修改為db.inc.php、main.inc.php
# cp -a /var/www/webmail/config/db.inc.php.dist /var/www/webmail/config/db.inc.php
# cp -a /var/www/webmail/config/main.inc.php.dist /var/www/webmail/config/main.inc.php
設定網頁程式中連結資料庫的變數
# cd /var/www/webmail/config
# vi db.inc.php
['db_dsnw'] = 'mysql:// mailuser:password@localhost/webmail';
上面的意思是指
['db_dsnw'] = 'mysql://資料庫帳號:密碼@localhost/資料庫名稱';
修改一些RoundCube主要的環境變數
# cd /var/www/webmail/config
# vi main.inc.php
$rcmail_config['default_host'] = '192.168.239.170'; #郵件伺服器的位置或DNS名稱
$rcmail_config['mail_domain'] = 'test.com.tw'; #網域名稱
$rcmail_config['smtp_server'] = '192.168.239.170'; #郵件伺服器的位置或DNS名稱
$rcmail_config['language'] = ' zh_TW '; # 預設語系
$rcmail_config['date_short'] = 'Y.m.d H:i';
$rcmail_config['date_long'] = 'Y.m.d H:i';
$rcmail_config['date_today'] = 'Y.m.d H:i';
設定垃圾郵件資料夾
$rcmail_config['junk_mbox'] = 'Junk';
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash')
$rcmail_config['create_default_folders'] = false;
修改為以下
$rcmail_config['junk_mbox'] = 'Spam';
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Spam', 'Trash')
$rcmail_config['create_default_folders'] = TURE;
rcmail_config['default_charset'] = 'UTF-8';
5 . RoundCube 程式修正
因為在IE7的夾檔中文名上會出現亂碼以及無法下載,所以在抓中文夾檔的時候要先給rawurlencode()函數吃過一次,若公司內部沒有IE7則無問題。
# vi /var/www/webmail/program/steps/mail/get.inc
else {
header(sprintf('Content-Disposition: %s; filename="%s";',
$_GET['_download'] ? 'attachment' : 'inline',
$part->filename ? abbreviate_string($part->filename, 55) :"roundcube.$ctype_secondary"));
修給為以下
else {
header(sprintf('Content-Disposition: %s; filename="%s";',
$_GET['_download'] ? 'attachment' : 'inline',
$part->filename ? rawurlencode(abbreviate_string($part->filename, 55)) : rawurlencode("roundcube.$ctype_secondary")));
6 . 設定開機啟動以及重新啟動
# chkconfig httpd on
# chkconfig mysqld on
# service httpd restart
# service mysqld restart
7 . 其他
若DNS中如果有正確將 webmail.example.com.tw 正確指向 192.168.239.180的話,在瀏覽器輸入 http://webmail.example.com.tw 即可正確瀏覽該網頁了。
若要更換logo,原圖大的小是 165 x 55 ,可以將新圖命名為 roundcube_logo.png 再將它複製到
/var/www/webmail/skins/default/images/ 取代原來的圖檔即可。