2006年3月アーカイブ

横浜の三越がつぶれてヨドバシカメラになったので、一度覗きに行ってみる。
横浜の地下駐車場に車を停めると、「ヨドバシカメラとは関係ありません」の看板がいたるところに。
ヨドバシで買い物をしても駐車場代は出ないと言うことらしい。

お店に入ると、まずは5Fの家電コーナーでハンドミキサーを買う。1,550円なり。

続いて、3FのPCパーツのコーナーで無線LANのアクセスポイントを買う。欲しかったのは、11b/g対応のアクセスポイント。
メルコの、WLA2-G54C/PN(カードつき)が9,900円、WLA2-G54(カードなし)が9,400円。
本当は、カードなしのWLA2-G54Cが欲しかったんだけど、売り切れだった(9,000円)ので、WLA2-G54C/PNを購入した。

最後に、1FのVAIOのコーナーで、Bluetoothマウスを買う。これは、スタパ斉藤が誉めていたので欲しくなったのだ。

うちに帰ってさっそくBluetoothマウスを取り出し、電池を入れて、電源を入れる。
VAIOのタスクトレイから、無線の設定の四角い緑のアイコンを右クリックして、「ワイアレス機器の選択」ダイアログを表示し、Bluetoothの電源をONにする。
続いて、タスクトレイからBluetoothManagerのアイコンを右クリックして開き、マウスのConnectボタンを押してから後はwizardにしたがっていけばマウスが使えるようになった。
移動量が多いような気がするけど、マウスの設定はタッチパッドと共通なので、変えるといやんな感じ。

続いて、無線LANの設定。
ノートに有線でつないで、webから設定。前のとほとんど変わらないけど、ntpのクライアントになれるようになっているのと、syslogにログを転送できるようになっているあたりが進化している。
設定が終わったら、今までのアクセスポイントの代わりに設置して、無事に接続を確認した。
は~、いらない無線LANカードとアクセスポイントが、また増えてしまったな~。

postgresqlを、7.4.9から8.1.3にバージョンアップ。
pg_dumpall でデータをバックアップして、pkg_deinstall で postgresql-servert と postgresql-clientをアンインストール。(clientの方は、-fオプションが必要)
$PG_DATAディレクトリを削除して、databases/postgresql-server81をインストール。
オプションは、デフォルトの状態+THREADSAFE。
インストールされたら、/usr/local/etc/rc.d/010.pgsql.sh initdb でデータベース初期化・・・したらデフォルトがASCIIなので、また消して initdb -E utf8なんてやる。
続いて、psql -U pgsql postgres < バックアップファイル、なんてやってバックアップを戻す。
後は、念のためにpostgresql-client に依存していたパッケージを再インストールして、無事にバージョンアップが終了しました。
これで、MovableTypeがさらに早くなるかな?
こんなページを発見したので、うちのサーバもDomainKeys対応にしてみようかと思い立つ。
と言っても、このページの問題点によると、まだまだこれを使ってメールを弾いてしまうのは危険らしいので、自己満足の世界ですね。
ports/mail/dkfilterと言うのができていたので、まずはportsからdkfilterをインストール。
portsで入れると、普通に/usr/local系に入るらしい&ユーザとグループは作られないらしい。(でも、起動スクリプトだとdkfilterユーザで動くようだ)
そして、/usr/local/etc/rc.d/dkfilter_inとdkfilter_outと言う二つの起動スクリプトがインストールされるので、/etc/rc.confでdkfilter_in_enable="YES"とか書くと有効になるっぽい。
参考にしたドキュメントでも、portsでも、inboundフィルタのポートとして10025と10026を使うようだ。が、うちではamavisdとのやりとりに10025を使っているので、そこを避ける必要がある。
これは、rc.confでdkfilter_in_flagsをいじってやれば良さそうだ。
さて、amavisとdkfilterの二つのフィルタを通す必要があるのだが、どちらを先に通すべきだろうか?
良くわからなかったので、dkfilterを先に通すことにする。
つまり、
  1. ポート25でメールを受け取る
  2. smtpd_proxy_filterの設定に従い、ポート10026でdkfilterにメールを渡す
  3. dkfilterが検証した後、ポート10027に渡す
  4. ポート10027でpostfixが受け取った後、content_filterの設定に従いpipe経由でamavisdに渡す
  5. amavisdがウィルスの検証をした後、ポート10025に渡す
  6. 通常のメール配送
ん?amavisdを先にすれば、1ステップ減らせるかな?
  1. ポート25でメールを受け取る
  2. content_filterの設定に従い、pipe経由でamavisdに渡す
  3. amavisdがウィルスの検証をした後、ポート10025(dkfilter_in)に渡す
  4. dkfilterが検証した後、ポート10026に渡す
  5. ポート10026でpostfixが受け取り、通常のメール配送
これだと、ポートの設定もdkfilter側はデフォルトで行けそうですね。amavis側の戻し先もデフォルトのままだし・・・。
って、やっぱり駄目か。amavisdを通ると、メールのヘッダが変わってしまうので、dkfilterの検証に必ず失敗するに違いない・・・。
試してみれば良いんだけど、運用中のサーバだし、ちょこちょこ設定変えて再起動もしたくないのよね~。
と、言うわけで第1案で行くことにする。

