2014年12月17日 星期三

Roundcube的外掛元件

基本的Roundcube功能十分陽春,但可以外掛其他需要的功能模組,原始的Roundcube檔案已經附帶了一些外掛的模組,這些檔案存放在Roundcube資料夾下的plugins資料夾內。模組的啟用大多相當容易,先到Roundcube內的plugins資料夾下,找到想起用模組的資料夾名稱,接著到Roundcube內的config資料夾下開啟config.inc.php,找到以下這行
$config['plugins'] = array('');
將想啟用的模組名稱加入上方的設定,例如:
$config['plugins'] = array('markasjunk','password','userinfo','zipdownload');
接著到Roundcube內的plugins資料夾下,查看想開啟模組的對應資料夾下,是否有config.inc.php.dist 這支檔案,如果有,表示這個模組有些設定可以變更,請將config.inc.php.dist更名或複製成config.inc.php,再修改該模組資料夾下的config.inc.php內容即可。
以下為原始的Roundcube檔案已經附帶了一些外掛模組的設定:
archive 封存郵件 
加入模組後,需在設定內的特殊資料夾下指定封存的資料夾

markasjunk 標示垃圾郵件
這個模組安裝後,介面上會多了一個垃圾郵件的按鈕,可以將指定的郵件移動至垃圾郵件的資料夾下

managesieve 篩選器
可以自訂郵件的篩選過濾條件,將目標郵件執行設定的動作,如搬移、複製或轉寄。
managesieve需安裝dovecot-managesieved dovecot-sieve元件:
sudo apt-get install dovecot-managesieved dovecot-sieve
/etc/postfix/main.cf內新增
mailbox_command = /usr/lib/dovecot/dovecot-lda -d "$USER" -f "$SENDER" -a "$RECIPIENT"
修改/etc/dovecot/conf.d/15-lda.conf
protocol lda {
  mail_plugins = $mail_plugins sieve

}
修改/etc/dovecot/conf.d/90-plugin.conf
plugin {
 # setting_name = value
setting_name = sieve

}
另外,在roundcube的plug資料夾managesieve內,需產生 config.inc.php 設定檔(可以複製config.inc.php.dist)

重新啟動 postfix與dovecot

讓roundcube顯示使用者的quota
修改/etc/dovecot/conf.d/10-mail.conf如下:
mail_plugins = $mail_plugins quota
修改/etc/dovecot/conf.d/20-imap.conf:
mail_plugins = $mail_plugins imap_quota
修改/etc/dovecot/conf.d/90-quota.conf
## Quota limits
plugin {
  quota_rule = *:storage=3G
  quota_rule2 = Trash:storage=+100M
  quota_rule3 = SPAM:ignore
  quota_grace = 10%%
}
## Quota warnings
plugin {
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
}
## Quota backends
plugin {
    quota = maildir:User quota
  }


重新啟動 dovecot
須注意的是此處只是設定在roundcube上顯示的quota上限,實際上的空間限制還是在於postfix的設定

password 變更密碼
這個模組可以讓使用者直接在網頁上修改自己的密碼。原始的設定是透過sql的語法去變更使用者密碼,但小弟功力太差,搞了半天就是搞不定,只好改用其他方法!在系統下安裝poppassd,透過它來變更使用者密碼。先安裝poppassd
sudo apt-get install poppassd
接著來到password資料夾下,將config.inc.php.dist複製一份並更名為config.inc.php
sudo cp config.inc.php.dist config.inc.php
接著編輯config.inc.php,找到以下這行:
$config['password_driver'] = 'sql';
並修改成
$config['password_driver'] = 'poppassd';
下方這幾項設定可以視需求修改
$config['password_minimum_length'] = 8;              //密碼的最小長度
$config['password_require_nonalpha'] = false;        //密碼至少需要含一個數字與一個標點符號
$config['password_log'] = true;                                //密碼的變更是否記錄log檔,若開啟會在Roundcube下的logs資料夾內產生一個password的log檔                                                                
userinfo 會在設定選項內多了一個"使用者資訊"的欄位

zipdownload 支援用zip的方是一次下載多個郵件附件
當郵件的附件有多個時,可以將多個附件用zip的方式打包一起下載。在zipdownload資料夾下,將config.inc.php.dist複製一份並更名為config.inc.php,編輯內容,找到下面這行
$config['zipdownload_charset'] = 'ISO-8859-1';
這裡可以指定zip檔案名稱的編碼,可以改成UTF-8,避免檔案名稱出現亂碼。
$config['zipdownload_charset'] = 'UTF-8';




2014年12月15日 星期一

Roundcube 預設帳號顯示與預設郵件編碼設定

Roundcube設定檔位於本身資料夾下config資料夾內,defaults.inc.php是Roundcube的所有預設值設定檔,config.inc.php是自訂的設定檔,config.inc.php的優先權大於defaults.inc.php,更改需要的設定值只需修改config.inc.php,不需要動到defaults.inc.php的內容;有需要可以參考defaults.inc.php的內容,再將需要的設定值寫入defaults.inc.php,儘量保持defaults.inc.php的完整,方便日後的故障排除!

下方的說明,修改或添加設定值,都是在config.inc.php內,修改完存檔後會立即生效,只要刷新Roundcube畫面即可!
使用者帳號:
Roundcube預設每個使用者都入時,帳號都是xxx@localhost,當你寄信時,也是顯示xxx@localhost,容易造成一些困擾,可以在config.inc.php內加入以下設定值,讓使用者帳號後@直接顯示本身的網域名稱:
$config['mail_domain'] = 'demo.tw';

