#
Last-modified: Tuesday, 29-Apr-2003 01:34:40 JST
[
トップページ/
いとしの liza(SL-C700 のページ)/
Mutt と仲間たち Version 2.0/
Mutt と仲間たち 〜 make 編〜/
ウクレレ日記
]
2003-02-16 ♪きむらかずし kimu*st.rim.or.jp
2003-03-22 加筆修正。ちょっと HTML 化。
2003-04-01 mutt 1.4.1i-ja.1 をつくったので make 編を公開。
2003-04-18 mutt 1.4.1i-ja.1 (と libiconv )の ipk をどうぞ。
2003-04-26 nomail の ipk 化を作業中なので、本ページも加筆修正。
2003-04-27 リニューアル版リリースにより、本ファイルは旧版とした。
Sharp LinuxZaurus (SL-C700) の標準メーラーはあまりにも(以下 省略)。かといって emacs 環境は重そうだし、SL-C700 じゃ小指 でcontrol を押せないし。で、 Mutt という軽いターミナル・ベー スのメーラーを入れてみることに。でも、のら犬 Mutt くんは寂し がりや。次々と UNIX 仲間を呼び寄せて……。
ちなみに GUI をお望みの方にはお役に立てません。あしからず。
zaurus-ja 版の mutt-1.4i-j1 がセキュリティ上の問題で非公開に。 代わりに mutt-1.4.1i-ja.1 を作ってみました( Mutt と仲間たち 〜 make 編〜)。 その後、特に不具合報告がなかったので ipk 化して公開中です。 このページも更新しました。(2003-04-18)
libiconv_1.8-2_arm.ipk http://kimux.org/liza/arc/libiconv_1.8-2_arm.ipk GNU libiconv-1.8 (共有ライブラリのみ)。Mutt で必要。 /usr/lib に入るので本体メモリにしかインストールできない。 (2003-04-18) mutt_1.4.1ja1-1_arm.ipk http://kimux.org/liza/arc/mutt_1.4.1ja1-1_arm.ipk テキスト・ベースの軽快メーラー Mutt のセキュリティ対策版 1.4.1 に日本語パッチが当たったもの。/opt/QtPalmtop に入るの で SD カード等へもインストールできる。 古いバージョン mutt 1.4 が入っている場合は予めアンインストー ルした方がよい。人柱版(/usr/local/bin にインストールされ る)で問題なく運用されている方はあえて乗り換える必要はない が、ipkg版に乗り換えるのであれば関連ファイルを削除した方がよ ろしいかと。いずれにせよ、ホームディレクトリの .mutt/muttrc はそのまま使える。(2003-04-18) zaurus-ja より fetchmail_5.9.11-1_arm.ipk procmail_3.22-1_arm.ipk qpe-embeddedkonsole-ja_1.5.0-2_arm.ipk http://sourceforge.jp/projects/zaurus-ja/ embeddedkonsole-ja hack 版のフォント選択追加版 by memn0ck さん http://www.memn0ck.com/d/index.cgi?LinuxZaurus%2FDownload#i1 jvim-plain_3.0-2.1a-4_arm.ipk ( jvim パッケージ)by kaze さん http://www.yk.rim.or.jp/‾kaze/zaurus/ あるいは、ちょっと重たいけど(2003-04-26 追記)、 vim-base_6.1.392kaoriya-1_arm.ipk (vim-6.1 パッケージ) http://kimux.org/liza/arc/ perl_5.6.1-7_arm.ipk (nomail で必要) http://www.killefiz.de/zaurus/showdetail.php?app=312 nomail by negi さん。 nomail-0.4.10.tar.gz は下記から http://www.ku3g.org/negi/nomail/ Perl の Getopt::Std モジュール。 一般的な Perl パッケージには含まれるはず。 単体では下記から入手できる (2003-04-18) http://www.io.com/docs/perl5-modules/Getopt/
mutt, libiconv, fetchmail, procmail, perl の ipk をインストール。 それに「用意するもの」でまだ入れていないものをインストール。
embeddedkonsole-ja は hack 版(の hack 版)で入れ替える。 これでキーボードから日本語入力可能となる。
日本語対応エディタが必要なので jvim 3.0 あるいは vim-6.1 をインストール。 この場合、/usr/bin/vi のシンボリックリンクを張り替えておく。
# mv /usr/bin/vi /usr/bin/vi.orig 例えば jvim を使う場合は、 # ln -s /usr/bin/jvim /usr/bin/vi vim-6.1 を使う場合は、 # ln -s /opt/QtPalmtop/bin/vim /usr/bin/vi
↑加筆修正(2003-04-26)
"nomail" の引数処理で必要となる Getopt::Std モジュールが、 なぜか perl パッケージに含まれていないので、どこからか Std.pm を盗ってくる。 nomail で難しいことをしないなら不要(だが nomailスクリプトを改造する必要がある)。
$ su # cp -p Std.pm /usr/share/perl/5.6.1/Getopt/
↑置き場所をより正しい /usr/share/perl に変更(2003-04-26)
Perl 実行時の warning: Setting locale failed. を出ないように、 環境変数 PERL_BADLANG を 0 に。 embeddedkonsole-ja のために TERM をセット。 もちろん bash を使っていない人は、当該シェルの設定ファイルにどうぞ。
エディタにて、"--- start ---" と "--- end ---" に挟まれた中身だけ、 追記する(以下、同じ)。
$ cd $ vi .bashrc --- start --- export PERL_BADLANG=0 export TERM=xterm-new --- end ---
↑環境変数の設定を短縮形に修正。 2003-04-26
sendmail すなわちメール送信は /usr/sbin/nomail (後述)に設定。 realname, from, hostname は必ず自分に合わせて書き変えること。 メールボックスは流行りの(?) Maildir 形式 (メール 1 通が 1 ファイルとなる)にしてみる。 mutt -y オプション起動時に(例えば)ふたつのメールボックス mbox, mac を表示するように、mailboxes コマンドを置いてみる。 メールボックス名の頭の "+" 記号には変数 folder が展開される。 mutt 自身が持つ POP 受信機能は使わない。
$ cd $ mkdir Maildir $ mkdir .mutt $ vi .mutt/muttrc --- start --- set sendmail="/usr/sbin/nomail" set realname="NANASHI Gonbei" set from="nanashi@example.com" set hostname="example.com" set mbox_type=Maildir # set spoolfile="/var/mail/zaurus" set folder="‾/Maildir" set mbox="+mbox" mailboxes "+mbox" "+mac" set record="+outbox" set postponed="+postponed" set tmpdir="‾/tmp" set editor="vi %s" # I use fetchmail&procmail # set pop_host="pop://nanashi@example.com" --- end ---
↑サンプルのドメイン名を example.com に変更(2003-04-26)
さらに、下記を付け加えてもよい(2003-03-22 追記)。 上部にメール一覧、下部にメール本文を同時に表示したいとき、 その行数を pager_index_lines で指定する。
# show both index and body set pager_index_lines=5
ヘッダーにて Date (デフォルトでは非表示)を表示する。 X や List- で始まる行は非表示とする。
# view/hide lines on header unignore Date: ignore X ignore List-
mutt 1.4.1ja1 では、グローバルな設定ファイルは、 /opt/QtPalmtop/etc/ にインストールされている。 Muttrc と mutt-ja.rc (と mutt-en.rc )である。 mutt-en.rc は敢えて英語メッセージを主に使う場合に、 これを呼び出すように Muttrc を書き換える。 (2003-04-18)
/opt/QtPalmtop/doc/mutt には、 主要なドキュメントをピックアップしてある。 (2003-04-18)
メールの受信には fetchmail を使う。以下は、ふたつの POP アカ ウントを設定した例。"keep" でサーバに残す。今時(いまどき) の POP サーバ向けに、"uidl" で既読のチェックを行う。
!!! パスワードを直接記述するので、他人に見せないように !!!
$ cd $ vi .fetchmailrc --- start --- set nobouncemail defaults protocol POP3 uidl keep no mimedecode mda "/usr/bin/procmail" poll pop1.example.com username "nanashi" password "himitsu1" poll pop2.example.com username "nanashi" password "himitsu2" --- end ---
↑サンプルのドメイン名を example.com に変更(2003-04-26)
必ず下記のパーミッション設定をすること。
$ chmod 600 .fetchmailrc
fetchmail で受信したメールを自動的に振り分けるために procmail を使う。必須ではないが、どうせ後から欲しくなるので、最初から 入れませう。
パッケージをインストールすると QtPalmtop に入るので、一般的 なパスからシンボリックリンクを張っておく。
$ su # ln -s /opt/QtPalmtop/bin/procmail /usr/bin/procmail
で、設定ファイルを書く。振り分けのところは相変わらず呪文のよ うだ。詳細は Google って調べること。
"#" で始まるのはコメントなので入力しなくてもよい。":0 " は振り分け設定開始の合図。"*" に続いて、振り分けのための検索 文字列を書く。"^" は行の先頭を示す。例ではヘッダー部に "X- Ml-Name:osa-users" が含まれていたら、"mac" というメールボッ クスに入れる。メールボックス指定では、Maildir 形式を示すらし い最後の"/" を忘れないこと。振り分けの設定はいくらでも書ける。 すべての振り分けに該当しなかったメールはデフォルトの "mbox" に入る。
最初に試すときには、最初の 5 行だけ入力して、それ以降の振り 分けの設定はしない方がいいかも。
$ cd $ vi .procmailrc --- start --- PATH=/bin:/usr/bin:/usr/local/bin MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/mbox/ LOGFILE=$MAILDIR/procmail.log LOCKFILE=$MAILDIR/.lockmail # ":0 " ... colon,zero,space :0 * ^X-Ml-Name: osx-users mac/ --- end ---
これで、下記のコマンドを打ち込むと、メールを受信できる(はず)。
$ fetchmail
受信されたメールは procmail によって自動的に振り分けられて、 ‾/Maildir 内の各メールボックスに納められる(はず)。
おもむろに Mutt を立ち上げてみよう!!
$ mutt -y
メールが受信できたら一安心。でも、設定はまだ終わらない。 nomail をインストールしないと、メールの送信ができないのだ。
シンプルな「オフライン SMTP サーバ」nomail を、さらに割り 切って使う。インストール済みの perl では、いわゆる suid script (管理者権限で実行されるスクリプト)を作れないみた い。よって同封されている INSTALL の通りにはいかないのだ。
(作業ディレクトリにて)
$ zcat nomail-0.4.10.tar.gz | tar xvf - $ cd nomail-0.4.10
一応、ドキュメントを読む。
$ vi README $ vi FAQ $ vi INSTALL $ vi Makefile
Perl スクリプト "nomail" に対して syslog 対策(後述)を施す。
$ vi nomail
syslog 行にフラグをくっつける( if ($syslog_f); )。下記の diff -c 出力を参考に修正する。面倒であれば、 syslogが出てく る行を全て # (コメント)にしてしまう。
--- start --- *** nomail.orig Fri Dec 15 02:19:56 2000 --- nomail Sat Feb 15 19:08:07 2003 *************** *** 22,27 **** --- 22,30 ---- $remote_host = "localhost"; $msg_c = 0; # Message Counter; + $syslog_f = 0; # 0: dont use syslog 2003-02-15 kimura + + @localuser = (); @mail_data = (); @header = (); *************** *** 117,123 **** print MAIL join("¥n", @body) ."¥n"; close MAIL; } ! syslog('info', "DELIVERY: rcpt=" . join(",", @local_rcpt)) } # --- 120,126 ---- print MAIL join("¥n", @body) ."¥n"; close MAIL; } ! syslog('info', "DELIVERY: rcpt=" . join(",", @local_rcpt)) if ($syslog_f); } # *************** *** 130,136 **** print MAIL "¥n"; print MAIL join("¥n", @mail_data) . "¥n"; close MAIL; ! syslog('info', "QUEUE: qid=$time$msg_c$$ rcpt=" . join(",", @inet_rcpt)); } # --- 133,139 ---- print MAIL "¥n"; print MAIL join("¥n", @mail_data) . "¥n"; close MAIL; ! syslog('info', "QUEUE: qid=$time$msg_c$$ rcpt=" . join(",", @inet_rcpt)) if ($syslog_f); } # *************** *** 196,202 **** $|=1; print "220 $host SMTP Nomail $VERSION ($CODENAME)¥r¥n"; while(<STDIN>){ ! syslog('debug', $_); if(/DEBUG/i){ while(my ($key, $val) = each %OPTION){ print "$key = $val¥n"; --- 199,205 ---- $|=1; print "220 $host SMTP Nomail $VERSION ($CODENAME)¥r¥n"; while(<STDIN>){ ! syslog('debug', $_) if ($syslog_f); if(/DEBUG/i){ while(my ($key, $val) = each %OPTION){ print "$key = $val¥n"; *************** *** 298,305 **** if(@ARGV){ # MUA mode my $unknown = undef; ! syslog('info', "invoked MUA mode"); ! syslog('debug', "ARGV: " . join " ", @ARGV); getopts('F:f:o:ti'); while(<STDIN>){ chomp; --- 301,308 ---- if(@ARGV){ # MUA mode my $unknown = undef; ! syslog('info', "invoked MUA mode") if ($syslog_f); ! syslog('debug', "ARGV: " . join " ", @ARGV) if ($syslog_f); getopts('F:f:o:ti'); while(<STDIN>){ chomp; --- end ---
さて、root になってインストール。置き場所が違うので注意。
$ su # cp -p nomail /usr/sbin/ # cp -p nosend /usr/bin/ # cp -p nomail.conf /etc/
設定ファイルを開いて、「(必須)」と書いてある 2 行だけ、 コメントを外して書く。 複数の送信先を使い分けたい場合は、 /etc/nomail.conf をすりかえるか、 nosend のオプション -f -s を使えばいいみたい。
# vi /etc/nomail.conf (省略) internetaddr nanashi@example.com (省略) smtphost smtp.example.com
オフライン時でも大丈夫なように、nomail が「未送信メール」を スプールしておく場所を作る。割り切ってユーザ zaurus 専用とする。
# mkdir /var/nomail # chown zaurus:qpe /var/nomail # chmod 700 /var/nomail
(↑ chmod 600 となっていたので修正。 2003-03-22 )
使わないけどメールスプールを作っておく。(たぶん)作らなくて も大丈夫。
# mkdir /var/mail # touch /var/mail/zaurus # chown zaurus:qpe /var/mail/zaurus # chmod 600 /var/mail/zaurus
$ mutt -y
mutt で "m" でメールを書いて、"y" で送信だ。このとき nomail が 呼ばれて、オフラインを前提として /var/nomail にメールが貯まる。 何通でも溜め込めるはず。
さて、メールを実際に外の SMTP サーバに投げつけるコマンド、 nosend を叩いてみよう!! メールが外に出ていったかな??
$ nosend
(↑間違えて nomail と書いてました。すみません。 2003-03-22 )
nomail や nosend の "no" は、英語のノー(無し、否定)じゃな いので、ご注意。いやしかし紛らわしいお名前。
Mutt Japanese Edition http://www.emaillab.org/mutt/ ここの「LinuxJapan掲載記事」は勉強になるなぁ(全部読んでないけど)。 Nomail - オフライン SMTP サーバ http://www.ku3g.org/negi/nomail/ SL-C700 の「メール関連」(さきらさんの鍋 RWiki) http://sun.dhis.portside.net/‾sakira/wiki/index.cgi?cmd=view;name=SL-C700 先にここを読んでおけば、もうすこし楽だったに違いない。 procmail の振り分けの呪文については、Google で探してね。 ターミナルでメール送受信 Part-1, 2, 3(☆ ぬ〜 ☆さん) http://www25.cds.ne.jp/‾fakira/pda/sl/neta/neta-001.htm http://www25.cds.ne.jp/‾fakira/pda/sl/neta/neta-002.htm http://www25.cds.ne.jp/‾fakira/pda/sl/neta/neta-003.htm 当ページより懇切丁寧な解説があります。