2015年11月3日 星期二

Debian 8.2 安裝 Webmin

以apt-get 安裝
編輯/etc/apt/sources.list,加入以下兩行:
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

新增GPG key,在/root下
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

接著執行:
apt-get update
apt-get install webmin
即可順利安裝。
webmin需要的元件較多,若有缺乏套件,請補齊以下套件:
apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

2015年11月2日 星期一

vim 預設顏色配置

編輯/etc/vim/vimrc,將下列這行的註解拿掉
syntax on     "開啟語法加亮

另外:
set hls           "可加亮顯示搜尋的關鍵字
set number    "顯示行號
set cursorline "標註至游標整行
set background=dark "設定背景顏色

設定完存檔後再重新進入vim即可生效!

停用帳號

停用現有帳號:
passwd -l username

啟用被停用的帳號:
passwd -u username


將使用者加入現有的群組

將u1帳號加入mail群組:
usermod -a -G mail u1


2015年10月14日 星期三

Roundcube+Dovecot UID MOVE: Mailbox doesn't exist: Trash 解決辦法

Roundcube預設不會直接產生使用者帳號下需要的各個資料夾,當使用者有需求時才會自產生!例如第一次登入時只會有”收件夾”和“寄件備份”兩個資料夾,當使用者刪除信件時,系統會自產生“垃圾桶”這個資料夾,並將刪除的信件放入其中!但某些系統安裝後卻無法自己產生相對應需求的資料夾!便會出現“伺服器錯誤:UID MOVE: Mailbox doesn't exist: Trash”這樣的錯誤訊息!
解決的辦法有兩個:
1.讓Roundcube直接建立預設的資料夾
編輯Roundcube目錄下config資料夾下的config.inc.php檔案,在最下方加入
$config['create_default_folders'] = True;
存檔後使用者再重新登入roundcube即可!

2.編/etc/dovecot/conf.d/20-imap.conf如下,讓dovecot支援自動建立目錄的功能:
mail_plugins = $mail_plugins autocreate

20-imap.conf檔案的最後加上以下內容:
plugin {
autocreate = Trash
autocreate2 = Junk
autocreate3 = Drafts
autocreate4 = Sent
autosubscribe = Trash
autosubscribe2 = Junk
autosubscribe3 = Drafts
autosubscribe4 = Sent
}