設定預設的郵件編碼:
在defaults.inc.php內可以找到如下的內容,表示roundcube的郵件預設編碼是ISO-8859-1
// Use this charset as fallback for message decoding
$config['default_charset'] = 'ISO-8859-1';
若想將預設編碼改成常用的萬國碼,可以在config.inc.php加入以下設定:
$config['default_charset'] = 'UTF-8';

另外,預設帳號網域部分,即使修改了,已經登入過Roundcube的使用者顯示依然是localhost並不會改變,只能手動修改設定內的身份資料;也可以刪除mysql內roundcube使用的資料庫下users表單內,該使用者的資料,但該使用者在Roundcube那編輯的內容都會消失!!




Ubuntu 14.04下安裝Roundcube1.03

安裝好postfix後(安裝步驟參閱ubuntu 14.04 postfix+dovecot+amavis+clamav+spamassassin
),可以加上Roundcube,增加webmail的介面,步驟如下:

1.至Roundcube官網下載Roundcube,將下載的檔案解壓縮後放置你mail 主機下,apache指定的目錄位置,例如/var/www

2.0 安裝需要的元件
sudo apt-get install dovecot-imapd apache2 mysql-server-5.5 php5 phpmyadmin

phpmyadmin可視需求決定安裝與否,若安裝完 phpmyadmin,在登入phpmyadmin時看到畫面下方顯示"缺少 mcrypt 擴充套件。請檢查 PHP 設定。",執行以下指令安裝php5-mcrypt
sudo apt-get install php5-mcrypt
接著啟動mcrypt模組
sudo php5enmod mcrypt
sudo service apache2 restart
如此,應該不會再有警告訊息!

3.假設想使用https來連接,且將domain name直接連結到Roundcube,請修改/etc/apache2/sites-available/default-ssl.conf檔案,將DocumentRoot的值設定成你的Roundcube資料夾位置,例如
DocumentRoot /var/www/roundcubemail-1.0.3/
接著啟用ssl站台
sudo a2ensite default-ssl
啟用apache2的ssl模組
sudo a2enmod ssl
再重新啟動apapche2
sudo service apache2 restart
接著修改Roundcube資料夾下temp與logs的權限,確定apache2(www-data)有寫入權限
cd /var/www/roundcubemail-1.0.3
sudo chown -R www-data temp logs

4.確定已安裝好Mysql,有需要也可安裝phpmyadmin;新增roundcube所需要的mysql使用者與資料庫,roundcube須對使用的資料庫有寫入權限。

5.用瀏覽器連結至roundcube資料夾下的installer,滿足檢測頁面的要求。如;
https://demodomain/installer
檢測畫面中,資料庫的部分因為我們使用mysql,所以只要mysql的部分有OK就行了,其餘資料庫檢測狀態可以不用理會。若有未安裝的元件,畫面會在元件名稱後顯示NOT AVAILABLE再將其安裝補齊即可。例如Intl元件未安裝:
sudo apt-get install php5-intl
至於date.timezone:  NOT OK(not set)這個訊息,是因為在PHP內沒有設定所在的時區,可以修改/etc/php5/apache2/php.ini檔案:
date.timezone = "Asia/Taipei"
修改完php.ini後需要重新啟動apapche2才會生效!
sudo service apache2 restart
接著應該可以看到如下畫面,點選NEXT到下個步驟。











接下來的畫面分幾個大項
General configuration
support_url 是要連接Roundcube的支援網址
其他可以保留預設值

接著,Database setup部分,
Database type 選擇Mysql
Database server (omit for sqlite) 輸入loclahost
Database name (use absolute path and filename for sqlite) 輸入你在Mysql幫Roundcube開的帳號
Database user name (needs write permissions)(omit for sqlite) 輸入Mysql下Roundcube帳號的密碼

IMAP Settings部分
default_host 輸入IMAP主機,例如ssl://localhost
default_port IMAP主機使用的TCP PORT,例如:993
其他部分可以保留預設值

SMTP Settings
smtp_server SMTP SERVER,若使用加密,請輸入tls://localhost
smtp_port smtp使用的tcp port,預設是25
Use the current IMAP username and password for SMTP authentication 這個選項要勾選,讓smtp使用imap登入的帳號和密碼去驗證

Display settings & user prefs
language 預設的語系,繁體中文可輸入zh_TW

其他選項可以視需求勾選,接著點選CREATE CONFIG












這時應該可以看到如下畫面:





點選Download,下載剛剛設定後產生的config.inc.php,並將它放置到/var/www/roundcubemail-1.0.3/config/

接著,在畫面的可以看到CONINUE,點選進入測試畫面。












Check DB config下若看到以下畫面:








請點選Initialize database

Test SMTP config下,


填入一組在SMTP Server上可以寄信的帳號(User)與密碼(Password),Sender填入寄件者的EMAIL,Recipient填入收件者的EMAIL,接著按下Send test mail,若可以正常寄信,會顯示:
SMTP send:  OK

Test IMAP config











填入一組可以登入IMAP的帳號(Username)與密碼(Password),點下Check login,若可以正常登入IMAP,畫面會顯示:
Connecting to ssl://localhost...
IMAP connect:  OK(SORT capability: yes)

到此,Roundcube的設定算是完成了,有發現螢幕下方的那幾列紅字嗎?







為了安全考量,避免未經授權的使用者擅自更改Roundcube的設定,請確定在你的config.inc.php檔案內的enable_installer選項是停用的!必須確保使用者透過瀏覽器無法讀取installer這個資料夾!