SMTP → メールサーバ (自分宛のメールは受けとる) ← pop over ssh ← クライアントのような形を作りたい。 が、メールサーバで 110/tcp のソケットを開くなどということはしたくない。 主に、暗号化や認証強度について憂慮するところがあるからだ。
適当にファイルに mbox 形式で突っ込んで ssh ごしに取り出せばええやん というのが安直な発想だが、これはこれでロックの問題とか、切り出した後 どうする?とかいうあたりを作りこまないといけないので面倒だ。
UNIX たるもの、 既存のツールを組み合わせて、shell script 数行程度で なんとか hack したい。
ロック問題を考慮して Maildir を採用することにする。
Maildir を直接読む popd ないし imapd を使うことで listen もしない。 (節のタイトルは POP とかいってるのに:-) 今回は、とりあえず imapd を使ってみよう。 クライアントからは
% ssh メールサーバ imapd Maildir/などとして、クライアントは直接 IMAP プロトコルを( ssh 上で )話す ことで、暗号化と認証は SSH にすべてまかせることにする。
さらに、クライアントは IMAP で受けとったメールをすかさず procmail にく べて、配送処理( folder 仕分け処理)を行なうことで、MTA ( postfix )へ渡 す処理は省く( 配送先は ~/.procmailrc 次第でどうとでもなるということで すな )。
これらを全部合わせると、こんな感じの script になる。
command="$ssh -l ユーザ %h /usr/pkg/bin/imapd /ほーむ/でぃれくとり/Maildir" /usr/pkg/bin/fetchmail \ -m /usr/pkg/bin/procmail \ --plugin "$command" \ -u ユーザ \ -p imap \ -a \ メールサーバ
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >