Author Archives: vincent

Zimbra 整合 ISP 的 mail 主機

Zimbra 採用 postfix 作為 MTA(Mail Transport Agent),postfix  預設在收到內部用戶的 email 後會以自己的 IP 或 NAT 後的 IP 將信件投遞到收件人的主機。通常提供網路服務的 ISP 也會提供足夠容量的 mail server 給客戶使用,如果想要讓 ISP 的 mail server 幫忙將信件投遞到收件人的主機而不是自己的 postfix、Zimbra 來投遞,設定如下:

Postfix

relayhost=[msa.hinet.net]

Zimbra

zmprov -z ms <zimbra FQDN> zimbraMtaRelayHost [msa.hinet.net]

以上的例子是採用 HiNet 的 msa.hinet.net 郵件主機為例。

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
Loading...

java form submit 中文亂碼問題

這個問題陸續遇到幾次了,始終知其然而不知其所以然。這是最近一次的處理案例:

環境

OS: CentOS 5.2 (utf-8)

Database: MySQL 5 (utf-8)

Application server: Tomcat 6

網頁

<input type=text name=keyword>

程式

String keyword=request.getParameter(“keyword”);

網頁的 input 輸入中文 submit 後由以上程式碼接取,原本的中文都變成亂碼。解決的方法是改用以下的接取程式碼,將收到的字串重新編碼。

String keyword=new String(request.getParameter(“keyword”).getBytes(“iso8859-1″),”utf-8”);

Why

Tomcat 在處理 GET、POST 參數時預設是採用 ISO-8859-1 編碼,請參考此 網址 URIEncoding 部份的說明,所以第2 段程式才會 work,請隨著您的作業系統及資料庫編碼設定,調整接取參數的程式碼。

Browser

以上的例子是送一個 keyword 到 tomcat web application 查詢資料,後來出現另一個問題,從 Firefox 送出中文的 keyword 可以正確的查到資料,Explorer 卻查不到,經過測試和查詢相關資料後發現,從 Explorer 送出 keyword 前要用 javascript encodeURIComponent() 編碼後再送出才會正常查到資料。

2008.11.27 加註

上面情形是發生在未指定 form 的 method,根據規格預設會以 get 傳送資料,Tomcat 的文件也沒有說明 URIEncoding 是會針對 get 或 post method 作處理。今天又遇到 form submit 中文亂碼問題,這次也不用重新編碼參數了,直接把 form method 設定 post,問題就解決了。看來 submit 的 form 有中文時,用 post method 會是比較好的選擇。

各種 Application Server URI encoding 的設定在這個 網址 有完整說明。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Ubuntu 8.04 OpenVPN troubleshooting

這兩天想在 Ubuntu 上使用 OpenVPN 連線確發現原本設定好、測試過的 profile 連不上了。Unix 系統的問題當然要先看 log 檔,/var/log/message 沒有任何記錄,最後 google 一下才發現 OpenVPN 連線是由 Network Manager 管理的,log 記錄在 /var/log/syslog。我看到的事件如下:

NetworkManager: <WARN>  nm_vpn_manager_activate_vpn_connection(): nm_vpn_manager_activate_vpn_connection(): no currently active network device, won’t activate VPN.

找不到可用的網路設備?那我是怎麼 google 查資料的 !! 因為我當時是手動指定 IP,把 IP 設定改成預設的 Roaming mode 試看看,改 Roaming mode 就可以了,應該是 Network Manager 的 script 有問題。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

FortiGate 2 WAN 的運用

原廠的這份 交件 有非常詳盡的介紹,我把測試過的部份簡單的介紹一下。

Load balancing

這部份的應用是把對外的流量分散到 2 條 WAN 上,至於走那 1 條電路由 FortiGate 決定,所以內部 NAT 出去的連線可能這次帶 WAN1 IP,下次帶 WAN2 IP,如果有用 ISP 的服務,而該服務會認 IP 的話要特別注意(例如 SMTP)。

設定部份基本上 2 條 WAN port 都要 UP,而且都要有 default gateway,也就是在 FortiGate 上會看到 2 條 default gateway。重點是這 2 個 default gateway 的 distance 要設一樣,FortiGate 會優先使用 distance 值小的路由,設一樣則會動態選擇一條路由出去。另外 firewall NAT policy 如果原本是 internal -> wan1 作 NAT,現在要再加一條 internal -> wan2 作 NAT,二條 policy 都要 enable。

Link Redundancy

這部份的應用是當 WAN1 down 的時候讓流量自動走 WAN2 出去達到電路備援的目的。前面提到 FortiGate 會優先使用 distance 值小的路由,如果 WAN1 是主線路用預設的 distance 10,那 WAN2 備援線路的 distance 就設定大於 10 例如 20。平時看不到這條路由,當 WAN1 down 時這條備援路由就會出現。firwall policy 跟 load balancing 一樣要設2條,而且都要 enable 這樣 WAN1 down 的時候才可以自動切換。

Policy route

如果內部網路有分 DMZ、internal 網段,希望每個網段走各自的 WAN port 出去互不干擾,這時候就必須訂定 policy route。每個網段基本上要有2條 policy route,以 internal 為例:

  1. incoming interface internal,source 192.168.1.0/24 (internal subnet),destination 192.168.2.0/24 (dmz subnet),outgoing interface dmz
  2. incoming interface internal,source 192.168.1.0/24 (internal subnet),destination 0.0.0.0/0.0.0.0 (dmz subnet),outgoing interface wan1

WAN1、WAN2 default gateway 的 distance 設成一樣,firewall policy 設定 DMZ 走 WAN1 NAT 出去,internal 走 WAN2 NAT 出去,這樣內部網段可以互通,2個網段有各自的頻寬也互不干擾。

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 4.00 out of 5)
Loading...