2013-10-09

Linux 下用 haparm 測試硬碟效能

Linux 下用 haparm 測試硬碟效能


hdparm -d0 /dev/sda1

/dev/sda1:
 setting using_dma to 0 (off)

/etc/rc.d/rc.local 最後面加上一行 /sbin/hdparm -d1 -c3 -m16 /dev/hda 這樣每次開機後,硬碟的 DMA 就會開啟,不必每次手動設定。

hdparm -d0 /dev/sda1

/dev/sda1:
 setting using_dma to 1 (on)

hdparm -tT /dev/sda1

/dev/sda1:
 Timing cached reads:   4778 MB in  2.00 seconds = 2392.92 MB/sec
 Timing buffered disk reads:  100 MB in  0.74 seconds = 135.26 MB/sec

如果出現 HDIO_SET_DMA failed: Inappropriate ioctl for device,下載  hdparm

# tar -zxvf hdparm-9.9.tar.gz
# cd hdparm-9.9
# make
# make install

2013-10-04

Postfix 三十天就上手 (全)

Postfix 三十天就上手


經過了上篇  安裝 Postfix 之後,相信很多讀者對於 Posetfix 設定上有很多疑惑,所以此篇特別整理了 Postfix 的基礎概念與設定技巧,加強讀者在管理 Postfix 時能夠更有效的管理維運。


Postfix 三十天就上手-Day 01 Postfix 是什麼

要學 Postfix 之前,當然是要先知道什麼是 Postfix ,本篇文章,會先對 Postfix 作間單的介紹讓大家知道 Postfix 是什麼,它有哪些功能,以及如何運用它。

Postfix 的用途是『郵件伺服器』,以前大家比較熟悉的可能是『 Sendmail 伺服器』,這個 Postfix 與 sendmail 是類似的東西,那就是『MTA』啦,既然都是 MTA ,這個 Postfix 最早之前的用途也是想要用來『取代 sendmail 』。