存檔後重新啟動dovecot即可!
PS:若dovecot是2.2以上版本,以上設定會導致/var/log/mail.log下出現:
Warning: autocreate plugin is deprecated, use mailbox { auto } setting
這樣的警告訊息!這個警告訊息不影響dovecot的正常運作!
依照Dovecot網頁文件的說法(http://wiki2.dovecot.org/MailboxSettings),dovecot 2.1之後的版本在mail_plugins = 後方不需要autocreate
,所有的autocreate = autosubscribe =  需要移除,並加入下列內容:
namespace inbox { 
#prefix = INBOX. # the namespace prefix isn't added again to the mailbox names. 
# ... 
mailbox Trash { 
auto = no 
special_use = \Trash 
 } 
mailbox Drafts { 
auto = no 
special_use = \Drafts 
 } 
mailbox Sent { 
auto = subscribe # autocreate and autosubscribe the Sent mailbox 
special_use = \Sent 
 } 
mailbox "Sent Messages" { 
auto = no 
special_use = \Sent
 } 
mailbox Spam { 
auto = create # autocreate Spam, but don't auto subscribe 
special_use = \Junk 
 } 
mailbox virtual/All {# if you have a virtual "All messages" mailbox 
auto = no 
special_use = \All 
 } 
}
所以修改完的內容應該如下:
mail_plugins = $mail_plugins 
mailbox_list_index=yes
namespace inbox { 
#prefix = INBOX. # the namespace prefix isn't added again to the mailbox names. 
# ... 
mailbox Trash { 
auto = no 
special_use = \Trash 
 } 
mailbox Drafts { 
auto = no 
special_use = \Drafts 
 } 
mailbox Sent { 
auto = subscribe # autocreate and autosubscribe the Sent mailbox 
special_use = \Sent 
 } 
mailbox "Sent Messages" { 
auto = no 
special_use = \Sent
 } 
mailbox Spam { 
auto = create # autocreate Spam, but don't auto subscribe 
special_use = \Junk 
 } 
mailbox virtual/All {# if you have a virtual "All messages" mailbox 
auto = no 
special_use = \All 
 } 
}
存檔後重新啟動dovecot即可讓dovecot支援自動產生資料夾的功能!但這個做法在目前的roundcube(1.1.4)上並沒有生效!所以建議使用第一個方式來根本解決! 

Ubuntu 14.04下安裝Roundcube1.1.3

安裝好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.1.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.1.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
sudo service apache2 restart
至於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

Plugins
選用你想啟動的附加元件
其他選項可以視需求勾選,接著點選CREATE 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檔案內加入:
$config['enable_installer'] = false;
確保使用者透過瀏覽器無法讀取installer這個資料夾!

2015年10月13日 星期二

postfix 限制指定帳號只能寄信至指定郵箱

欲限制指定帳號只可寄信至指定郵箱,其餘拒絕,例如希望使用者帳號只在公司內部使用,不可寄信至外部郵箱,可依以下設定。

1.修改postfix的設定檔main.cf

  • 在"smtpd_sender_restrictions ="設定值內加入如下設定:
          check_sender_access hash:/etc/postfix/check_sender
  • 新增限制類別
          smtpd_restriction_classes = local_only
          local_only = check_recipient_access hash:/etc/postfix/local_domains, reject

2.編輯/etc/postfix/check_sender,將要限制的帳號指定到"local_only",帳號須包含網域名稱
           u1@mydomain     local_only

3.編輯/etc/postfix/local_domains,此處指定允許寄件的domain名稱
           mydomain          OK

4.執行postmap產生check_senderlocal_domains的資料檔
postmap check_sender
postmap local_domains

5.重新啟動postfix
service postfix restart

以上!

參考資料:http://www.postfix.org/RESTRICTION_CLASS_README.html





2015年8月31日 星期一

修改Mac終端機下的命令提示符號

我希望終端機下的命令提示符號可以顯示

  1. 當前目錄
  2. 目前使用者名稱
  3. 主機名稱
  4. 前一個指令執行結果的返回碼
做法:
修改/etc/bashrc檔案內容,將“PS1”的值修改成如下:

PS1="-\$?-(\u@\h) \w >"
存檔後關閉目前的終端機再重新開啟就可以生效了!
設定的意義如下:
\$?:$?會被代換成上一個指令的傳回值。
\u:顯示目前登入的使用者名稱
\h:顯示主機名稱,但如果主機名稱太長,可能無法顯示
\w:顯示目前的工作目錄(完整路徑),可將w改成W,則只顯示當前所在目錄的最後一層資料夾名稱

有時若是所在位置的資料夾名稱太長,可能導致沒有多少空間可以輸入指令;可以使用兩行符號來避免這個問題。作法如下:
PS1="[\u@\h]: \w\n\$?>"
和上頭的設定差別上只是多了一個"\n"
\n:換行


2015年7月29日 星期三

Postfix 除錯

查出postfix設定檔的位置
postconf config_directory

檢查設定檔
postfix check

檢查紀錄檔內的錯誤訊息
egrep '(warning|error|fatal|panic):'  /var/log/mail.log | less

panic:代表軟體本身問題,得修改程式才能解決,得修正後Postfix才能繼續運作
fatal:設定黨內設定錯誤、檔案遺失或者權限錯誤,得修正後Postfix才能繼續運作
error:錯誤報告,為了安全起見,出現13次以上錯誤,Postfix會停止運作
waring:不嚴重的錯誤,但應盡快修正

2015年7月7日 星期二

windows清除網路芳鄰連線

windows系統在網路芳鄰的對外連線只能使用一組帳號,當有需求使用第二組帳號來獲得更高權限時,系統就會跳出錯誤訊息,拒絕使用多組帳號連線到網路資源˙!一般只能重新登入系統來清除已經建立的網路芳鄰連線,若懶的燈初在登入系統,也可以使用指令清除已建立的網芳連線:

  1. 執行“命令提示字元”
  2. 輸入以下指令:
    net use * /delete
如此便可清除已經建立的網路芳鄰連線,不需要重新登入系統!

2015年1月22日 星期四

grep 參數紀錄

grep:
-A n:後面加數字,為after的意思,除了列出該行外,後續的n行也列出,等同--after-context=n
-B n:後面加數字,為befet的意思,除了列出該行外,後續的n行也列出,等同--before-context=n
--color=auto:將擷取的字串列出顏色
-c:計算搜尋到的'字串'次數
-n :輸出行號
-v:反向選擇,列出沒有搜尋'字串'的那行

若嫌每次輸入參數麻煩,可以利用alias來自訂,例如:
alias grep='grep --color=auto'
要永久生效,可以將上行加入~/.bashrc檔案內,之後執行
source ~/.bashrc
就可以立即生效!

2015年1月21日 星期三

利用Fail2ban監控roundcube的登入

Fail2ban可以監控roundcube的webmail登入狀況,減低webmail被盜用的風險!
1.先至http://mattrude.com/projects/roundcube-fail2ban-plugin/下載Roundcube Fail2ban原件
roundcube-fail2ban-plugin.1.1.tgz

2.接著將下載的檔案解壓縮後,取出的資料夾名稱修改為fail2ban,再置/roundcubemail/plugins下

3.系統需安裝fail2ban
sudo apt-get update
sudo apt-get install fail2ban
4.編輯/etc/fail2ban/jail.conf,找到以下區段並修改如下:
# Monitor roundcube server
[roundcube-auth]
enabled  = true   <---預設是false,須改成true,啟動這項功能
filter   = roundcube-auth
port     = http,https
logpath  = /var/www/roundcubemail/logs/userlogins   <---這裡須指定roundcube login的紀錄檔名稱位置

5.修改/etc/fail2ban/filter.d/roundcube-auth.conf檔案內容,將failregex設定如下
failregex = ^.*FAILED login for .*. from <HOST>

6.接著在roundcube的設定檔內需啟動login的紀錄功能,編輯roundcube的設定檔config.inc.php,一般位於roundcube資料夾下的config資料夾內,在檔案內添加以下設定:
$config['log_logins'] = true;

7.找個帳號登入roundcube,讓系統產生userlogins這個紀錄檔

8.重新啟動fail2ban
sudo service fail2ban restart

Fail2ban設定請參閱:

Fail2ban----防止暴力密碼猜測