2014年6月17日星期二

(EPEL)(roundcubemail)如何安裝與設定roundcubemail(使用RPM)


1. 下載&安裝 epel 套件
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

2. 安裝mysql套件
# yum install mysql-server mysql 
# service mysql start
3. 安裝roundcubemal套件 (From EPEL) 
# yum install roundcubemail  

4. 建立roundcubemail資料庫 & 建立roundcube帳號與權限
# mysql -p -uroot
mysql> create database roundcubemail character set utf8 collate utf8_bin; 
mysql> grant all privileges on roundcubemail.* to roundcube@'localhost' identified by 'password';
mysql> flush privileges;
mysql> exit

5. 匯入資料庫結構
# cd /usr/share/doc/roundcubemail-0.9.5/SQL
# mysql -p -u roundcube roundcubemail < mysql.initial.sql
Enter password:

6. 設定資料庫相關設定值
# vi /etc/roundcubemail/db.inc.php 
----------------------------------------------------------------------------------
$rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
----------------------------------------------------------------------------------

7. 設定郵件伺服器 & 登入相關設定值
# vi /etc/roundcubemail/main.inc.php  

$rcmail_config['default_host'] = 'localhost';
$rcmail_config['default_port'] = 143; // imap
$rcmail_config['mail_domain'] = '%t'; // 若你輸入的網址是 http://mail.test.com , 則該帳號預設email是"帳號@test.com"
$rcmail_config['smtp_server']='localhost';
$rcmail_config['smtp_port']=25;
$rcmail_config['smtp_user'] = '%u';
$rcmail_config['smtp_pass'] = '%p';
$rcmail_config['smtp_auth_type'] = 'LOGIN';
$rcmail_config['smtp_helo_host'] = 'mail.test.com';
$rcmail_config['language'] = zh_TW;
$rcmail_config['default_charset'] = 'big5';


8. 開放httpd權限
# vi /etc/httpd/conf.d/roundcubemail.conf 
Alias /roundcube /usr/share/roundcubemail
<Directory /usr/share/roundcubemail/>
Options -Indexes   
DirectoryIndex index.html index.htm index.php
AllowOverride None
Order Deny,Allow
Allow From all   
Deny From 192.168.0.0/16  
</Directory>

重開 httpd
# service httpd start
開啟網頁 http://localhost.test.com/roundcube
這樣就完成了
環境: Centos 6.x roundcubemail 0.9.5 postfix 2.6.6 -- william 20150614

2014年6月13日星期五

(postfix)如何增加spf檢查(阻擋偽造您網域的郵件伺服器)

前言: 
當然, SPF不是防曬係數...

很久以前, 大家一直宣傳郵件發信主機的正解與反解要一致, 才能杜絕廣告信.
郵件系統發展到後來,一個ip常常代表很多網域的發信(郵件代管), 正反解一致的做法就破功了, 好險這期間大家一直提出建議, 想辦法阻擋偽造或非法的郵件伺服器發廣告信,
這些建議以DKIM與SPF最為有名.
但個人覺得SPF最簡單, 也行之有年了.

步驟:
1. SPF 設定
若我們網域有設定SPF記錄, 郵件主機被偽造以及被擋下來的機率將大減,

以下設定很簡單, 在DNS增加一筆TXT, 敘述mx的主機都是合法郵件主機
@ IN TXT "v=spf1 a mx ~all"

當然除了mx所敘述的都是合法外, 我會建議多增加郵件主機的IP, 可防止反解異常,被別人誤判問題,如下設定
@ IN TXT "v=spf1 a mx  ip4:192.168.0.1/16 ~all"

