2009年6月17日 星期三

[FreeBSD] 讓 Mail Server 支援 POP3 / POP3s / IMAP / IMAPs 功能 - 安裝 dovecot

測試環境:



  • FreeBSD 7 -  FreeBSD 7.0-RELEASE-p12


步驟:



  1. 編譯與安裝

    • # cd /usr/ports/mail/dovecot ; make install clean ; // 預設就很 ok 了



  2. 建立 SSL 相關資料

    • # openssl req -new -x509 -nodes -out /tmp/public.pem -keyout /tmp/private.pem -days 3650

      • Country Name (2 letter code) [AU]:TW
        State or Province Name (full name) [Some-State]:Taiwan
        Locality Name (eg, city) []:ChiaYi County
        Organization Name (eg, company) [Internet Widgits Pty Ltd]:CYY
        Organizational Unit Name (eg, section) []:CYY
        Common Name (eg, YOUR name) []:
        Email Address []:admin@localhost



    • # cd /etc/ssl/ ; mkdir certs private ; chmod 700 certs private

    • # cp /tmp/public.pem /etc/ssl/certs/dovecot.pem ; cp /tmp/private.pem /etc/ssl/private/dovecot.pem

    • # rm -rf /tmp/public.pem /tmp/private.pem



  3. 啟動

    • # vim /etc/rc.conf

      • dovecot_enable="YES"



    • # /usr/local/etc/rc.d/dovecot start




如此一來,即可使用,可使用以下方式測試



  • POP3

    • # telnet localhost 110



  • POP3s

    • # telnet localhost 995



  • IMAP

    • # telnet localhost 143



  • IMAPs

    • # telnet localhost 993




指令



  • POP3

    • USER id

    • PASS password

    • QUIT



  • IMAP

    • - login id password

    • - logout




2009年6月16日 星期二

Opera Unite



一個軟體架構與 NUWeb 相似的 Project ,以 Browser 結合 Client 和 Server 架構,讓使用者的電腦既是 Client 又是 Server 的軟體。
















以 NUWeb 來說,當初秉持著「民有、民治、民享」的信念而實作,希望盡可能地讓使用者創作的資料、知識,保留其個人的權力,不再受現況 Web 2.0 那種 Server 端鯨吞使用者的權力,以此,創造研發出 NUWeb 服務。


目前 Opera Unite 恰好成品像 NUWeb 的雛型,未來將會如何變化?或許雲端架構又會再掀一股風波吧!


2009年6月15日 星期一

[PHP] 透過 Web Server 背景執行 PHP Script 程式

明明 PHP 就是常常搭配 Apache HTTP Server 透過瀏覽器直接執行的程式語言,那為什麼又需要用到背景執行呢?


這個理由是因為我把 PHP 當作像 Perl 、bash、csh 等 script 語言來使用,然而,當這個 script 需要花費大量的時間處理時,背景執行就是個不錯的選擇。


我以為寫一個小網頁用 shell_exec( '/usr/local/bin/php /tmp/test.php &' ); 的方式就能搞定,但試了很久並沒有那種效果,最後我發現必須把輸出導向才行!



  • shell_exec( '/usr/local/bin/php /tmp/test.php > /tmp/cmd_out &' );


另外,也可以直接用 ` 來執行



  • `/usr/local/bin/php /tmp/test.php > /tmp/cmd_out &`


至於 Windows 上則是可以使用類似下面的方式



  • pclose(popen("start /B C:\php\php.exe > C:\temp\out", "r") );


看來我寫的程式架構又可以再更新一下了!


2010/01/24 更新!


關於 Windows 的運行方式,如果 Web Server 只有一支 process 還是會有問題,請參考 Executing background processes from PHP on Windows ,可改成


<?php
$cmd = 'C:\php\php.exe C:\test.php' ;
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C $cmd", 0, false);
?>


其中 cmd /C 的部份,可以自行在 Windows 下的 cmd mode 打入 cmd /? 可看看說明囉!至於 WScript.Shell 執行時所帶的參數意義,可以到 Run Method (Windows Script Host) 查看。


相較於之前的 "start /B ..." ,原先在 taskmgr 會看到有一支 php.exe 在運行,改成新的方式後,會再多一支 cmd.exe 囉


2009年6月10日 星期三

[Unix] svn db 之 backup script

前天下午,學校突然發生大停電,讓我回想起自己好像三月份起就忘了備份自己的 project 了,這個原因是基於壓縮後的單檔已經超過 Gmail 附件的檔案大小的關係,前陣子 bluesway 恰好有提到自己的備份 script ,就要來稍微修改修改。


使用上非常懶,直接對 svn db 壓縮,然後丟到 gmail 上,在透過 filter 將帶有 "[Backup] My Project with SVN Servce" 字樣的標題信件進行管理即可。最後就是搭配 crontab 來執行囉。


#!/bin/sh

DATE=`date +%Y%m%d%H%M`
BASE_PATH="/tmp"
BACKUP_PATH="/home/uid/svn/"
BACKUP_TEMP="${BASE_PATH}/project_svn.${DATE}.tgz"
BACKUP_EMAIL="email@gmail.com"
PREFIX_NAME="${BACKUP_TEMP}."
MAIL_SUBJECT="[Backup] My Project with SVN Servce"

/usr/bin/tar -zcvf ${BACKUP_TEMP} ${BACKUP_PATH} > /dev/null 2>&1
if [ -f ${BACKUP_TEMP} ]; then
        /usr/bin/split -b 14m ${BACKUP_TEMP} ${PREFIX_NAME}
        filelist=`/bin/ls  ${PREFIX_NAME}*`
        for fn in ${filelist}
        do
                #echo "/usr/local/bin/mutt -s \"${MAIL_SUBJECT} - Part - ${fn}\" -a ${fn} ${BACKUP_EMAIL}"
                test -r ${fn} && /bin/ls -la ${BACKUP_PATH} | /usr/local/bin/mutt -s "${MAIL_SUBJECT} - Part - ${fn}" -a ${fn} -b ${BACKUP_EMAIL}
        done
        #ls -1d ${PREFIX_NAME}* | xargs -n 1 -J % /usr/local/bin/mpack -s ${BACKUP_TEMP} % ${BACKUP_EMAIL}
        rm -rf ${BACKUP_TEMP}*
fi
#restore: cat ${PREFIX_NAME}* >> RESTORE_NAME


旅遊節目之背後的故事

昨天早上,無意間看到這篇文章:脫光之後...然後呢??,這是旅遊節目主持人陳櫻文的部落格文章,我也才發現原來她還有參加幼幼台的,是布丁姐姐。


我很少出門、很少看電視、很少接觸規律生活外的事物,宅度很高,所以,週末時總會期待看些旅遊節目。我記得我第一次看見她時,覺得很像侯佩岑,好像正在介紹歐洲那邊的故事吧。儘管不是很熟練的感覺,如語言啊或什麼的,當時我覺得她的特色就是有活力,沒想到,她還是非常敬業的主持人,甚至我覺得有點過頭了!


看完這篇文章,深深覺得,世上充斥著許多看不見的故事。回憶起這幾年的感觸,有時追逐著他人的步調,總覺得對方好強好厲害,貪心的下場,卻沒想到,有得必有一失,每人一天僅有 24 小時啊!


忘記什麼時候開始,當老妹跟我說最近的旅遊節目幾乎轉型成吃吃喝喝後,恰好週末我也開始較常寫程式,便也越來越少看旅遊節目。或許,也戒掉這看似美好的刻意安排。但不可否則的,我開始比較想跟家人往外頭走走吃吃喝喝了。