birdカルテット・クレマティス, 自宅メール環境の imap 化について

カルテット・クレマティス

今日久しぶりにカルテット・クレマティスの演奏会があったので、有葉と二人で聴きに行きました。ほんとはみんなで行くつもりが、家を出るのが遅くなってしまって、途中でお昼を食べたりしていたら時間がなくなってしまったので、図書館へ行く人と演奏会へ行く人で二手に分かれたのです。
そうそう、お昼を食べようと入ったマクドナルドでの出来事。いつものように注文を済ませ、トレイを持って5人でどやどや席に着こうと4人がけのテーブルであれこれしていたら、隣に座っていた外国人のおじいさんが、「こちらのテーブルも一つ使っていいよ」と (英語で) テーブルを一つ譲ってくれました。お父さんがあわてて「サ、サンキュー」なんて言っていたら、柊次は物怖じもせずに「ハロー!」なんて言っていて、おじいさんも楽しそうに「nice to see you!」なんて答えてくれたりして、なんだかとてもほのぼの。その後、おじいさんが帰られるときにも子供達みんなで「バイバーイ」なんて言って、おじいさんも「ビーグー!(Be good かな。「いい子になれよ」ってこと?)」と子供達全員にハイタッチしてくれて、なんだかとてもナイスなおじいさんでした。
さて、クレマティスの演奏会。今回はモーツァルトの弦楽四重奏曲第17番 (「狩」というタイトルがついているそうな) といつものベートーベンの弦楽四重奏曲第15番でした。
これまで僕は、モーツァルトってあんまり好きではなくてほとんど積極的に聴いたことがなかったのですが (積極的に聴こうとしなくてもモーツァルトクラスだといやでも聴く機会があるけれど)、今日久しぶりに聴いたモーツァルトはなんだかとても豊かな感じで良かった。
しかし、なんといってもベートーベンですよ。今日の演奏会の15番は、なんだかいつも以上ににクレマティスの方々の気合が入っているように感じたのだけれど、気のせいだったのかな。第三楽章のモルト・アダージョ、「病癒えたる者の神への聖なる感謝」と添え書きのあるパートが特に良かった。50分近くあるこの弦楽四重奏曲の中の、さらに 1/3 近くを占める楽章なんですが、なんだかあっという間に感じるような、そんな密度の高い楽曲、演奏でした。

自宅メール環境の imap 化について

ちょっと前に、自宅メール環境を imap 化して、外部からでもメールの送受信を統一的に扱えるようにしてみました。

Debian の場合 imap 化自体はぜんぜん大したことをする必要がありません。MTA はもともと Postfix が入っていたので、僕の場合、追加で courier-imap と fetchmail のパッケージをインストールしました。今調べてみたところ、courier 関係、fetchmail 関係は次のパッケージがインストールされました。

courier-authdaemon                              install  
courier-base                                    install  
courier-imap                                    install  
courier-imap-ssl                                install  
courier-ssl                                     install  
fetchmail                                       install  
fetchmailconf                                   install  

次に、Postfix の設定を変更して、ローカルメールスプールを Maildir 形式に変更しました。これも、/etc/postfix/main.cf に下記の変更をして、postfix を再起動するだけで完了です。あ、一応自分のホームディレクトリ直下で「maildirmake ./Maildir」として Maildir ディレクトリを作っておいた方が良いのかも (この辺の作業をしたのがもう一月以上前なので忘れかけている…)。

# 下記をコメントアウト  
#mailbox_command = procmail -a "$EXTENSION"  
home_mailbox = Maildir/  

続いて courier-imap の設定です。今回はただの IMAP ではなく IMAP over SSL にて利用しようと思っていたので、imap server 用の RSA プライベート鍵と証明書、あと DH Parameter をセットにした imapd.pem というファイルを作って (作り方は省略〜<ヲイ)、/etc/courier 以下に置きます1。また、認証用の userdb を下記手順で作成します。

# pw2userdb >/etc/courier/userdb  
# makeuserdb  