2. 在寄件者email的檔頭上增加SPF檢查資料
# wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.007.tar.gz
本例子是2.007版本(可以查看http://www.openspf.org/blobs下載適合的版本)
或是https://launchpad.net/postfix-policyd-spf-perl/  可找到更新的版本
# tar vfxz postfix-policyd-spf-perl-2.007.tar.gz
# cd postfix-policyd-spf-perl-2.007
# cp postfix-policyd-spf-perl /usr/libexec/postfix/  
# vi /etc/postfix/master.cf 
在master.cf增加
policy  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf-perl
# vi /etc/postfix/main.cf
在main.cf裡找出
smtpd_recipient_restrictions =
        ...........................
        ...........................
        reject_unauth_destination,
        ...........................

增加以下設定
        check_policy_service unix:private/policy

變成這樣
smtpd_recipient_restrictions =
        ...........................
        ...........................
        reject_unauth_destination,
        ...........................
        check_policy_service unix:private/policy

**切記該設定必須在 reject_unauth_destination 之後**

3. 因為第2步驟會在寄來的信件檔頭增加spf的判斷, 因此可以透過檔頭檢查的方式, 過濾掉有問題的信件
# vi main.cf 查看或增加檔頭檢查設定
header_checks = regexp:/etc/postfix/header_checks
# vi /etc/postfix/header_checks
增加以下資料
 /^Received-SPF: fail/ DISCARD SPF-SOFTFAIL-DISCARD
 /^Received-SPF: softfail/ DISCARD SPF-SOFTFAIL-DISCARD


以上3個步驟,就可以讓postfix做SPF Check的動作


以下是EMAIL檔頭出現的SPF內容:
Received-SPF: pass
Received-SPF: fail
Received-SPF: softfail
Received-SPF: neutral
Received-SPF: none
Received-SPF: permerror
Received-SPF: temperror

測試環境:
Centos 6.x 
Postfix 2.6.6

--
william 20140613

2014年5月6日星期二

程式之獨孤九劍

我一直認為OO是一輩子追尋的方向,以java為例, 她不是一種語言,是一種要天天供奉而且拿來拜的技術.
但有一天發生了一件事情改變了我的想法, 公司的研發單位研發某產品時, 因主要單晶片韌體開發者離職, 接手者無法解決資料排序的需求(原本由小到大,要修改成由大到小), 我臨時被叫去協助, 花了1小時請同事協助, 好讓我了解該單晶片開發環境,最後加上4行程式碼就將Global data array反轉, 完成任務, 同事也覺得很驚奇, 就這麼簡單.
雖然我完全沒硬體/韌體開發經驗, 但最後還是自告奮用接手讓該產品的韌體程式.
這件事情也讓我不得不承認"因地制宜", 什麼時候用什麼手法非常重要.以前在軟體公司曾有一位很棒的軟體顧問提出"獨孤九劍"的看法,以破劍式來說, 一劍就要能破解所有與"劍"有關的招式, 因此, 在你的能力裡面, 對任何有趣的程式設計都需要了解, 哪怕是goto都要融會貫通, 隨時隨地就能拿出來使用, 因為難保哪時候你會用到.
此外看別人寫的程式也是一種修練, 再難懂的程式, 只要功能正常, 都要能夠了解該程式師灌注在該程式的想法.
最後,我還認為程式沒有好壞,若功能達到要求, 那程式內容就只有適不適當, 看不懂程式的人,只是功力不足, 見識不廣而已.

2014年4月3日星期四

2014年新稱號-馬的你不思議之年

2014年新稱號-馬的你不思議之年

如何讓一般使用者執行root才能執行的程式

1. 需請有root權限的人, 執行
   visudo這個指令,找出
===================================================
root    ALL=(ALL)       ALL
===================================================
底下加上一行就可以讓william執行所有root能執行的指令了
===================================================
 william ALL=(ALL) ALL
===================================================

2. 該使用者就可以透過 sudo 執行原本root才能執行的程式
   例如新增使用者 user01
   原本root權限只要執行 useradd user01
   現在只需改成 sudo useradd user01 一樣可以讓非root使用者能執行useradd指令

ps
1.若只想要該使用者只能使用特定程式,例如 useradd 這程式 , 請改成
===================================================
  william ALL=(ALL) /usr/sbin/useradd
===================================================

2. 因執行sudo指令時, 需再打一次密碼, 若要取消密碼確認的動作, 請改成
===================================================
william ALL=(ALL) NOPASSWD: /usr/sbin/useradd
===================================================

--
william
20140403

2013年11月24日星期日

台灣阿蓮鄉的第三由來

初代南瓜村長"維廉",曾留下一本"維廉解密"
這本還"活著"的魔法書,
裡面有一個章節,
記載著世上奇妙不為人知道秘密事件.



其中有一段記載著與台灣有關的機密事件,是當時維廉曾經親自參與的,
地點就在台灣南部-阿蓮鄉,

根據台灣文獻記載, 阿蓮的由來有二:
一是康熙末至乾隆年間,有一楊姓墾首招募大批移民分地開墾, 形成很多部落,其中『阿蓮』可能出自平埔族西拉雅族社名之譯音地名,
另有一說,鄉民提議本鄉為佛教聖地,而佛家認為阿蓮是彌陀佛居住的淨土,為配合地方特色,宜將地名的「嗹」字改為「蓮」,經鄉務會議通過,便正式定名。


但在"維廉解密"裡,卻記載著阿蓮鄉第三段驚人的秘密,
原來台灣在西洋50年代, 美國CIA曾經派一組調查人員來台,
台灣當局很重視友邦的申請,派許多台灣仕紳一旁協助,當時的南瓜村長也在其中,
CIA抵台直奔台灣阿蓮鄉, 馬上對附近奇特地形展開調查, 地形呈現鋸齒狀,寸草不生, 引發鑑識人員高度興趣,興奮之情滿溢,
調查工作持續一週才返回美國.

這件事情,蔣家政權以鄉土研究結案,
在當時敏感時機, 並沒有造成任何猜測,
可是真相除了在美國之外, 誰都沒想到"維廉解密"裡面也記載了一部分.
維廉解密記載維廉偷看結案報告的其中一部分, 這部分是美國人詢問當地地陪的內容:
CIA A: Aliens?
地陪(很客氣): YES! 阿蓮!
CIA B: Aliens?
地陪(不耐煩): YES!YES!
CIA C: Aliens?
地陪(火大): YES!YES!YES!阿蓮!阿蓮!阿蓮!

也因為這樣, CIA終結說:
遠古時期,因為外星人降落,所以該地才會呈現巨大鋸齒狀,極像飛行船降落處.
清朝時期,當地基督教、天主教等神職人員,將貌似外星人降落的當地,取名阿蓮(alien), 居民也一直沿用此發音.
另外飛行船從天而降(當時黑夜,月色正明亮),另一邊在高雄田寮的神職人員取名"月世界",意旨月球來的人.

ps.
在美國alien或aliens意指外星人, 這份報告引起美國很大的重視, 但隨著台灣與美國斷交, 也因此不了了之.

2013年10月7日星期一

10歲的老筆電

我有一台筆電用了9年,
筆電上面電源接頭, 因受潮腐蝕萎縮,不能接變壓器使用,
當然電池與光碟機早已不堪使用, 加上硬碟換過兩次, 最後連螢幕與鍵盤也都故障或是不靈敏,
但這些都難不倒我.
電源接頭腐蝕: 請公司機構工程師(james)打開筆電, 再找電子工程師(jy),修好故障的電源接頭,這樣變壓器就可以使用.
電池與光碟機: 不影響使用, 拔掉減輕重量.
螢幕: 外接一台從公司買的15吋螢幕.
鍵盤: 若很不靈敏,就外接usb鍵盤.

2013年9月26日星期四

親愛的我把github搬回家了, 使用gitblit(java版)

git 是很紅的文件版本管理工具,
可以讓團隊在offline的情況下做事, 卻又能夠適時在online的時候, 一起整合.

網路上最紅的服務就屬 github 了 , 大家可以免費登入, 免費註冊自己的專案
也可以選擇公開或未公開,做為企業用途.

若考慮資安資料外洩問題, 也有免費開放原始碼的可以自行安裝
如  gitlab , redmine  與這次介紹的 gitblit

gitblit安裝方法請參考
 http://fromtw.blogspot.tw/2013/09/gitblitjava-git-service.html

筆者建議使用gitblit ,其優點如下:
1. 跨平台(隨便你裝)
2. 安裝容易(其它安裝非常複雜)
3. 備份容易(整包帶走)
4. 還原容易(連https都不用裝,自帶)
5. 具git service功能
6. 開放原始碼
7. 支援https連線, 具透過email將使用者證書(https,git連線加密用途)發放至使用者

缺點就大概是無issue tracker功能

若issue tracker與source code server綁定太緊
將會造成
稽核端、客訴端(新增issue) 與 開發端 (解決 issue) 三方困擾

如稽核端:
來查核, 不想讓稽核端見到真正的問題 , 又需要見到大部分原貌
此時不宜使用issue與project真正綁定的系統,
維護兩套issue tracker(一假一真)又太費時 ,有些audit懂這些東西, 會要求看仔細

如客訴端:
帳號與開發端帳號混一起, 無法讓開發端關起來門(偷偷)修東西
有時候呢, 公司開發單位根本不想讓麻瓜(業務單位,甚至高階主管)知道問題真正所在
, 所以開發端一定想要獨立一套自我管理的git service, 寧願與外界issue tracker 分開.

如開發端:
這些生活在外太空的開發人員, 哪來閒工夫寫程式還一個一個綁定issue寫心得,解bug就很度爛了,還搞什麼issue commit,通常都一次改完, 模糊地宣稱通通修改完畢.
再由測試人員接手, 確認issue是否已解決, 測試人員再到issue tracker更改狀態.
(測試人員不能看source code, 因此需要把issue tracker獨立於source code之外)

除了XP的雙人一起寫程式的概念很好之外, 大部分的專案都毫不考慮人的惰性, 也不考量專案人員是否具備軟體工程素質, 產出若要求太精細,反倒流於形式.
還不如版本釋出,再全面review issue & docuemnt 一次清掉好.


如何安裝gitblit(java 版 git service)

如何安裝gitblit(本文以centos 6.4為例)

1. 下載
   gitblit網站 http://gitblit.com/
   選擇 Gitblit GO (linux)

2. 修改設定擋
   解壓縮下載之程式,
   vi data/gitblit.properties
   視情況修改以下資料
----------------------------------------------
   mail.server =
   mail.smtps =
   mail.port = 25
   mail.username =
   mail.password =
   mail.fromAddress =
   server.httpsPort = 8443
   server.httpsBindInterface = localhost
   server.certificateAlias = localhost
   server.storePassword = gitblit
----------------------------------------------  
   httpsPort 是預設綁定port,可改443這樣瀏覽器就可以直接輸入https
   httpsBindInterface = localhost,將localhost去掉變成空白,可綁定所有網卡ip
   certificateAlias = localhost,將localhost改成主機名稱(請確認dns一致)
   server.storePassword = gitblit, gitblit是存放伺服器key story的安全密碼,請改成你要的
   mail.xxx 若設定正確, 可以直接發送使用者證書

3. 執行authority.sh (請注意,必須在windows狀態下執行)
  (1) 輸入相關資料
  (2) 點選紅色的(new server SSL certificate), 輸入主機名稱,產生認證檔案
  (3) 點選下方new certificate, 產生admin的證書(供瀏覽器與Git使用),輸入的密碼是pem打開pem用
  (4) 將data/certs/admin.zip備份出來
4. 啟動server
   ./gitblit.sh
5. 瀏覽器輸入https://<host name>:8443/
   預設帳號與密碼是admin , 請登入改掉
   **瀏覽器出現憑證錯誤的問題
   若您未來將繼續使用admin登入git,此時可以打開admin.zip,讓瀏覽器匯入裡面的憑證


新增使用者
6. 開瀏覽器,使用admin登入, 新增使用者(若有email記得輸入)
7. 回到步驟3, 產生新使用者的證書,備份出來給新使用者,或是點選email寄發

瀏覽器匯入證書
8. 匯入
   通知該新使用者,執行瀏覽器匯入證書

安裝windows用戶端git程式
9. 下載msysgit與tortoisegit, 然後安裝
   https://code.google.com/p/msysgit/
   https://code.google.com/p/tortoisegit
   安裝完畢重開機

匯入伺服器端的證書
10.手動下指令(dos),找出安裝msysgit的目錄 ,
   通常是 C:\Program Files (x86)\Git\bin
   例如該電腦使用者為 william , 步驟7的證書檔案william.zip已經解開到c:\git_cert目錄
   openssl rsa -in "c:\git_cert\william.pem" -out "c:\git_cert\william.key"
   git config --global http.sslcert  "c:\git_cert\william.pem"
   git config --global http.sslkey   "c:\git_cert\william.key"

   ** --global 是代表電腦只有一個全域證書, 若有多個外部server需要處理,
   需先加入--global, 然後clone repository一份到用戶端電腦的指定目錄,再到該目錄,執行
   git config  http.sslcert  "c:\git_cert\william.pem"
   git config  http.sslkey   "c:\git_cert\william.key"
   第二個外部git server就必須再重來--global , 與去掉--global的步驟

這樣就可以從server上clone一份專案到使用者 電腦, 使用者也可以很方便使用檔案總管做事情

ps. clone repository的時後, 可以打開檔案總管 , 選特定目錄 , 再按滑鼠右鍵選clone


很不錯的參考網站
http://www.cnblogs.com/surfsky/archive/2013/03/18/2965915.html

2013/09/26

2013年9月25日星期三

很好用的私人雲端系統 owncloud , android 用戶端-強化版 啟動了


android 用戶端 , 原始程式已經放在 github 上了
(此程式只有一個強化用的檔案,須配合原始owncloud android程式一起編譯)
  https://github.com/willyann/owncloud_new_photo_observer

編譯好的android 用戶端強化版的 apk, 請到此下載 :
  owncloud-android.apk

原始owncloud android client 請到此下載 :
  https://github.com/owncloud/android

如何安裝owncloud 請參考咖啡偶的快速版本
http://fromtw.blogspot.tw/2013/06/owncloud.html

mobile01 有神人寫詳細安裝過程
http://www.mobile01.com/topicdetail.php?f=494&t=3005915&p=1

對Linux有基本功力的, 可以下載FromTW製作的WCM光碟片(CentOS6.4),
光碟開機後安裝,再下個安裝指令即可馬上擁有owncloud
https://www.copy.com/s/fDBhkbPR1BnY/public/livecd

居然有一鍵安裝這種東西
http://bitnami.com/stack/owncloud

William's Cloud & Mail LiveDVD 1.4 Released!

* WCM_1.4_檔案下載連結.txt ()
http://www.openfoundry.org/of/projects/2301/download
如果你有網域, 懂一些Linux, 就可以自己玩玩看
https://www.copy.com/s/fDBhkbPR1BnY/public/livecd/WCM_1.4
下載後, 先看install.txt
這是使用CentOS 6.4產生的LivdDVD
可直接光碟開機啟動, 或是開機後再點選安裝至硬碟
登入後, 需要參考安裝文件, 才可執行
功能有:
1. mail server (postfix + amavisd + clamav )
2. cloud server 4.0.11 (http://www.owncloud.org)  + android client 1.4.5
3. vpn - xl2tp/ipsec vpn
or
4. vpn - pptd vpn

2013年8月30日星期五

William's Cloud & Mail LiveDVD 1.3 Released!

* WCM_1.3_檔案下載連結.txt ()
http://www.openfoundry.org/of/projects/2301/download
如果你有網域, 懂一些Linux, 就可以自己玩玩看
https://www.copy.com/s/fDBhkbPR1BnY/public/livecd/WCM_1.3
下載後, 先看install.txt
這是使用CentOS 6.4產生的LivdCD
可直接光碟開機啟動, 或是開機後再點選安裝至硬碟
登入後, 需要參考安裝文件, 才可執行
功能有:
1. mail server (postfix + amavisd + clamav )
2. cloud server 4.0.9 (http://www.owncloud.org)
3. vpn - xl2tp/ipsec vpn
or
4. vpn - pptd vpn

2013年8月28日星期三

哪種雲端空間軟體比較好

dropbox  :  A級, 這是雲端產品第一品牌,穩定,檔案可隨時還原, 無 note-taking app
baidu    :  A級, 百度,各方面都很平均,穩定, 無 note-taking app
gdrive   :  A級, 文件編輯整合度強,有 note-taking app(google keep)
skydrive :  A級, M$,文件編輯整合度強,有 note-taking app(one note)
AT&T     :  B級, AT&T Locker , android app只限美國可用 , 不推薦
copy     :  C級, 母公司 Barracuda Networks 撐腰, 推薦理由: 無檔案上傳大小限制(10G照樣傳),但app上傳照片有問題,無 note-taking app
box      :  C級, 無 windows , mac 平台app , 不推薦 , 無 note-taking app
360雲盤  :  C級, android app不穩,無 note-taking app

若你:
1. 只老慮備份照片,用 dropbox , google driver
2. 只老慮資料備份(大量),用copy, 360雲盤
2. 只老慮資料備份(少量),用google driver , skydrive
3. 老慮資料備份(大量)與手機照片備份,用dropbox , baidu
4. 老慮資料備份(少量)與手機照片備份,用dropbox , baidu , google driver , skydrive
5, 其他不推薦

2013年6月27日星期四

CentOS第三方套件來源(LiveTools)(LiveCD)

CentOS第三方套件來源(LiveTools)(LiveCD)
想要製作自己的 LiveCD LiveDVD, 先安裝這些套件

安裝方式:
1. /etc/yum.repos.d/LiveCD
# Name: CentOS LiveCD repository
[livecd]
name = CentOS $releasever - LiveCD
baseurl = http://www.nanotechnologies.qc.ca/propos/linux/centos-live/$basearch/live
enabled=1
protect=0
gpgkey = http://www.nanotechnologies.qc.ca/propos/linux/RPM-GPG-KEY-PGuay2010

2.
yum install livecd-tools syslinux anaconda-runtime

CentOS 6.x


參考資料
https://projects.centos.org/trac/livecd/wiki/GetToolset

--
william 2013/6/27