dk-milterは,放置状態かと思ったけど,1.0.0が上がっていた。修正もされていたし,ヘッダ表示も変更になっていた。
dkim-milterの方は,活発にパッチが出ていて,ちょっと目を離すとどんどんバージョンアップしていく。現時点で,2.5.2になっていた。
CentOS5用に,rpmを作って,運用してみた。設定やオプションの影響はなく,以前のバージョンの設定のままでも問題なさそう。
dk-milterは,放置状態かと思ったけど,1.0.0が上がっていた。修正もされていたし,ヘッダ表示も変更になっていた。
dkim-milterの方は,活発にパッチが出ていて,ちょっと目を離すとどんどんバージョンアップしていく。現時点で,2.5.2になっていた。
CentOS5用に,rpmを作って,運用してみた。設定やオプションの影響はなく,以前のバージョンの設定のままでも問題なさそう。
http://www.atmarkit.co.jp/news/200803/21/vmware.html
アップデートした。日付は,2008/3/14になっていた。ゲストOSのVMware-Toolsはよく使用しているもののみ,アップデートした。まあ,起動したときに気になったらアップデートすれば良いから,気にする必要もない。
VMware Server(Linux)のゲストOS CentOS5のVMware-Toolsのアップデートで以下のメッセージが出た。
VFS: busy inodes on changed media.
Authentication-Results: mail.aritia.org from=order-update@amazon.co.jp; sender-id=permerror; spf=permerror
amazon.co.jpからのメールが,permerror(不正なメール送信元)となる。
DNSを確認したところ,特に問題ないように見える。
# host -t txt amazon.co.jp
amazon.co.jp descriptive text "v=spf1 include:amazon.com ~all"
amazon.co.jp descriptive text "spf2.0/pra include:amazon.com ~all"
# host -t txt amazon.com
;; Truncated, retrying in TCP mode.
amazon.com descriptive text "spf2.0/pra ip4:207.171.160.0/19 ip4:87.238.80.0/21 ip4:72.21.193.0/24 ip4:72.21.197.0/24 ip4:72.21.196.0/24 ip4:72.21.208.0/24 ip4:72.21.209.0/24 ip4:194.154.193.200/28 ip4:194.7.41.152/28 ~all"
amazon.com descriptive text "v=spf1 ip4:207.171.160.0/19 ip4:87.238.80.0/21 ip4:72.21.193.0/24 ip4:72.21.197.0/24 ip4:72.21.196.0/24 ip4:72.21.208.0/24 ip4:72.21.209.0/24 ip4:194.154.193.200/28 ip4:194.7.41.152/28 ~all"
既に,調査している方がいらっしゃいました。(どさにっき)
sid-milterの不良と判断なさっているようです。たぶん,そうなんでしょう。しかし,sid-milterは,長いこと放置されているようで,パッチが出そうもないですし,かといって,自分でパッチを作る余裕もなし。
まあ,AMAZONのメールだけ,spfのチェックを外すことにした。
yum-updatesd がまともにシステムのアップデートをしないので,yum.cronを使っているが,cronから,以下のメールが届くようになった。
/etc/cron.daily/yum.cron:
** Message: sqlite cache needs updating, reading in metadata
bugzillaを除くと,不要な部分の処理があるためで,無視して良いメッセージのようだ。
http://bugs.centos.org/view.php?id=2514
パッチもあったが,メッセージを単に出さなくしているだけのようだ。そのうち,バージョンアップされるかもしれないが,早めに当てておこうか。
bashでも配列が使えるので,
$ a[100]=a100
と実行すると,
$ echo ${a[100]}
a100
となる。Posix準拠shellなので当たり前なんだが,添字の最大値はどうしたら得られるのか,悩んだ。
${#a[@]}だと配列の数だし,上の場合は,1になる。${#a}は,配列要素の一番最初のa[0]の長さを示しており,${#a[0]}と同じ意味となり,何も設定されていない文字列の長さだから,0が返る。
$ echo ${#a[@]}
1
$ echo ${#a}
0
じゃあ,どうすれば良いのか?
postfix/smtpd[11814]: warning: connect to Milter service unix:/var/run/clamav-milter/clamav.sock: Permission denied
postfixのログでUnmatchがあったので,修正した。
ベースは,Fedora8 配布のlogwatch-7.3.6に,以下の修正を行った
RPMも作ってみた。
DomainKeyから,DKIMに移行されるとか解説があったけど,DKIMの署名はGmailからのものしか見たことがない。Domainkeyは,GMailで相変わらず署名されているし,YahooやNiftyで使われている。まだ,Domainkeyが主流なのかな。もっとも,SPFの方が普及しているように見える。
Domainkeyを使うために,dk-milterのベターユースは何かと試行錯誤しているのだが,いろいろとトラブルが発生する。
今回は,メール転送で発生した。
milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 4.7.1 Service unavailable - try again later; from=<example@example.org> to=<user@example.com>
あるメールだけ,rejectされる。このメール1通だけ。dk-milterを停止されて,このメールだけ転送後,dk-milterを再度起動させてみて,同じようなメールを送付しても再現しない。メールヘッダを見ているのだが,原因はわからない。うまくいっているケースとの違いがわからない。
dk-filterの-Hオプション:
Includes on DomainKey signatures the list of headers that were included in the signature. This makes the signature header larger by explicitly listing the included headers, but this also allows verifying agents to ignore headers that were added in transit.
意訳:
Domainkeyの署名に,署名に含めたヘッダのリストを含めます。明示的に署名したヘッダのリストを追加することで,Domainkeyの署名ヘッダが大きくなりますが,これによって,認証エージェントが通信時に追加になったヘッダを無視できるようになり,署名されたヘッダのみ証明できるようになります。
で,試してみたら,Gmail/Yahooとも有効。(当然,CHECK-AUTH@VERIFIER.PORT25.COM, sa-test@sendmail.net でも問題なし)
-Hオプションを付けていれば,clamav-milterで,--noxheaderオプションを付ける必要はないようだ。
もっとも,送信側が,ヘッダリストを追加しているとは限らないので,clamav-milterの順番はsmtpd_miltersのリストの最後に置かないと,Domainkeyの署名チェックで,常にfailになる。