最後はプロバイダのメールサーバから POP を用いてメールを取り込んでくる fetchmail の設定です。これもホームディレクトリ直下に下記のような内容の .fetchmailrc ファイルを作って、一回「fetchmail」を実行するだけで完了です。下の例では 10 分毎にプロバイダからメールを取り込み、ホームディレクトリの Maildir に貯めていきます。

set daemon 600  
#set logfile /home/kazawa/tmp/fetchmail.log  
poll メールサーバ名 protocol pop3:  
        username "ユーザ名", with password "パスワード"  
        is "kazawa@localhost" here;  

以上で IMAP メールサーバとしてアクセスすることが出来、リモートからでも自宅メールが読めるようになると思います。あ、古い mbox 形式のメールスプール (Netscape/Mozilla 系のメーラを使っている人など) を Maildir 形式のそれへと変更する、といった場合は mb2md などのユーティリティを使ってください。

さて、受信に関しては以上で完了なのですが、問題は送信です。同じサーバ上で適切に設定された MTA を動作させて、MUA からはそこに対して送信してあげれば、とりあえず大多数のサイトへはメールが出せるようになると思います。しかし、これだけ spam のはびこる昨今、きちんと DNS に正引きも逆引きも登録されたサイトからでないとメールを受け付けないという設定を行っているメールサーバも多く、我が家のように Dynamic DNS でしか引けないようなサイトからは、そういうサイトへはメールが出せなくなってしまうのでした (有名どころでは AOL や au などがそのような設定なのだそうですね)。

そこで、自宅 MTA に各サイトへの直接配送をさせるのではなしに、自宅 MTA から So-net の MTA を経由してメールを配送することにしました。

ただもちろん、そのまま普通にたとえば自宅 MTA の relayhost として So-net の MTA を指定しても、ほとんどのメールは第三者 relay とみなされて蹴られてしまいます。こういった状況に対応するための技術として「POP before SMTP」や「SMTP Auth」などがありますが、MTA 同士という関係では POP before SMTP はうまく動作しない、という話も聞いたので、今回は SMTP Auth を使ってみることにしました。

Postfix に relayhost の設定を行い、そこへの接続時に SMTP Auth させる設定も Debian では簡単です。まず、標準の Postfix には SMTP Auth で利用する SASL モジュールが入っていないので、その機能を追加する「postfix-tls」パッケージをインストールします。

# apt-get install postfix-tls  

次に、So-net の MTA に接続するときに使う、ユーザ名 (So-net の場合メールアドレスとなります) とパスワード2を設定したファイルを /etc/postfix/sasl/saslpass として作成し、下記手順で DB も作成しておきます。

# vi /etc/postfix/sasl/saslpass  
(下記内容のファイルを作る。)
[SMTPサーバ名]    ユーザ名:パスワード  
# postmap /etc/postfix/sasl/saslpass  

最後に、/etc/postfix/main.cf に下記記述を追記した後、Postfix をリスタートします。なお、SMTP サーバ名は “[]” で囲う必要がありますので間違えないように。

#  
# smart relay host with SMTP-Auth  
#  
smtp_sasl_auth_enable = yes  
smtp_sasl_password_maps = hash:/etc/postfix/sasl/saslpass  
smtp_sasl_security_options = noplaintext, noanonymous  
relayhost = [SMTPサーバ名]  

以上で、自宅 MTA から So-net の MTA を経由してどこへでもメールを送信することができるようになりました。なお、自宅 MTA の設定がきちんとしていないと、世界中の spammer からメールを送信され放題になってしまうので (そして多分 So-net のアカウントを停止される)、くれぐれも自宅 MTA の設定には気をつけてください。たぶん、そもそも家庭内 LAN の外からの SMTP アクセスは許さないようルータを設定して、家庭内からの SMTP 接続のみ受け付けるように設定しておけばかなり安全でしょう (その場合でも無線 LAN などを使っている場合は要注意)。


  1. Debian 標準の手順でもインストール時に適当な証明書を作って置いてくれるので、この手順は必ずしも必要ではないのですが、今回は自宅のオレオレ CA に発行してもらったサーバ証明書が使いたかったので入れ替えてみました。 ↩︎

  2. 平文で書くようなので、念のためこのファイルのモードは 600 としておきましょう。 ↩︎