星期三, 1月 25, 2012

Unbound + DNSSEC

FreeBSD 上要 Unbound 啟用 DNSSEC 很簡單,安裝完後,先跑 sudo -u unbound unbound-anchor 產生 root.key,之後每次重開機都會檢查是否需要更新。

再來是在 unbound.conf 裡面的 server 區段增加:

server:
        auto-trust-anchor-file: "/usr/local/etc/unbound/root.key"
如果有自己的 domain,可以先用 domain-insecure 設定,讓 Unbound 不檢查這些 domain:
server:
        domain-insecure: "mycompany"

星期日, 1月 22, 2012

Perl 的 regular exprssion 可以用 (?...) 設定參數

我遇到的問題很簡單,就是這樣的 code:

say 'yes' if 'Test' =~ $a;

我想要在 $a 做出 'Test' =~ /test/i; 的效果,也就是找方法帶 modifier 進去。

第一個想到的方法是用 eval() 做:eval("'Test' =~ $a;"),但這個方法問題很多... 因為我的 $a 是從設定檔讀進來,我並不希望給予奇怪的權限。

Perl 裡可以用 inline modifier 解決,也就是把 regular exprssion 前面加上 (?i),其中 i 就是 modifier,變成 (?i)^test

對於其他用 perl 寫的程式也可以這樣設定 regular exprssion,另外 PCRE 也可以吃,所以 Postfix 設定時如果用 pcre:$configuration_directory/xxx 也可以這樣設定 (regexp:... 就不確定了)。

星期二, 1月 17, 2012

Cisco IPSec VPN Client 在 Windows 與 Mac 上遇到的問題

Windows (XP & 7) 與 Mac 上面都各遇到一個不太能解的問題,找國外的論壇發現不少人抱怨原廠都不修正... Anyway,還是有些很笨的方式可以繞過去。

Windows 上遇到的問題是,如果 ASA 上面有設定 split-dns,那麼 Windows 除了 split-dns 所設定的網域可以查到資料,其他的網域都會無法查詢 (不會丟出任何 DNS query)。這不是 client 軟體的問題,而是作業系統內的問題,微軟目前看起來沒打算處理。

Mac 上遇到的問題是,Mac 系統內建的 Cisco VPN client 不吃 ASA 丟出來的 DNS server。不過在 Mac 上可以吃 split-dns...

目前用的解法是設定兩個不同的 tunnel-group,一個給 Mac 用,另一個給 non-Mac 用,大家各連各的,吃不一樣的設定值避開問題。

星期四, 1月 12, 2012

FreeBSD NIS master 與 Linux NIS client 時 shadow 的處理

剛剛 gaod 發現 Linux 的機器無法用帳號密碼登入 (因為我一直都是用 key 直接登入,所以一直沒發現),花了不少力氣才抓出要怎麼解,用 Google 找了不少文件,好像沒什麼人遇到?

解法是把 FreeBSD 上 NIS/YP server 的 Makefile 裡面產生 passwd* 部份改成 x 就解決了。可以參考「Re: FreeBSD NIS serving linux clients.」這篇十年前文章的說明...

會產生問題是因為 Linux 上的 NIS code 在看到 passwd 密碼欄位是 * 時就不會去 shadow 要資料,然後就爆炸了... 改成 x 就沒問題了...

星期一, 1月 02, 2012

AWS SES 與 Postfix 的配合...

官方論壇上面沒找到比較好的方法,於是 trace ses-send-email.pl 之後找到一些方法可以用。

ses-send-email.pl 寫的 helper 中,規定寄給多個使用者必須使用「逗號」隔開:

ses-send-email.pl [--help] [-e URL] [-k FILE] [--verbose] -r [-f FROM_EMAIL] [TO_EMAIL[,TO_EMAIL]...]

但實際 trace 後可以發現除了逗號外也可以接受空白,但是必須在「一個參數」內 (Perl 會用 regex 切開),但是 Postfix 所丟出來的 $recipient 會是多個參數,而且無法調整 quote,所以得用一個 shell script 將傳入參數包起來:

#!/bin/sh
SENDER="$1"
shift
/usr/local/bin/ses-send-email.pl -k /usr/local/etc/aws_creditentials -r -f "$SENDER" "$*"

再來是修正 Postfix 的 master.cf,改吃 shell script:

awsses     unix  -       n       n       -       1       pipe    flags=RX user=www argv=/usr/local/bin/awsses-wrapper.sh $sender $recipient
這樣在寄給多個使用者的時候才會正常...

Postfix 的 policy daemon...

沒注意好 Postfix 的 policy daemon 傳回的值,居然變成 open relay 了...

依照「Postfix SMTP server access table」的說明,現在沒辦法決定而要往後面的條件判斷時,需要丟出 DUNNO,而非 OK,一時間沒注意就變成 open relay...。

接下要看被誰列入 DNSBL 了...