Postfix 是由 Wietse Zweitze Venema ( http://www.porcupine.org/wietse/ ) 所發展的。sendmail 雖然很好用,但是安全性卻不足,尤其效能上是最大的困擾。

Venema 博士就在 1998 年利用他老大在 IBM 公司第一個休假年進行一個計畫:『設計一個可以取代 sendmail 的軟體套件,可以提供網站管理員一個更快速、更安全、而且"完全相容"於 sendmail 的 mail server 軟體!』

Venema 博士也在 1998 年首次釋出這個自行發展的郵件伺服器,並定名為 VMailer。不過為了避免註冊的商標很類似,引起一些註冊上面的困擾。所以 Venema 博士就將名稱改為 Postfix !這個 Postfix 有『在什麼什麼之後修正』的意思(大改就是在 sendmail 之後修正所以這樣取名吧)。

Postfix 改善了 sendmail 安全性上面的問題,改良了 mail server 的工作效率,更由於其設定檔完全為 ASCII 碼,且設定內容都是『人類看的懂得語言!』因此,你可以輕易的由 sendmail 改良到 Postfix 上面!


Postfix 三十天就上手-Day 02 名詞解釋 MUA MTA MDA

MUA ( Mail User Agent ):顧名思義, MUA 就是『郵件使用者代理人』,
您如果需要收發郵件,除了現在流行的 webmail ,一般您會需要使用 mail 的收發軟體(也有人人喜歡叫他 mail client ) 這個幫您進行郵件收發工作的東西,就是MUA ( Mail User Agent ) Client 端的用戶都需要透過各個作業系統提供的 MUA 才能夠使用郵件系統。

舉個例子來說, Windows XP 裡面的 OutLook Express 或是 Microsoft Office裡的 Outlook,還有免費又好用的 Thunderbird ( http://www.mozilla.org/en-US/thunderbird/ )
都是 MUA 的一種!

MUA 主要的功能就是收受郵件主機的電子郵件,以及提供使用者瀏覽與編寫郵件的功能!

MTA ( Mail Transfer Agent ) : 顧名思義, MTA 就是『郵件傳送代理人』,它要負責幫使用者傳送郵件,當MUA要收送信件的時候,就需要先找 MTA 連絡一下。

MTA 的基本功能如下:

1.接收外部主機寄來的郵件
2.幫使用者傳送 ( 寄出 ) 郵件
3.提供使用者接收自己的郵信

通常我們所說的 Mail server ( 郵件伺服器 ) 就是指 MTA

MDA ( Mail Delivery Agent ) : 顧名思義,MDA 就是『郵件遞送代理人』,主要的功能就是將 MTA 所收受的信件,依照信件的 Flow ( 送到哪裡去 ) 來將該信件進行放置到本機帳戶下的郵件信箱中 ( Mailbox ),或者是再經由 MTA 將這個信件送到下個
MTA 去。

今天您已大致了解郵件傳送中,常會用到的名詞,明天將會為您解是郵件是如何傳送。


Postfix 三十天就上手-Day 03 郵件如何傳送

該知道的名詞知道了之後,接下來我們就來看郵件如何傳送。

上一篇說明了 MUA、MTA 跟 MDA,知道了這些名詞之後,接下來想知道郵件傳送流程也就不困難了。

MUA 您就把它想成是要寫信的人
MTA 您就把它想成是郵局吧。
MDA 您就把它想成是郵差吧。

平常如果要些封信給朋友,寫完通常要送給郵局,郵局會先送交給離目的地最近的郵局,最後再送給您的朋友。

以上幾句就說明郵件傳送奧義,對應到電子郵件傳送流程如下。

  1. 使用者利用 MUA 寄信到 MTA -->我們寄信到郵局去。
  2. MTA 轉送到目的帳號所屬的 MTA--> 郵局作業都是先送到離目的地最近的郵局(所以寫郵遞區號才會快),此段就像是 MTA 對 MTA 的郵件 relay。
  3. MTA 收到自己的信件,交由 MDA 發送到該帳號( 如果此信件的目的地屬於該郵局,則交給郵差發送到收件者的信箱)

Postfix 三十天就上手-Day 04 設定檔結構說明

在要進行 Postfix 設定之前,第一步當然就是先了解設定檔的結構,這樣您設定起來才會快速又正確。

以 CentOS 為例來說,Postfix 的設定檔預設位置在 /etc/postfix 裡面,主要的設定檔案如下:

/etc/postfix/main.cf
從這個檔名您大概就可以猜到,這個設定檔就是 postfix 最主要的內容,這個檔案本身基本上就是一個簡單的 postfix 說明文檔。

/etc/postfix/master.cf
此檔案規範了 postfix 中,process 運作的參數,從檔名您就知道他是老大囉,您就是透過它來告訴 process 做事方法囉!

/etc/postfix/access
當您需要對某些伺服器 ( Hostname or IP ) 作 relay 或者是 deny ,需要使用的檔案。不過這是預設的位置,複雜的郵件伺服器設定大多會配合管理者的習慣,在 main.cf 中指定檔案。

/etc/postfix/aliases
此檔案就是讓您設定別名,與 naccess 一樣這是預設的位置,複雜的郵件伺服器設定大多會配合管理者的習慣,在 main.cf 中指定檔案。


Postfix 三十天就上手-Day 05 佇列 (Queue)

了解Postfix 的佇列可以幫助您判斷郵件目前的狀態。

您可以由上一篇中介紹的 main.cf 檔案中,找到 queue_directory 的參數,此參數會指定佇列存放的目錄,預設值是設定在 /var/spool/postfix 。

每一個佇列都擁有一個子目錄,停留在該佇列的郵件都會存在該子目錄下,存在哪個佇列也就代表著目前該郵件的狀態。

佇列說明如下:

incoming
新進的郵件都會送進去 incoming 的佇列 ,postfix 會掃描 incoming 的佇列,並將郵件移往active的佇列。

maildrop
postfix允許沒有權限的 sendmail 程式將郵件放到 maildrop 的佇列中。就算 postfix 目前沒有運作您也可以直接將郵件放入,postfix 一啟動就會到 maildrop 進行檢查。

deferred
當有部分收件者無法收件,且可收件的人員都已送達時,就會將郵件放入 deferred 的佇列。

active
當郵件準備要傳送時,就會進入到 active 的佇列。

hold
放到 hold 的佇列的郵件,不會被週期性的傳送,並等待系統管理者來手動處理,如果郵件在停留在此佇列超過 maximal_queue_lifetime 參數所設定的時間,就會被退回給寄件者。

corrupt
如果有損回的佇列檔就會被放到 corrupt 的佇列,等待系統管理者處理。
以上了解了 postfix 的佇列之後,您就可以依照的佇列判斷目前郵件的狀態


Postfix 三十天就上手-Day 06 常用指令說明

利用Postfix 所以供的命令列指令,可以幫助您更輕鬆管理郵件伺服器的工作。
今天的介紹會將重點放在日常操作比較需要的地方,如果對該指令有需要更進一步了解,可以參考一下指令的使用說明,Postfix 所提供的命令列指令有一個共通點,就是全部都使用post開頭。

指令說明如下:

postfix
用來啟動、停止跟重新載入設定檔,使用上配合參數如下:

啟動
檢視原始檔複製到剪貼簿列印關於
postfix start  

停止
檢視原始檔複製到剪貼簿列印關於
postfix stop  

重新載入設定檔
檢視原始檔複製到剪貼簿列印關於
postfix reload

postmap
postmap主要是將文字檔的內容建立出索引對照檔,ex:將 /etc/postfix/virtual 轉為 /etc/postfix/virtual.db
postmap hash:/etc/postfix/virtual  

另外它還有另外一個很重要的功用,用來 debug (執行 "postmap -q")。您可以利用 postmap 來檢查對照表中傳回的項目是否與您預期的一樣。

ex: 檢查 /etc/postfix/access_sender 中 key 為 funkent@ithome.com.tw 的 value
postmap -q funkent@ithome.com.tw hash:/etc/postfix/access_sender

postalias
功能類似 postmap,是將別名檔建立一個索引別名,postalias 必須在別名檔上使用。

postcat
postcat 用來顯示郵件內容,使用時須要提供郵件 ID 。
ex:查看郵件ID為 0E3569009C 的內容
postcat -q 0E3569009C

postlog
postfix 允許外部程式 (如 shell script ) 使用postlog,將訊息寫到 maillog 中。 ex: 將 This is a test 寫入 maillog
postlog This is a test  

postqueue
postqueue 是 postfix 提供給 user 對上一篇介紹的佇列進行操作的使用者介面,參數使用如下:

重送所有佇列中的郵件
postqueue -f  

列出佇列中內容
postqueue -p

PS:postqueue 需要在 postfix 啟動的情況下才能運作。

postsuper
postsuper 是提供管理者維護 postfi x佇列的工具,執行 postsuper 需要有 root 權限。
最常使用的就是刪除佇列中卡住的郵件, 下列範例會將郵件 ID 為 0E3569009C 的郵件從佇列中移除。
postsuper -d 0E3569009C

正所謂工欲善其事,必先利其器!以上了解了 postfix 提供的工具之後,您就可以更輕鬆的管理postfix。


Postfix 三十天就上手-Day 07 Mail Server 的 DNS

郵件伺服器要如要對外正常收送郵件,當然最先必要條件就是讓別人可以透過DNS找到你的伺服器。

要讓您的 Mail Server 正常在網際網路上運作,請先設定好 DNS,建議最少將下列3種 Type 的 Resource record 設定好。

A record
address record --一筆 A record 會對應到一個 ip address,您的 mail server 需要完全合法的的主機名稱,讓客戶端能夠找到您的主機。如:mail.ithome.com.tw  

PTR record
pointer record--由 ip address 反解到主機名稱就需要使用 PTR record ,您的主機名稱應該要可以被反解,因為在這個垃圾郵件氾濫的時代,如果不能被反解是很容易被判斷成為垃圾郵件。

MX record
mail exchange record --用來說明那些伺服器負責該網域的郵件服務,您可以有多台郵件伺服器來為您的網域作郵件服務,透過 MX record 就能找到這些服務的伺服器的 ip address。

在設定 DNS 的時候,您可以將 MX record 指到 A record,另外為企業為了避免遇到郵件伺服器掛點害郵件無法正常運作,對外通常都會有超過一台的郵件伺服器,也就是會有多筆的 MX ,當由郵件送到該網域時,會依 MX 的順序來寄送,如果第一台 MX 紀錄的主機掛點,就會送到順序第二的伺服器。

在此順便分享一個小撇步,通常垃圾郵件伺服器都會將垃圾郵件送給最後一台 MX,且它不會重送,所以有一招避免垃圾郵件的方式是將最後的 MX 指到空的IP

不過現在垃圾郵件不斷進化,如何防垃圾郵件已經變成系統管理員最頭痛的問題了。


Postfix 三十天就上手-Day 08 郵件日誌 (maillog)

系統管理員最好的朋友就是 log了,想知道系統在搞什麼鬼,最好要知道 log 跟你說什麼?

當您要對您的 mail server作 debug 時,第一個要想到的就是郵件日誌 ( maillog ),postfix 使用syslog 紀錄 maillog,您可以在 /etc/syslog.conf 查看 maillog 的位置。

一般建議設定的設值如下:

mail.none 將不會把郵件訊息存在  /var/log/messages,避免大量郵件日誌搞亂你的系統訊息。
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

再將 mail 的 log 單獨寫到 /var/log/maillog 中。
# Log all the mail messages in one place.  
mail.*                                                  -/var/log/maillog  

在 maillog  中還有一個很重要可是卻可能被初學者忽略的問題,就是系統時間時間戳記,正確的系統時間對 mail server 來說相當的重要,尤其遇到需要與其他 mail server 管理者進行 debug 時,非常需要一個精準的時戳來查核。


Postfix 三十天就上手-Day 09 信件代轉 (relay)

了解代轉避免您的伺服器變成垃圾發送者。

開放式代轉 ( Open relays ) 可能會讓您的郵件伺服器變成垃圾發送機,可以說是系統管理員的大噩夢。

所以 Postfix 在預設只會允許你的網域內的郵件代轉。

您可以透過 mynetworks_style 設定一般的待轉權限,設定如下:

mynetworks_style = class
將 mynetworks_style 設定為 class 時,postfix 將會把代轉範圍放寬到伺服器所設定的 IP 的 class 。

mynetworks_style = subnet
將 mynetworks_style 設定為 subnet 時,postfix 將會把代轉範圍限定在伺服器所屬的子網路。

mynetworks_style = host
將 mynetworks_style 設定為 hos 時,postfix 將會把只允許自己主機進行代轉。

另外您也可以透過設定 mynetworks 來設定獨立允許的代轉,設定方法如下:
mynetworks = 127.0.0.0/8, 192.168.1.0/24, 192.254.1.30

請以逗號作為分隔。


Postfix 三十天就上手-Day 10 建立別名 (Alias)
 
使用別名 ( Alias ) 可以讓大家更好記得您的 e-mail address。

一般系統開帳號,會使用比較像類似  m91001 這類的英文字搭配數字(如工號學號),此時您的 e-mail address 可能就會長的像 m91001@ithome.com.tw 。

您會發現這樣別人很難從你的 e-mail address 聯想到你是誰。此時您就需要使用別名,假設您的名子是 Steve Jobs,您一定會希望您的 e-mail address長的像 steve.jobs@ithome.com.tw,讓別人個好記得你的 e-mail address (尤其業務人員更是需要)。

另外還有一個狀況,假設您跟另外兩個同事 ( m91002,m91003 )都需要收到 ithelp@ithome.com.tw的郵件時,ithelp@ithome.com.tw 就是像是一個郵件群組,希望大家有問題要問得時候都寄到這個郵件信箱中,此時一樣可以透過建立別名來達成。

第一步您需要先將這些別名對應到您的需要的系統帳號,您可以編輯 /etc/postfix/aliases,加入的項目如下:
#user
steve.jobs: m91001  
#group
ithelp:     m91001,m91002,m91003

編輯完畢後,您還需要執行 postalias hash:/etc/postfix/aliases 這樣才會更新你的 aliases.db 。

別名建立好之後,您就可以試著發送測試的郵件測試看看囉!


Postfix 三十天就上手-Day 11 利用 LDAP 建立別名 (Alias)
 
利用 LDAP 讓你的 postfix 更好用。

昨天已經跟大家介紹如何建立別名。相信您看完昨天的文章之後,可能會產生一個小小疑惑,那就是假設我有一千個以上的帳號,是不是會造成檔案很難維護,又如果說你要有多台postfix 那檔案不一致不是很麻煩嗎?

這個時候您就可以搭配 LDAP,小弟個人比較愛好使用 OpenLDAP,為了要讓您的 Postfix 使用LDAP 來當作查看的對照表( MAPS ),您需要先在 main.cf 先定義 LDAP 的 source,您需要編輯main.cf 並定義 alias_maps 如下範例:
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf

另外您的 /etc/postfix/ldap-aliases.cf 範例如下:
server_host = ldap.ithome.com.tw  
search_base = dc=ithome, dc=com, dc=tw

完成以上設定後,假設您的 Postfix 收到一封寄給 Steve.Jo s 的郵件,當它在 /etc/aliases 中找不到時,就會連線到 ldap.ithome.com.tw,由於我們沒有指定 ldap 使用的 port ,所以他會預設使用 port 389 ,另外我們也沒有指定 bind 的 user(password),所以他會 bind anonymously,然後搜尋dc=ithome, dc=com, dc=tw 這棵樹,找出 mailacceptinggeneralid 這個屬性( attribute )為 "Steve.Jos" 的項目( entry ),然後回傳此項目的 maildrop

利用這樣的方式,就算您有上千個帳號,就算您有多台 postfix,都可以簡單管理。


Postfix 三十天就上手-Day 12 利用 MySQL 建立別名 (Alias)

利用MySQL 讓你的postfix 更好用。

昨天已經跟大家介紹如何利用 LDAP 建立別名。相信您看完昨天的文章之後,可能也會除了LDAP 是否也能利用資料庫?

沒錯今天我們就接著來介紹利用 MySQL 建立別名( Alias ),跟 LDAP一樣您需要先告訴 postfix要去找 MySQL,一樣編輯 main.cf 並定義 alias_maps 如下範例:
alias_maps = mysql:/etc/postfix/mysql-aliases.cf  

接著在 /etc/postfix/mysql-aliases.cf 您需要告訴 postfix 如何去參考資料庫,如下列範例:
# 設定要連入的主機
hosts = mysql.ithome.com.tw  

# 設定要登入資料庫的帳號跟密碼  
user = ithome_user  
password = ithome_password

# 設定使用的資料庫名稱  
dbname = mail_db

# 設定查詢條件
query = SELECT maildrop FROM mxaliases WHERE alias='%s' AND status='active'  

PS:當您使用 MySQL 來查詢的時候,要記得考量到 postfix 的大量連線數,很多時候容易因為後方的執行效率導致前方的 postfix 變慢。


Postfix 三十天就上手-Day 13 main.cf

說明 main.cf 基本語法

在第四天的時候有說明過 Postfix 三十天就上手-Day 04 設定檔結構說明,相信大家看完之後對於 postfix 主要設定檔與作用有了一個大概的概念。

今天我們就針對 main.cf 說明一下此檔案設定語法,postfix 預設將 main.cf 放在 /etc/postfix 的目錄下,該檔案的 owner 預設為 root,所以您要編輯的時候,需要使用 root 進行編輯。

postfix 在 main.cf 中使用的參數設定方法,與 UNIX shell 的變數設定方式類似,您可以如下列範例將等號左邊的數值(設定值)設定給等號右邊的參數。ex:
parameter = value  

除了直接設定設定值給參數,您也可以將某一參數設定為另外一個參數的設定值,就像變數使用的方法一樣,您只要在開頭使用錢字號 "$",如以下範例:ex:
other_parameter = $parameter  

這裡要特別跟大家說明,postfix 與 UNIX shell 有兩點比較不一樣的地方,說明如下:

第一:Postfix 不使用雙引號
第二:就算在設定 $parameter 的設定值之前您一樣可以使用 $parameter

最後,當您變更了mail.cf 的設定值之後,請記得要在 root 的身分下執行下列指令,讓您的postfix ( running ) 重新載入設定檔。
postfix reload 


Postfix 三十天就上手-Day 14 改寫郵件地址

利用Canonical address mapping 改寫郵件地址

在第10天的文章 Postfix 三十天就上手-Day 10 建立別名(Alias) 中有說明利用別名可以讓一個系統帳號有多個 e-mail address,當 user 在收信的時候,我們可以讓 postfix 幫忙將這些系統帳號的e-mail 在 postfix 把郵件地址改寫為您希望設定的 e-mail address,當然改寫的目的有很多,比如說把 "username" 轉到 "username@ithome.com.tw",或是 把 "username@hostname" 轉到 "username@hostname.ithome.com.tw 等等之類,其他目的我們就不多談,今天主要介紹利用Canonical address mapping 改寫郵件地址。

今天的範例假設使用者的 login name是 steve,但是我們希望把他換成全名 "steve.jobs"。

Canonical 預設是被停用的 ( disabled ),您需要在 main.c f中設定 canonical_maps 這個參數。

Step1.編輯 main.cf 設定 canonical_maps 參數如下:
canonical_maps = hash:/etc/postfix/canonical

Step2.編輯/etc/postfix/canonical內容如下:
steve        steve.jobs  

這樣就可以讓postfix幫您改寫郵件地址。


Postfix 三十天就上手-Day 15 利用 LDAP 改寫郵件地址

利用LDAP 當成你的 postfix 的 lookup table。

昨天已經跟大家介紹如何改寫郵件地址。如果您有讀過前幾天的文章,您也許會想說是否一樣可以利用 LDAP 作為 Canonical address mapping 的 lookup table,這樣就算您有一千個以上的帳號,也不會造成檔案很難維護,又如果說你要有多台 postfix 那檔案不會不一致。

為了要讓您的 Postfix 使用 LDAP 來當作查看的對照表 ( MAPS ),您需要先在 main.cf 先定義LDAP 的 source,您需要編輯 main.cf 並定義 canonical_maps 如下範例:
canonical_maps = hash:/etc/postfix/canonical,ldap:/etc/postfix/ldap-canonical.cf  

當然如果您如果完全不想使用 local file ,只使用 LDAP 來當 lookup table,您可以改寫如下:
canonical_maps = ldap:/etc/postfix/ldap-canonical.cf  

另外您的 /etc/postfix/ldap-canonical.cf 範例如下:
server_host = ldap.ithome.com.tw    
search_base = dc=ithome, dc=com, dc=tw    
query_filter = (&(mailacceptinggeneralid=%s)  
result_attribute= mail

另外LDAP 的 Data假設內容節錄如下:
mail: Steve.Jobs@ithome.com.tw  
uid: m91001  
cn: ITHome Steve Joes  
maildrop: m91001@ithome.com.tw  
mailacceptinggeneralid:Steve@ithome.com.tw

完成以上設定後,假設您的 Postfix 收到一封寄給 Steve@ithome.com.tw 的郵件,就會連線到ldap.ithome.com.tw,然後搜尋 dc=ithome, dc=com, dc=tw 這棵樹,找出 mailacceptinggeneralid 這個屬性 ( attribute ) 為 "Steve.Jos" 的項目( entry ),然後回傳此項目的 mail,取得回傳的 mai l值之後,回拿這個回傳值來改寫郵件地址。

PS:如果你的 LDAP Query 結果回傳超過一筆資料,會讓你的郵件地址改寫機制失敗,您會在maillog 看到如下列的錯誤訊息:
Oct 11 07:51:42 mailsrv postfix/cleanup[25578]: warning: D6652F8D11: multi-valued canonical_maps entry for Steve@ithome.com.tw

為了避免發生邏輯上的設定錯誤,您可以對照 Postfix 三十天就上手-Day 06 常用指令 說明中的postmap 來檢查對照表中傳回的項目是否與您預期的一樣。

範例如下:
postmap -q Steve@ithome.com.tw ldap:/etc/postfix/ldap-canonical.cf

正確的話就會得到下列結果:
Steve.Jobs@ithome.com.tw

如果回傳多個值,那您就要看看您邏輯或是資料哪裡錯囉!


Postfix 三十天就上手-Day 16 利用 MySQL 改寫郵件地址

利用 MySQL 當成你的 postfix 的 lookup table。

昨天已經跟大家介紹如何何利用 LDAP 改寫郵件地址。如果您有讀過前幾天的文章,您也許會想說是否一樣可以利用 MySQL 作為 Canonical address mapping 的 lookup table,這樣就算您有一千個以上的帳號,也不會造成檔案很難維護,又如果說你要有多台 postfix 那檔案不會不一致。

為了要讓您的 Postfix 使用 MySQL 來當作查看的對照表 ( MAPS ),您需要先在 main.cf 先定義MySQL 的 source,您需要編輯 main.cf 並定義 canonical_maps 如下範例:
canonical_maps = mysql:/etc/postfix/mysql-canonical.cf  

另外您的 /etc/postfix/mysql-canonical.cf 範例如下:
# 設定要連入的主機  
hosts = mysql.ithome.com.tw  

# 設定要登入資料庫的帳號跟密碼  
user = ithome_user    
password = ithome_password  

# 設定使用的資料庫名稱  
dbname = mail_db  
 
# 設定查詢條件  
query = SELECT mail FROM user WHERE mailacceptinggeneralid='%s' AND status='active' limit 1

這裡跟LDAP比較不一樣的作法是,我們可以限制指回傳一筆資料,拿回傳的第一筆去改寫郵件地址改。


Postfix 三十天就上手-Day 17 限制 Client 的連線頻率

調教您的Postfix 效能。

postfix 預設並不會對 Client 端的連線頻率設限,但是現在的網路實在是跟以前不一樣了,一個什麼防護都沒有的 postfix 放到網路上,我想可以活的天數不會太久。

所以今天就來跟大家講如何限制 Client 端的連線頻率,避免遇到惡意人士吃掉你的資源。

第一步、您需要告訴 postfix 要計算多久期間的的連線數,假設我們要現在每分鐘不能超過的連線數,所以您需要編輯 main.cf 並定義 client_connection_rate_time_unit 如下範例:
client_connection_rate_time_unit = 60s  

第二步、設定在期間內允許單一 Client 的連線數,假設我們要設定允許的連線數為 30,所以您需要編輯 main.cf 並定義 smtpd_client_connection_rate_limit 如下範例:
smtpd_client_connection_rate_limit=30

設定完成之後記得要執行 postfix reload


Postfix 三十天就上手-Day 18 控制每個 Client 的同時連線數

調教您的Postfix 效能。

Postfix 三十天就上手-Day 17 限制 Client 的連線頻率 中已經知道如何限制連線頻率,當然在效能上還需要考慮到同一時間的連線數,所以今天就來跟大家說明如何控制每個 Client 的同時連線數。

postfix 預設每個 Client 是預設程序數的一半,這樣的設定可能會讓兩個惡意 Client 就吃光您允許的 smtpd process 數。

您可以透過 smtpd_client_connection_count_limit 來控制每個 Client 的同時連線數,假設我們要設定允許的連線數為20,所以您需要編輯 main.cf 並定義 smtpd_client_connection_count_limit 如下範例:
smtpd_client_connection_count_limit=20

PS:請注意,建議此數值不應大於 smtpd 與 default_process_limit 大,否則一個 Client 就把 process 吃光囉!

Exception
如果某些 Client 您希望他不要受到限制,您可以透過smtpd_client_connection_count_limit_exceptions 來設定,預設已經允許 mynetworks,您可以另外加上您需要設定的主機,如以下範例:
smtpd_client_connection_count_limit_exceptions=$mynetworks, .ithome.com.tw,192.168.45.0/24

設定完成之後記得要執行 postfix reload


Postfix 三十天就上手-Day 19 淺談 Lookup Table ( 對照表 )

說明Postfix的對照表。

postfix 使用 lookup tables 來查看需要的資訊,如前面幾篇所介紹的 Postfix 三十天就上手-Day 10 建立別名( Alias )Postfix 三十天就上手-Day 14 改寫郵件地址,都是 postfix 使用 lookup table 的範例,
另外也有人叫它作 maps (從參數設定可以看出來),反正我們中文就翻成對照表吧!

這些對照表一個共通的特性,就是-- 左手值(Key) 對應 右手值(Value),如 Postfix 三十天就上手-Day 10 建立別名 ( Alias ) 範例中的 lookup table 如下:
steve.jobs:     m91001  

左手邊的部分為 Key ( steve.jobs ),右手邊的部分為 Value( m91001 ),postfix 依照對照表的 key找到它所對應的 value。

postfix 支援多種不同類型的對照表,您可以執行下列指令來查看您的 postfix 支援哪些類型的對照表:
postconf -m

另外當您編輯 main.cf 來設定 postfix 使用哪一個 lookup table 時,都會以 type:table 來開頭,其中type 就是指對照表類型,如下列設定中,type 就是 hash
alias_maps = hash:/etc/postfix/aliases

以下是幾個比較常支援的類型:
btree  
cidr  
environ  
hash  
ldap  
nis  
pcre  
proxy  
regexp  
static  
unix  


Postfix 三十天就上手-Day 20 使用 LDAP 當 Lookup Table

說明 Postfix 使用 LDAP 作為對照表。

postfix 使用 lookup tables 來查看需要的資訊,先前就有說明如果使用檔案來維護,當你帳號多機器多的時候,可能就會讓你太費力,所以使用 LDAP 來當 Lookup Table 會是一個不錯的選擇,今天就來對他好好說明一下。

如同上一篇所提到對照表共通的特性,左手值(Key) 對應 右手值(Value),在 LDAP 中您需要定義 postfix 來查詢時的 Key的屬性,邏輯如下:

對照檔方式:  Key     Value
LDAP 查詢方式:   Query_filter    Result_attribute  

Postfix 三十天就上手-Day 15 利用 LDAP 改寫郵件地址 範例中說明,使 query_filter 來定義查詢的 Key 屬性,並設定 result_attribute 回查詢後對映傳回的 Value。
範例節錄如下:
server_host = ldap.ithome.com.tw      
search_base = dc=ithome, dc=com, dc=tw      
query_filter = (&(mailacceptinggeneralid=%s)    
result_attribute= mail  

上列範例中您可以看到在對 LDAP 進行查詢時,常會使用倒置換的運算元,說明如下:
%s
完整的mail address (ex:m91001@ithome.com.tw)
%u
取得@先前的 uid (ex:m91001)
%d
取得@之後的 domain (ex:ithome.com.tw)


Postfix 三十天就上手-Day 21 請求主機名稱

對抗垃圾郵件招數一,請求主機名稱。

在現在的網際網路上,可以說好人不多見,隨時都有惡意人士上門拜訪,將您 postfix 設定嚴格一點,是管理人員的必要實務之一。

要避免惡意人士,第一步當然就是請他先自我介紹一下,所以我們可以設定當有郵件傳送到或是經過時,要有正確的自我介紹。

我們可以在 SMTP 的對話中,在 HELO/EHLO 中限制主機名稱,這樣可以要求對方送出合乎規定的主機名稱。

您可以透過 smtpd_helo_required 來進行設定,請編輯 main.c f並定義 smtpd_helo_required 如下範例:
smtpd_helo_required=yes

此預設值為 no,設定後記得要執行 postfix reload

以下就是測試沒有 HELO 的反應結果:
502 Error: send HELO/EHLO first 


Postfix 三十天就上手-Day 22 要求 FQDN

對抗垃圾郵件招數一,請求FQDN。

FQDN 對一台正規郵件伺服器來說是非常重要的,許多郵件伺服器都會檢查對方是否有提供FQDN,如果就會拒絕接收。
所謂的 FQDN(Fully Qualified Domain Name) 是由「主機名稱」與「網域名稱所組成」。

mail.ithome.com.tw 為例:
主機名稱就是 mail
網域名稱就是 ithome.com.tw

您可以透過下列指令查看是否您的主機有設定正確的 FQDN:
hostname -f  

傳回結果範例如下:
mail.ithome.com.tw

很多垃圾郵件發送機,可能都不會提供 FQDN,透過要求提供 FQDN 可以過濾掉一些水準較低的垃圾郵件發送機

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.c f並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_non_fqdn_hostname  
...

由於通常 smtpd_recipient_restrictions 會設定多條的條件,這裡就用 ...替代,我們主要是要設定reject_non_fqdn_hostname,設定後 postfix 會拒絕任何來自未傳送 FQDN 的主機的郵件。

以下就是測試沒有 FQDN 的反應結果:
504 <Client>: Helo command rejected: need fully-qualified hostname


Postfix 三十天就上手-Day 23 要求寄件人包含 FQDN

對抗垃圾郵件招數一,要求寄件人包含 FQDN。

上一篇 Postfix 三十天就上手-Day 22 要求FQDN 說明 FQDN 以及要求主機需要提供 FQDN。
對付垃圾郵件的另外一招就是要求寄件人也需要包含 FQDN,一個完整的信件,寄件人應該要整的像是下列的樣子:
sender@ithome.com.tw

在網域的部分 (@之後) 需要包含 FQDN,如果像是下列範例,都是不合格:
sender  
sender@ithome  

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.cf 並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_non_fqdn_sender  
...

由於通常 smtpd_recipient_restrictions 會設定多條的條件,這裡就用 ...替代,我們主要是要設定reject_non_fqdn_sender,設定後 postfix 會拒絕任何來自未傳送 FQDN 的主機的郵件。

以下就是測試沒有 FQDN 的反應結果 (假設 from 是 sender ):
504 <sender>: Sender address rejected: need fully-qualified address


Postfix 三十天就上手-Day 24 拒絕不合法的主機名稱

對抗垃圾郵件招數一,拒絕不合法的主機名稱。

主機名稱除了必須是 FQDN,您還可以要求需要遵守網域名稱 ( DNS ) 系統的需求。合法的一個網域名稱需要遵守下列幾點:

需要有一個最上層網域top-level domain (TLD),如 [com]
需要一個網域名稱,如 [ithome]
個區隔網域名稱與 TLD 的點 (.)

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.cf 並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_invalid_hostname  
...

由於通常 smtpd_recipient_restrictions 會設定多條的條件,這裡就用 ...替代,我們主要是要設定reject_invalid_hostname,設定後 postfix 拒絕不合法的主機名稱。

另外如果您的 postfix 版本 >=2.3 您可以透過 smtpd_helo_restrictions 來進行設定,請編輯 main.cf並定義 smtpd_helo_restrictions 如下範例:
smtpd_helo_restrictions =  
 reject_invalid_helo_hostname

以下就是測試沒有合法主機名稱的反應結果(假設主機名稱為[.]):
501 <.>: Helo command rejected: Invalid name  


Postfix 三十天就上手-Day 25 拒絕網域不存在的郵件
 
對抗垃圾郵件招數一,拒絕網域不存在的郵件。

垃圾郵件的寄送者會利用 不存在的網域( unknow domain ) 來隱藏他們的來源。建議不要讓您的郵件伺服器接收網域不存在的郵件,如果讓您的郵件伺服器接收,如果在傳送過程中發生錯誤(如找不到收件人),會讓您的伺服器退件找不到正確位址,最後可能就會擠爆郵件管理者的信箱囉!

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.cf 並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_unknown_sender_domain  
...  

由於通常 smtpd_recipient_restrictions 會設定多條的條件,這裡就用 ...替代,我們主要是要設定reject_unknown_sender_domain,設定後 postfix 會拒絕網域不存在的郵件。

以下就是測試結果,postfix會回傳 Error Code 450 :
450 <sender@unknow.domain>: Sender address rejected: Domain not found 


Postfix 三十天就上手-Day 26 設定收件人限制
 
對抗垃圾郵件招數一,設定收件人限制。

抵抗垃圾郵件的瘋狂亂送,我們可以拒絕收件人中有不存在網域。這樣您可以避免您的伺服器收了一堆信件,處理半天後又忙著回覆說找不到,不小心還會被 user 誤會是伺服器有問題。
所以最好的方法就是一開始就拒絕帶有不存在網域的收件人郵件。

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.cf 並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_unknown_recipient_domain  
...  

由於通常 smtpd_recipient_restrictions 會設定多條的條件,這裡就用 ...替代,我們主要是要設定reject_unknown_recipient_domain,設定後 postfix 會拒絕收件人網域不存在的郵件。

以下就是測試結果,postfix會回傳 Error Code 450 :
450 <recipient@unknow.domain>: Recipient address rejected: Domain not found 


Postfix 三十天就上手-Day 27 拒絕無 FQDN 的收件人
 
對抗垃圾郵件招數一,拒絕無FQDN的收件人。

如果送件的人沒有提供完整的收件人位址,您是可以拒絕接收的。當然提供正確的收件人位址是送件人的責任。您可以設定 postfix 拒絕那些非 FQDN 的收件人郵件。

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.cf 並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_non_fqdn_recipient  
...  

由於通常 smtpd_recipient_restrictions 會設定多條的條件,這裡就用 ...替代,我們主要是要設定reject_non_fqdn_recipient,設定後 postfix 會拒絕非 FQDN 收件人的郵件。


以下就是測試提供一個非 FQDN 收件人的測試結果,我們測試送信給 recipient,postfix 會回傳Error Code 504 :
450 <recipient>: Recipient address rejected: need fully-qualified address


Postfix 三十天就上手-Day 28 檢核寄件人
 
對抗垃圾郵件大絕招,檢核寄件人。

對抗垃圾郵件的大絕招,檢核寄件人,這是 postfix 對垃圾郵件非常重要的工具,當然相對的,跟你打 KOF(King of Fighters) 一樣,要使用大絕招通常都需要先集氣,在 postfix 中雖然不用集氣,但是使用這招是需要付出相對的代價,需要時間與相對的系統資源。使用此招數postfix 會檢查寄件人是否真的存在,如果不存在則會拒絕接收該郵件。

當 postfix 對郵件進行第一次寄件人檢核的時候,該郵件會有9秒的短暫延遲,如果檢核的程序超過 9秒,postfix 會回應 code 450,並拒絕來自客戶端的郵件,正常的郵件客戶端在延遲之後,都會重新連線,但是垃圾郵件伺服器就不會想要重複讓費力氣囉。

您可以透過 smtpd_recipient_restrictions 來進行設定,請編輯 main.cf 並定義smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
reject_unverified_sender  
permit  

特別要說明的是,由於這招是大絕招,所以建議放到最後,如範例中您會看到reject_unverified_sender 之後就是 permit 了,這樣如果前面的條件可以拒絕掉的郵件,就不用再浪費大力氣了。


Postfix 三十天就上手-Day 29 選擇性的檢核寄件人
 
對抗垃圾郵件中絕招,選擇性檢核寄件人。

昨天 Postfix 三十天就上手-Day 28 檢核寄件人 已經說明了對抗垃圾郵件的大絕招,但是我們也有說明使用這招是需要付出相對的代價,如果您的郵件伺服器平常負載已經很高,很可能使用這招就造成系統的瓶頸。

想要使用大絕招又不想浪費不必要的力氣,當然就跟打 KOF (King of Fighters) 一樣,要發大絕招的時候,當然是要在能一擊必中的情況下,有打過的都知道,最好把大絕讓在連續技的最後一著,保證對手大失血。

雖然 postfix 沒辦法使用連續技讓垃圾郵一擊必中,但是可您讓您選擇要使用的對象,我們可以針對特別幾個愛發垃圾郵件的網域作選擇性的檢核寄件人。

Step.1 準備對照表,如 Postfix 三十天就上手-Day 19 淺談 Lookup Table (對照表) 中所說明的,您需要準備一個對照表,用對照表來定義您對哪些網域進行檢核寄件人。
建立 /etc/postfix/spam_domain ,檔案範例如下:
yahoo.com.tw    reject_unverified_sender  
hotmail.com reject_unverified_sender

以上範例指定當信件的寄件人符合設定的 domain,就會執行 reject_unverified_sender 的動作。

Step.2 完成對照表之後,接著就是要告訴 postfix 要來參考對照表,您還需要先執行 postmap hash:/etc/postfix/spam_domain 轉換為 db 檔。然後您可以透過 smtpd_recipient_restrictions 來進行設定讓 postfix可以參考對照表,請編輯 main.cf並定義 smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
...  
check_sender_access hash:/etc/postfix/spam_domain  
permit

完成以上步驟後,當信件的寄件人符合設定的 domain,就會執行 reject_unverified_sender,reject_unverified_sender 的動作您可以參考上一篇 Postfix 三十天就上手-Day 28 檢核寄件人


Postfix 三十天就上手-Day 30 定義您的 VIP
 
給 VIP 特別的待遇。

在介紹了這麼多對付垃圾郵件的招數之後,相信大家最後一定心中會有一個疑慮,那就是萬一這些厲害招數攔了不該攔的人,那管理者可就頭大了。

相信企業的郵件伺服器除了害怕遭到垃圾郵件攻擊,更是害怕攔掉了客戶來的郵件,現實狀況中,可能不是只要求不能誤攔,連慢一點可能就要被抓起來打了。

面對這樣的情況,當然要給客戶 VIP 的待遇,所以今天就來說明如何在這些攔截條件執行之前,開一條 VIP 的康莊大道給客戶走。

Step.1 準備對照表,如 Postfix 三十天就上手-Day 19 淺談 Lookup Table( 對照表) 中所說明的,您需要準備一個對照表,用對照表來定義您的 VIP 是哪些網域寄件人。
建立 /etc/postfix/sender_vip ,檔案範例如下:
ithome.com.tw   OK  
apple.com   OK

有看財經新聞的都知道,只要企業打進頻果供應鏈,股價就要漲了,雖然現在可成引爆毒頻果事件,但是我相信 Apple 還是最大的客戶,所以一定要拿 apple.com 來當範例囉。當然跟apple.com 一樣紅的 ithome.com.tw 也不能錯攔。

Step.2 完成對照表之後,接著就是要告訴 postfix 要來參考對照表,您還需要先執行 postmap hash:/etc/postfix/sender_vip  轉換為 db 檔。然後您可以透過 smtpd_recipient_restrictions 來進行設定讓 postfix 可以參考對照表,請編輯 main.cf 並定義 smtpd_recipient_restrictions 如下範例:
smtpd_recipient_restrictions=  
check_sender_access hash:/etc/postfix/sender_vip  
...  

這邊您特別要注意的是您放的順序,請注意本範例將它放到第一條,也就是說當第一條符合的時候,會得到 OK,其它條件就不會在繼續檢查下去,當然他就不怕被其他條件攔掉,也不用浪費時間作其他的檢查。

PS:如果您害被有垃圾郵件假造是您的 VIP 剛好 bypass 掉你的檢查,可以考慮在 VIP 之前作比較基本的檢查,此時您只要調整順序即可



參考資料:http://www.postfix.org/   iT邦幫忙

網站管理基本功:避免網站遭入侵的5大技巧

網站管理基本功:避免網站遭入侵的5大技巧


今天我們以工程師的角度聊一下,管理網站平常應該注意什麼 ?

一個網站,從我們註冊網址開始,請人設計網頁,租一個網站空間,把網頁資料放上去,網站可以正常瀏覽了,那再來呢 ?

很多人都忽略了,網站建置好後,還是需要去關心它、維護它的。其實網站管理也應該像我們每天會收取 Email、上 FB 一樣,把它排在每天的例行事物上。


我們可以作什麼 :

定期查看網站存取記錄

這是什麼 ? 網站存取記錄就是存著網站被瀏覽、被下載、被上傳、被存取哪些連結的記錄。

舉例來說,假如你的網站是 PHP + MySQL,主機通常就是 Linux + Apache 的環境,會有 access_log (範例一)、error_log (範例二) 這兩個檔案

範例一、記錄著被瀏覽了什麼連結,那個來源 IP 瀏覽了網站

1.1.1.1 – - [08/Sep/2013:10:10:38 +0800] “GET / HTTP/1.1″ 200 341 “-" “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

網站如果有帳密登入的功能,想觀察是否有有心人士再 Try 帳密,我們可以從 access_log 這個記錄檔查來源 IP 是不是自己的,也可以因此做一些防範 (密碼設強一點、定期更換、鎖來源 IP(自己可以瀏覽就行) 等等)。

範例二、記錄著被瀏覽的連結可能會有的錯誤訊息

[Sun Sep 08 06:16:58 2013] [error] [client 2.2.2.2] File does not exist: /var/www/html/robots.txt

error_log 是記錄著哪個連結找不到,或者網站的錯誤訊息,可能是 NOTICE 或 ERROR,有 ERROR 就需要注意一下並且有要修正的可能,否則將可能影響網站的正常運作。

定期檢查網頁檔案及內容

一般網站都會有圖片,那圖片怎麼來的,一是從網頁程式中上傳,另一種是從 FTP 上傳,無論是用何種方式上傳的,存放網站圖片的目錄 (比方說 : /upload/image) 當它裡面出現一個檔案 xx.php,你覺得有沒有問題呢?肯定是要檢查一下!存放網站圖片的目錄裡會有 xx.php ?不是要存 xx.jpg 或 xx.png 等等的檔案類型嗎?

這裡要探討的是,如果是從網頁程式上傳上來的,主要原因就是程式沒有過濾上傳的檔案類型 ,比方說 xx.php 就不應該被上傳,如果 xx.php 是惡意程式,一旦被執行了可能網站裡所有的資料(包括會員、交易資料) 都可能被看光光,甚至破壞網站、刪除資料等,所以這是很嚴重的漏洞,必須小心、並定期檢查。

定期更新程式

不管網站是不是請人設計的,你我可能會用一些常見的套裝軟體,像 WordPress、phpBB、Joomla,比如說 phpBB 常會因為版本過舊沒有更新而被利用漏洞塞了很多垃圾留言,資料庫的資料量因此增大,影響程式和資料庫的存取,增加主機的負載,這時最明顯的情況就是網站會變得很慢,所以網站的程式(尤其是用免費的套裝軟體架站的)應該要定期檢查更新才行。

定期修改密碼

這也是我們一直在強調的,攻擊其實是不分時間, 一年365天、8760個小時網站都有可能隨時遭受攻擊,像是最常見的密碼暴力破解。所以就算覺得累、嫌麻煩也一定要定期改密碼、更新程式,這才是保命之道。

基本安全掃描

網路上有一些免費、基本的網站掃描工具,可以拿它來對網站作掃毒的動作,確認網站有沒有惡意程式,或釣魚程式等等。

結論

以上是管理網站的基本功,好好的關心我們所架好的網站,不放過任何的蛛絲馬跡或徵兆,就有可能可以避免掉網站被入侵、被破壞的機會。

轉載自《WIS匯智》

個資法的第1年

個資法的第1年


個資法的第1年

在人民對個資保護的意識逐步提升後,個資訴訟案件也會跟著越來越多。個資法是少數與全國的人民、產業皆有關係的法律,在社會變動越來越快的局面下,更應該及早檢討與調整。

個人資料保護法上路滿1年了,對我們的社會到底帶來什麼改變呢?本期封面故事就檢視個資法上路1年的成績。

就個人生活的感受來看,近來我接到詐騙電話的數量有變少的傾向,顯然個資法祭出刑責與2億元的天價罰款後,對遏止詐騙已發揮了一些效果;同時,生活周遭也不斷出現各種個資使用宣告,許多希望我們提供個人資料的表格文件,也都加上個資蒐集、處理與利用的聲明,個資意識也是明顯提高了。

當然,新法上路總會出現適應不良的亂象,在個資法上路這1年中,個資法亂象也是層出不窮。擔心觸法者,如法務部下屬的地檢署,大概是因為過度害怕公務人員觸法要面臨加倍的處罰,竟把判決書的當事人姓名以姓氏加上兩個圈圈來代表,雖然此舉保證完全不會觸法,但卻明顯忽略了人民知的權利,判決書只有法官、檢查官與當事人看得懂,哪還需要公告判決呢?

擁有大量個人資料的學校與教育機構也很擔心觸法,學校把網站榮譽榜上的學生姓名予以部分遮罩,大學指考榜單也只列準考證號碼,這般遮掩反像是見不得人似的,完全沒有半點榮譽的感覺。

有人怕觸法,也有人把個資法無限上綱,阻繞警察與檢察官辦案,甚至是利用人們擔心觸法的弱點,濫用個資法來詐騙的也有。不過,在各單位陸續推廣個資法觀念之後,這些亂象終究會逐漸消失。

在人民對個資保護的意識逐步提升後,個資訴訟案件也會跟著越來越多。個資法上路第1年,相關訴訟不多,而且多數案件皆為個人間的糾紛。例如其中的兩起違反個資法而被起訴的刑事判決,情節頗為類似,皆是社區事務問題,因為停車、漏水起了糾紛,而在網路上張貼當事人的個資。這兩件案子皆涉及誹謗,分別被判了拘役40天與2個月,法律專家指出,法官採取與誹謗罪幾乎同等嚴重的裁決,提醒民眾要特別小心個資觸法行為,不只是會有刑事罰責,處罰不算輕,而且日後就是有案在身了。

另一個大家關心的,是企業違反個資法的判例。不過,在個資法上路這一年雖然發生了幾起大型的企業個資外洩事件,但至今尚未有訴訟結果。究其原因,個資法在保障人民權益的一大突破上──團訟機制,雖立意良好,但在目前的實務上卻難以發揮功能。一來是臺灣人民普遍不熟悉團訟機制,對於主張自己的權利不太積極;再者是,對於能提出團訟的財團法人或公益社團法人的規定嚴格,在個資法才剛上路的第1年,能符合資格的團體很少,而且,專家指出更關鍵的問題在於,個資法規定賠償金額扣除必要的訴訟費用,其他必須交付授與訟訴的當事人,也就是說,代打團訟不能要求報酬。

至於各個產業面對個資法的態度如何呢?據專家們的觀察,大型企業、或是主管機關的監管較為嚴格的產業,都已積極因應個資法,但是在整備度上仍未及完全。而大多數企業目前又回復至觀望的狀態,因此第一起大型個資外洩事件,或是第一宗企業違法案件的判例,將會決定企業的腳步。

其實去年Nokia會員網路外洩大量個資的事件,早已是臺灣第一起大型個資外洩事件了,但是至今卻未有任何團訟,也未見主管機關行政檢查的進展。這種情形反映出臺灣個資法上路的一個重大問題:缺乏專責的個資法機關。在目前由法務部負責法規制定、各事業目的主管機關負責推動與監督的架構下,所呈現的就是人力、資源不足,各單位步調不統一,人民無所適從的局面。

法規的制定不可能一開始就是完美的,尤其是個資法這種牽涉層面廣闊,且與社會生活習習相關的法律,在社會變動越來越快的局面下,更應該及早檢討與調整,畢竟個資法是少數與全國的人民、產業皆有關係的法律,不得不慎。

轉載自《iThome》

Android 上的 Firefox APP 爆發安全漏洞請盡速更新(含影片示範)

Android 上的 Firefox APP 爆發安全漏洞請盡速更新(含影片示範)


行動裝置安全分析研究員 Sebastián Guerrero 於 2013/9/30 在其 Twitter (https://twitter.com/0xroot) 上指出,新發現在 Android 的 Firefox 漏洞,這個漏洞將允許攻擊者可以自由瀏覽 SD 卡的內容和瀏覽器內隱私資料。

當攻擊生效時,被駭的使用者可能被偷裝一些惡意APP或者開啟具有惡意 Javascript 的HTML檔案。

該漏洞已經提交給 Mozilla 並且在最新的一次更新(v24)已經修復漏洞。

所以還未將 Android 上的 Firefox APP 更新至 v24 版的使用者動作要加快了。



轉載自《網路攻防戰》

2013-10-03

一行指令,Windows 7 筆電 變 無線 AP

一行指令,Windows 7 筆電 變 無線 AP


你需要分享無線網路、身邊剛好又沒有基地台怎麼辦?這時候本來就帶有Wi-Fi存取功能的筆電就派上用場了。用筆電充當基地台,其實並不新奇,早在XP時代就能透過Ad Hoc的方式來建立多台電腦之間的點對點網路,不但能夠分享網路訊號、也讓無線對傳資料更方便。只是,以前得經過較為繁瑣的設定步驟,現在在Windows 7只要靠一條命令就能達成。





請你照著這麼做

1. 打開命令輸入視窗,輸入「cmd」(不含括號)之後,同時按下鍵盤上的Ctrl+Shift+Enter,這是為了以管理員模式開啟終端機視窗,Windows環境下的正確名稱是命令提示字元。


2. 這時候終端機視窗就會打開了,請輸入

netsh wlan set hostednetwork mode=allow ssid=你要的名稱 key=密碼


3. 如果出現了上圖的成功訊息,那麼再輸入

netsh wlan start hostednetwork


4. 如果上一步執行後出現的訊息是「已啟動主控網路」,那麼請回到桌面,按一下右下方的網路狀態圖示,並點擊「開啟網路和共用中心」


5. 這時候,你應該會在「檢視作用中的網路」頁框裡,看到剛才建立的無線網路名稱。點擊一下右邊的「無線網路連線」。


6. 按下「內容」。


7. 在「共用」頁框裡,把「允許其它網路使用者透過這台電腦的網際網路連線來連線」打勾,然後再把下方的「允許其它網路使用者來控制或停用網際網路連線」取消勾選,接著按下確定。


8. 基本上到這裡,你的筆電已經變成一個基地台了,我們來看看連不連得上。以iphone為例,點一下「設定」。


9. 點一下「一般」


10. 選擇「網路」


11. 找到最下面的「Wi-Fi」


12. 應該就可以找到基地台的名稱,按一下它。


13. 輸入在第三步所設定的密碼。


14. 驗證通過後,iPhone使用的Wi-Fi來源就會變成剛才所建立的連線。


15. 打開Safari看是否能上網,可以的話就恭喜你!你的iPhone已經可以跟筆電共享網路了!


在這個技巧裡,其實最主要的就是用到了「netsh」這條命令。它是用來幹啥的?這條從Windows XP、2000時代就已經存在的命令,本來是單純用於更改電腦的網路連線設定,彌補圖形化介面無法批次執行或程式化的不足,到了VistaServer 2008,則是更進一步提供設定無線網路連線的功能。簡單的說,你用這條命令能做的事、從控制台也能做,但是用命令列來進行可以簡化流程、也提高了批次處理的彈性。

需要特別說明的是,只要你的無線網路卡支援,筆電是可以同時兼具「基地台」與「存取者」兩種身份的。也就是說,你可以先用筆電連上其它無線網路,然後再把它變成基地台,並不會有「無線網路已經用來存取其它連線了」的佔用問題,在無線網路資源有限的環境裡,十分受用。

轉載 <<T客邦>>

Linux常用基本指令詳解 ( 三 )

Linux常用基本指令詳解 ( 三 )


在電腦常用操作中,我們經常會用到CentOS常用命令。 所以,我們對一些經常使用又很重要的CentOS常用命令進行了全面的整理。 下面,就給大家介紹這些CentOS常用命令。


一:使用CentOS常用命令查看cpu
more /proc/cpuinfo | grep "model name"
grep "model name" /proc/cpuinfo
[root@localhost /]# grep "CPU" /proc/cpuinfo
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
如果覺得需要看的更加舒服
grep "model name" /proc/cpuinfo | cut -f2 -d:

二:使用CentOS常用命令查看內存
grep MemTotal /proc/meminfo grep MemTotal /proc/meminfo | cut -f2 -d: free -m |grep "Mem" | awk '{print $2}'

三:使用CentOS常用命令查看cpu是32位元還是64位元
getconf LONG_BIT

四:使用CentOS常用命令查看當前linux的版本
more /etc/redhat-release
cat /etc/redhat-release

五:使用CentOS常用命令查看內核版本
uname -r
uname -a

六:使用CentOS常用命令查看當前時間
date上面已經介紹如何同步時間了

七:使用CentOS常用命令查看硬盤和分區
df -h
fdisk -l
也可以查看分區
du -sh
可以看到全部佔用的空間
du /etc -sh
可以看到這個目錄的大小

八:使用CentOS常用命令查看安裝的軟件包
cat -n /root/install.log
more /root/install.log | wc -l

查看現在已經安裝了那些軟件包
rpm -qa
rpm -qa | wc -l
yum list installed | wc -l
不過很奇怪,我通過rpm,和yum這兩種方式查詢的安裝軟件包,數量並不一樣。 沒有找到原因。

九:使用CentOS常用命令查看鍵盤佈局
cat /etc/sysconfig/keyboard
cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=

十:使用CentOS常用命令查看selinux情況
sestatus
sestatus | cut -f2 -d:
cat /etc/sysconfig/selinux

十一:使用CentOS常用命令查看ip,mac地址
在ifcfg-eth0 文件裡你可以看到mac,G/W等信息。

 ifconfig cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d= ifconfig eth0 |grep "inet addr:" | awk '{print $2}'|cut -c 6- ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

查看網關
cat /etc /sysconfig/network

查看dns 
cat /etc/resolv.conf

十二:使用CentOS常用命令查看默認語言
echo $LANG $LANGUAGE
cat /etc/sysconfig/i18n

十三:使用CentOS常用命令查看所屬時區和是否使用UTC時間
cat /etc/sysconfig/clock

十四:使用CentOS常用命令查看主機名
hostname
cat /etc/sysconfig/network
修改主機名就是修改這個文件,同時最好也把host文件也修改。

十五:使用CentOS常用命令查看開機運行時間
uptime
09:44:45 up 67 days, 23:32, ...


更多基本指令,請參考前一篇 Linux常用基本指令詳解  與  Linux常用基本指令詳解 ( 二 )

Linux常用基本指令詳解 ( 二 )

Linux常用基本指令詳解 ( 二 )


wget$  wget -r -np -nd  http://example.com/packages/ 這條命令可以下載http://example.com 網站上packages 目錄中的所有文件。 CentOS其中,-np 的作用是不遍歷父目錄,-nd 表示不在本機重新創建目錄結構。

$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/ 與上一條命令相似,CentOS但多加了一個--accept=iso 選項,這指示wget 僅下載i386 目錄中所有擴展名為iso 的文件。 你也可以指定多個擴展名,CentOS只需用逗號分隔即可。

$ wget -i filename.txt 此命令常用於批量下載的情形,CentOS把所有需要下載文件的地址放到filename.txt 中,然後wget 就會自動為你下載所有文件了。 CentOS$ wget -c http://example.com/really-big-file.iso 這裡所指定的-c 選項的作用為斷點續傳。

$ wget -m -k (-H) http://www.example.com/ 該命令可用來鏡像一個網站,wget 將對鏈接進行轉換。 CentOS如果網站中的圖像是放在另外的站點,那麼可以使用-H 選項。

VI 編輯命令命令模式
移動光標
[Ctrl] + [f] → 屏幕『向下』移動一頁,相當於[Page Down]按鍵
[Ctrl] + [b] → 屏幕『向上』移動一頁,相當於[Page Up] 按鍵
n<space> → n 表示『數字』。 按下數字後再按空白鍵,光標會向右移動這一行的n 個字元
0 → 數字『 0 』:移動到這一行的最前面字元處
$ → 移動到這一行的最後面字元處
G → 移動到這個文件的最後一行
nG → n 為數字。 移動到這個文件的第n 行(可配合:set nu)
gg → 移動到這個文件的第一行,相當於1G
n<Enter> → n 為數字。 光標向下移動n 行

CentOS查找與替換 
n → 『重複前一個查找的動作』
N → 與n 剛好相反,為『反向』進行前一個查找動作
:n1,n2s/word1/word2/g → n1 與n2 均為數字。 在第n1 與n2 行之間查找word1 字符串,並將該字符串替換為word2。
如:在1 到9 行之間查找eric4ever 並替換為ERIC​​4EVER 則:『:1,9s/eric4ever/ERIC4EVER/g』
:1,$s/word1/word2/g → 從第一行到最後一行查找word1 字符串,並將該字符串替換為word2
:1,$s/word1/word2/gc → 從第一行到最後一行查找word1 字符串,並將該字符窗替換為word2,替換前顯示提示對話框是否確認替換

CentOS刪除、複製與粘貼 
x, X → 在一行字當中,x 為向後刪除一個字元(相當於[del] 按鍵),
X 為向前刪除一個字元(相當於[backspace] 按鍵)
dd → 刪除光標所在的那一整行
ndd → n 為數字。 刪除光標所在的向下n 列
yy → 複製光標所在的那一行
nyy → n 為數字。 複製光標所在的向下n 列
p, P → p 為將已復制的內容粘貼在光標下一行上,P 則為粘貼在光標的上一行
u → 還原前一個動作
[Ctrl]+r → 重做上一個動作
. → 小數點,意思是重複前一個動作

CentOS編輯模式i, I → 插入:在目前的光標所在處插入輸入的文字,已存在的文字會向後退; 其中, i 為『從目前光標所在處插入』, I 為『在目前所在行的第一個非空白字元處開始插入』a, A → a 為『從目前光標所在的下一個字元處開始插入』, A 為『從光標所在行的最後一個字元處開始插入』
o, O → o 為『在目前光標所在的下一行處插入新的一行』, O 為『在目前光標所在處的上一行插入新的一行』
r, R → r 為『取代光標所在的那一個字元』, R 為『一直取代光標所在的文字,直到按下ESC 為止』
Esc → 退出編輯模式,回到一般模式中

CentOS末行指令模式 
:w → 將編輯的文件寫入到硬盤上
:q → 退出vi
:set nu → 顯示行號
:set nonu → 取消顯示行號

CentOS vim 塊操作
Ctrl+v 進入視圖模式
<Esc>退出視圖模式在Ctrl+v 後:
<Dollar>+ A在塊的每行末尾添加
I 插入
y 塊抽取
p 塊粘貼
c 修改

不夠嗎?還可以參考 上一篇 Linux常用指令詳解 與 下一篇 Linux常用基本指令詳解 ( 三)