inbound filterの設定

まずは、/etc/rc.conf
dkfilter_in_enable="YES"
dkfilter_in_flags="127.0.0.1:10026 127.0.0.1:10027"
後は、ユーザdkfilterを追加して、/usr/local/etc/rc.d/dkfilter_in start でdkfilter_inが起動する。
続いて、/usr/local/etc/postfix/master.cfを修正(変更箇所のみ提示)
smtp      inet  n       -       n       -       -       smtpd
        -o smtpd_proxy_filter=127.0.0.1:10026
        -o smtpd_client_connection_count_limit=10
        -o content_filter=
localhost:10027 inet n - n - - smtpd
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o receive_override_options=no_unknown_recipient_checks
有効にするにはpostfix reload。
これで、試しにDomainKeys非対応のところからメールを送るとヘッダに
Authentication-Results: *** from=***; domainkey=neutral (no signature; no policy for ***)
のような行が追加され、gmail等のDomainKeys対応のところからメールを送ると
Authentication-Results: *** from=***; domainkey=pass
DomainKey-Signature: ***
のような行が追加される。(***の部分は伏せてあります)

outbound filterの設定

こちらも、ポートの問題と順番の問題があるので、inboundとは逆に、amavisdを通してから、dkfilterを通すことにする。(と言うのは無理だった)
まずは、鍵の作成。(参考にしたページそのまま)
# cd /usr/local/etc
# mkdir dkfilter
# cd dkfilter
# openssl genrsa -out selector1.key 1024
# openssl rsa -in selector1.key -pubout | grep -v "^--" | tr -d '\012' > pubkey.tmp
# chown -R dkfilter:dkfilter .
# chmod 700 .
# chmod 400 selector1.key
続いて、DNSのゾーンデータに公開鍵を登録する。このドメインはwizard-limit.netなので、ゾーンファイルに以下を追加。p=の部分は先ほどのpubkey.tmpの中身。
selector1._domainkey IN TXT "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbdo
F8H6+qr8KZc9RrEhsax96E+qgD+TgalOCTPG2uq0Mb03UdHji8+ZOAGUlac/LhzitgBuXFAbOQ66kHO9
rYCgGzSb2BFs/crChTMSoN1iXhg/r/kK7pekSVJOO2FinJhoeTSVxxYGg4c9UZyrVjThXYrujGWwbtA0
JapbvqOwIDAQAB; t=y"
namedの再起動をしておく。(もちろん、rndc reloadとかでOK)

ここからがいよいよフィルタの設定。
/etc/rc.conf
dkfilter_out_enable="YES"
dkfilter_out_flags=" --header \
        --keyfile=/usr/local/etc/dkfilter/private.key \
        --selector=selector1 --domain=wizard-limit.net --method=nofws \
        127.0.0.1:10028 127.0.0.1:10029"}
そして、/usr/local/etc/postfix/master.cf
pickup    fifo  n       -       n       60      1       pickup
        -o content_filter=dksign:[127.0.0.1]:10028
submission inet n       -       n       -       -       smtpd
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_data_restrictions=
        -o smtpd_etrn_restrictions=reject
        -o content_filter=dksign:[127.0.0.1]:10028
dksign    unix  -       -       n       -       10      smtp
        -o smtp_send_xforward_command=yes
localhost:10029 inet n  -       n       -       10      smtpd
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o content_filter=
参考にしたページと違い、submissionポートでもSASLは有効にしていません。
結局、content_filterをうまく2重でかける方法がわからなかったので、pickup経由と、submission経由ではamavisを通らなくなってしまった。
どうしてもやりたかったら、inbound用とoutbound用の二つのamavisdを立ち上げて、それぞれで別のポートに返すようにしないと駄目かな~。
とりあえずテストとしては、gmail宛にメールを出してみたら、DomainKey-Status: good (test mode)みたいなヘッダがついていました。

と思ったんだけど、dkfilter_outの後にamavisを通すことならできそうなのでやってみたら、少なくともgoogleさんは文句を言わなかった。pgpの署名とかとは違って、メールの中身は変わっても問題ないらしい。
と、言うわけで、上のmain.cfの10029で、amavisをcontent_filterに指定してやれば、出て行くメールもウィルスチェックされるのであった。
localhost:10029 inet n  -       n       -       10      smtpd
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o content_filter=amavis
これができるんだったら、inboundの方もamavis→dkfilterにしようかとも思ったんだけど、dkfilter_inはキューに入る前にチェックするフィルタのようなので、今回はこのままで行くことにする。

こうやって動いてしまうと、SPFとか、SASLとか、どんどん入れたくなってしまいますねえ。

おまけ。
上記の設定だけだと、MUAからsubmissionポートに繋がりませんでした。
/etc/ipf.rulesを修正して、SMTPだけでなくsubmissionポートも通すようにして、無事にDomainKeysが有効になることを確認しました。
2006年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

このアーカイブについて

このページには、2006年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年2月です。

次のアーカイブは2006年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1