4.4 procmail と mailx をどうやってつなげるのか -- Perl スクリプト maildelivery.cgi

従来は、転送が必要なときは、 .procmailrc の中で転送先アドレスを書けば良かった (それで sendmail が起動された)。 何か郵便局の窓口に行っておじさんと交渉する感じだ。 これを街にあるポスト投函に切り替えるわけだ。

:0 c
|$どこか/maildelivery.cgi
みたいな感じに設定する。maildelivery.cgi をどのように実現するか。

はじめての自宅サーバ構築 - Fedora/CentOS - というWWWサイトに参考になりそうな ことが書いてあった。 届いたメールを加工して (MIMEやBASE64をデコードして、文字コードの変換をして…)、 先頭400文字分だけ、転送するという内容のスクリプト maildelivery.cgi があった。 転送には sendmail を使っているけれど、 そこを mailx に差し替えれば動作しそうだ。

maildelivery.cgi では、以下のものを使っている。

最初の2つはすぐに見つかった。
unzip perl-lib.zip
sudo cp -p perl-lib.pl /opt/local/lib/perl5/site_perl/
curl -O http://www.cc.rim.or.jp/~ikuta/mime_pls/mime_pls202.tgz
mkdir mime_pls202
cd mime_pls202
tar xzf ../mime_pls202.tgz
sudo cp -p mimer.pl mimew.pl /opt/local/lib/perl5/site_perl/

最後の network_modules.zip が見つからない。 はってあるリンクがリンク切れになっている。 ネットには、 network_modules.zip を個人的にやり取りしているような記録もあったけれど、さて、どうしよう。

こういうときはダメ元で、 Internet Archive をチェックしてみる (こういうのもバッドノウハウなのかな)。 無事 network_modules.zip をゲットできた。

これで材料は揃った。後は maildelivery.cgi を書き直せば良いだろう。

maildelivery.cgi は出力を sendmail に渡すことを想定しているから、 ヘッダーまで作っているのだけど、今回は mailx で送信するので、 それは不要である。その部分は削る。 だから簡単なはずなのだけど、思いの他、大変だった。

一つの理由は maildelivery.cgi が古いスクリプトで、 UTF8 のことは考えていないようだ、というのがある。 これについては、Jcode を使うようにして何とか切り抜ける (Jcode というの出来ましたみたいのは、 Perl 使いでない自分も何となく覚えている)。

桂田 祐史
2018-11-04