TeX

最近、\TeX を使っていないことに気づきました。それどころか、MS-Word を初めとするワープロの類を使っていません。以前から、\TeX の技術が好きで、PC には必ずインストールしていたんですけどね。情報の発信が、仕事でもプライベートでも、電子メールと web だけに頼っていることに気づきました。

NIFTY メール遅れる

先日、au のメールが遅れると書いたのですが、いろいろ調べていたら、NIFTY から au 行きのメールが半日近く遅れていることが分かりました。NIFTY から他へのサーバーは OK。また、会社から au も大丈夫です。なんでしょう、これ? 彼らのいずれかが変なセキュリティ対策を取っているんじゃないかと不安です。
ちなみに私は普段、メールはおうちサーバー*1経由で相手のメールサーバーに直接送りつけます*2。これがインターネットメールの本来のあり方で、負荷分散にも適していると思うんですね。巨大プロバイダのメールサーバーに一括集中して負荷をかけるのは愚かなことです。最近、迷惑メールの安直な対策として、携帯電話業者が例えば DNS の正引き・逆引きの合わないサーバーからのメール受信を拒否するのは、本当に鬱陶しいです*3。早く、DomainKeys などのまっとうなアドレス詐称防止技術が普及すると嬉しいです。

このような、逆引きできないサイトからのメールを拒否するサイト

多くの携帯電話会社や、AOL がそうです。私は、Postfix の transport に次のように記述しています。

docomo.ne.jp    :[smtp.nifty.com]
ezweb.ne.jp     :[smtp.nifty.com]
weird.com       :[smtp.nifty.com]
aol.com         :[smtp.nifty.com]

(後記) SMTP port (25) の送出を禁止しているプロバイダ

こんなプロバイダもあるそうです。インターネットの本質は分散処理だと思うので、私はこういうプロバイダは使いたくありません。

DomainKeysPostfix

ちなみに、まだ PostfixDomainKeys に対応していないみたい。
参考: DomainKey Library and Implementor's Tools

RFC 2554 - SMTP Service Extension for Authentication

NIFTY のメールサーバーを使うのが嫌になってきたので調べてみたところ、私の使っている pobox.com のサーバーが、SMTP リレーもしてくれることが分かりました(← もっと早く知れ!)。しかし、こいつは RFC 2554 の AUTH PLAIN みたいなものを使わないとメールを受理してくれません。その代わり、認証さえちゃんとしてくれれば、From: が pobox.com のアドレスじゃなくても受け付けてくれます。これなら、おうちサーバーからメールを送るとき、私だけでなく、妻や他ドメイン発のメールも送れます。すばらしい。
しかし、NetBSD 標準の PostfixRFC 2554 の認証に対応していないみたいです。Cyrus-SASL というのをインストールすれば良いらしいのですが…。

*1:もちろん NetBSD です。

*2:携帯電話業者向きだけは例外ですが。

*3:いずれにしても、IPv6 時代には逆引きによる対応は難しくなるという話を聞いたことがあります。逆引きのコストが大きすぎるからでしょうか?

というわけで、Postfix の設定

上に書いたサイトを参照すれば設定できるのですが、ここでは備忘録として簡単に記しておきます。

Postfix のアップデート

NetBSD 1.6.2 に入っている Postfix は古いので、pkgsrc から最新版をインストールしました。といっても、current 版ではありません。
この際、sasl に加え ipv6 オプションを有効にしなくてはならないそうです。私はメンドーなので、pkgsrc/mail/options.mk に次のように書き加えてしまいました。

PKG_OPTIONS+= sasl inet6

そして、make install です。

Cyrus の追加モジュールのインストール

pkgsrc から、以下をインストールしておきます。他のモジュールも必要かも知れませんが、私は pobox.com への SMTP 接続に必要と思しきものだけインストールしました。

  • security/cy2-login
  • security/cy2-plain

Postfix のセットアップ (まずは SASL なし)

今までのバージョンの main.cf とほとんど共通のようですが、差分だけをマージしました。具体的には、以下の指定です。

  • myhostname
  • mydomain
  • myorigin
  • mydestination
  • mynetworks

これに加えて、以下を追加しました。これは、元々利用していた設定です。postmap で .db ファイルを再構築するのを忘れないようにします。

  • transport_maps = hash:/usr/pkg/etc/postfix/transport

続いて、/etc/rc.d/postfix の修正です。これは次の部分を修正しただけです。

start_cmd="/usr/pkg/sbin/${name} -c /usr/pkg/etc/postfix start"
stop_cmd="/usr/pkg/sbin/${name} -c /usr/pkg/etc/postfix stop"
reload_cmd="/usr/pkg/sbin/${name} -c /usr/pkg/etc/postfix reload"

さて、早速 Postfix を起動すると、あるディレクトリのパーミッションが不正だと言って怒られるので、修正しておきます。どうもバージョンアップで厳しくなった感じです。

IPv6 に注意

さて、今回から IPv6 に対応させたことで、一つポカをやってしまいました。ローカルホストから SMTP ポートを叩く場合ですが、mynetworks の設定に注意が必要です。例えば、次のようにします。これを忘れると、IPv6 で自サイト内からアクセスしたときにリレーを拒否されてしまいます。

mynetworks = ... [::1]/128 [fe80::]/10 [2001:1234:5678::]/48

続いて SASL 対応化

まず、main.cf を以下のように追加します。

  • smtp_sasl_auth_enable = yes
  • smtp_sasl_password_maps = hash:/usr/pkg/etc/postfix/sasl_passwd
  • smtp_sasl_security_options =

このとき、間違って

mailbox_transport = cyrus

を追加しないようにします。これは、別の目的の設定のようです*1
さらに、次のファイルが必要です。

フォーマットは、

<相手方 SMTP サーバー名>    <ユーザー ID>:<パスワード>

です。これも、postmap コマンドで .db に変換しておきます。

動作を確認する

最後に動作の確認です。一度 postfix を再起動した後、

  • 内部ネットワークから外部へ
  • 外部から内部ネットワークへ
  • ローカルホストから外部へ
  • ローカルホスト内

などいろいろな動作を確認しておきます。最後にログファイルを確認して、変なエラーが出ていなければ OK でしょう。

*1:設定不足になって、メールの受信ができなくなる。

PerfectDisk 7.0

試しに職場で使っています。システム関係のエリアも起動時にデフラグしてくれるのが嬉しいです。Windows XP 標準のツールに比べて、デフラグ時の配置方法が少し賢いらしいです。
URL: Defrag & Fragmentation Prevention - PerfectDisk Pro | Raxco Software

それにしても、メモリが足りない

Windows 用のメモリ節約ソフトです。いろんなソフトがあるらしいです。

いくつか試してみましたが、やっていることは、仮想記憶を大量に要求して動いているプロセス群を強制的にページアウトし、その後仮想記憶を解放しているだけのように見えます。まあ、アプリケーションレベルではそれくらいしかできないよなあ。だとしたら、フリーで手に入る RAM Idle LE で十分なような気がしてきました。
ところで、当初このような戦術の効果を小さく見積もっていたのですが、使っていると思ったよりも有効な感じです。必要なアプリケーションのメモリまでページアウトされてしまうという問題はありますが、メリットのほうが大きいかも知れません。Windows XP のメモリ管理は、余計な内容をメモリ中に保持してしまう方向に強くチューニングされ過ぎている気がします。定期的にメモリをページアウトしてしまうという戦術は面白いです。もう少し使い込んでみようと思います。