FreeBSD 電子メールソフト紹介

Last Update (2001/03/26 07:30:49)

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索] [高速検索]

電子メールソフト紹介

Wanderlust -- Yet Another Message Interaface on Emacsen --
XEmacs上で動作するメール/ニュース管理システム。
全部 emacs lisp で書かれている。 IMAP4にも対応している。 MH形式のフォルダも扱えるので、現在乗り換えを検討中。 XEmacs-20.4上で動作を確認。 派手なカラーリングがナイス。
fetchmail-4.6.0 FreeBSD 2.2.8R
fetchmail-4.3.8 FreeBSD 2.2.6R
fetchmail-4.3.1 FreeBSD 2.2.5R〜
fetchmail-3.9.4.tgz FreeBSD 2.2.2R〜
インターネットプロバイダのPOPサーバやDMAPサーバに接続して、ローカルマシンにメールを持ってくるソフト。
私の場合、~/.fetchmailrc に
defaults protocol pop3 fetchall
poll mail.yk.rim.or.jp protocol pop3 username ******** password ********
poll pop.ceres.dti.ne.jp protocol pop3 username ******** password ********
	
と書いて、chmod 600 ~/.fetchmail している。

FreeBSD 2.2.8Rのバイナリパッケージfetchmail-4.6.0.tgzは、kerberos対応バイナリとしてコンパイルされているので、kerberosが入っていない場合には利用できない。 そんな場合はportsからコンパイルしよう。

fetchmail-4.3.1の場合、メール本文中の行頭に . (ピリオド)が入っている行があるとメールを取って来れなくなるというバグがあるようだ。 そんな場合には、緊急避難措置としてpopclient-3.0b6を利用すると良い。

また、最新のfetchmail (ports-currentからコンパイルしたもの)では、メールを取って来る時にメールタイトル(Subject)のMIMEをデコードする機能が追加されている。 mew-1.92.4+imを利用している場合は、メール取得クライアントであるfetchmailがMIMEをデコードすると都合が悪いので、~/.fetchmailrc内部に以下のように指定して MIMEデコードを禁止すると良いようだ。

no mimedecode
	
popclient-3.0b6.tgz FreeBSD 2.1.5R 〜 2.2.6R
popclient-3.0b6.tar.gz 118KB
ftp://ftp.huie.hokudai.ac.jp/pub/system/FreeBSD-distfiles/
インターネットプロバイダのPOPサーバーに接続して、ローカルマシンにメールを持ってくるソフト。
持ってきたメールは、そのままローカルマシン内部のユーザーにメールを出す形で転送されるので、メールを読む環境には mail や mh や mew など、普段使っているものが利用できるという優れものである。 FreeBSD CD-ROM 2.1.0R の packages に含まれているバージョン 2.21 ではうまく動作していなかったようだが、最新版だと動作を確認した。

現在、popclientの新規開発は停止しており、fetchmailというソフトに役割を譲っているようだ。

Mew Official Homepage
mew-1.91.tar.gz 416 KB
im-71.tar.gz 159 KB
xemacs上で利用するメールソフト mewの最新版 1.91と、mhの代わりを勤めるim-75。
最新のmewでは、mhを使わずにim(perl5.004スクリプト)を使うようになった。 imはperl-5.004以降が必須になっているので、各自でperl-5.004を入手、インストールする必要がある。 (FreeBSD 2.2.2RのCD-ROMのpackagesに含まれているperl5は5.003なのだ。)
基本的には xemacs から利用するのが正しい姿だと思うが、mule-2.3からも利用できる。
mew-1.70などと比較すると、動作が重くなったようだ。 なるべく高速なマシンで利用したい。
imのインストールはドキュメントの通りにすればよい。 imsetup を実行すると、ユーザ別の設定を質問してくるので、それに答えればimの設定は終了だ。
imsetupを利用しただけでは、ローカルマシン宛(宛先のドメイン名を省略した場合)のメールが出せなくなる。 ~/.im/Configファイル中に
ToDomain=magi.nerv.jp
	
のように、ローカルマシンの名前を記述しておくと良い。

以下に、mew-1.91でメールもスレッド化する差分を示す。 mew-1.90以降では、News閲覧モードでメールのMessage IDをもとにして、元発言とそれに対するコメントをツリー状に表示する機能(スレッド化機能)がある。 この差分は、メール閲覧モード(Summaryモード)でもコメントツリー状の表示を行うようにするためのものだ。

この差分のインストール方法は下記の通り。
  1. tar xvzf mew-1.91.tar.gz として mew を展開。
  2. cd mew-1.91
  3. patch -p1 < mew-1.91-thread-patch.diff として、本差分を適用。
  4. make してコンパイル。
  5. su して root になる。
  6. make install してインストールする。
  7. ~/.emacs に 下記のようにスレッドモードをオンにする設定を追加記入する。
    この設定をしないと、mewは従来通りメールはスレッド化しない。
    (setq mew-always-thread t)
  8. mule などを一度終了して、再度起動する。
この差分の隠れ機能として、mewのSummaryモードで 't' と入力すると、スレッドモードのON/OFFを切り替える(トグル動作)という機能がある。 続けて、Summaryモードで 's'、'all' と入力すると、画面が更新されると思う。
すでに .mew-cache にメール一覧がたまっている場合は、Summaryモードで 's', 'all' を指定してもう一度メール一覧を作成すれば良い。
Mew Official Homepage
mew-1.90.tar.gz 397KB
im-65.tar.gz 150KB
ftp://ftp.aist-nara.ac.jp/pub/elisp/Mew/
xemacs上で利用するメールソフト mewの最新版 1.90と、mhの代わりを勤めるim-65。
このバージョン以降のmewは、mhを使わずにim(perl5.004スクリプト)を使うようになった。 imはperl-5.004以降が必須になっているので、各自でperl-5.004を入手、インストールする必要がある。 (FreeBSD 2.2.2RのCD-ROMのpackagesに含まれているperl5は5.003なのだ。)
基本的には xemacs から利用するのが正しい姿だと思うが、mule-2.3からも利用できる。
mew-1.70などと比較すると、動作が重くなったようだ。 なるべく高速なマシンで利用したい。
imのインストールはドキュメントの通りにすればよい。 imsetup を実行すると、ユーザ別の設定を質問してくるので、それに答えればimの設定は終了だ。

以下に、mew-1.90でメールもスレッド化する差分を示す。 mew-1.90以降では、News閲覧モードでメールのMessage IDをもとにして、元発言とそれに対するコメントをツリー状に表示する機能(スレッド化機能)がある。 この差分は、メール閲覧モード(Summaryモード)でもコメントツリー状の表示を行うようにするためのものだ。

この差分のインストール方法は下記の通り。
  1. tar xvzf mew-1.90.tar.gz として mew を展開。
  2. cd mew-1.90
  3. patch -p1 < mew-1.90-thread-patch.diff として、本差分を適用。
  4. make してコンパイル。
  5. su して root になる。
  6. make install してインストールする。
  7. ~/.emacs に 下記のようにスレッドモードをオンにする設定を追加記入する。
    この設定をしないと、mewは従来通りメールはスレッド化しない。
    (setq mew-always-thread t)
  8. mule などを一度終了して、再度起動する。
この差分の隠れ機能として、mewのSummaryモードで 't' と入力すると、スレッドモードのON/OFFを切り替える(トグル動作)という機能がある。 (画面に何も表示していないので、何が起こったかわからないと思う...。) 続けて、Summaryモードで 's'、'all' と入力すると、画面が更新されると思う。
すでに .mew-cache にメール一覧がたまっている場合は、Summaryモードで 's', 'all' を指定してもう一度メール一覧を作成すれば良い。
Mew Official Homepage
mew-1.70.tar.gz 391KB
ftp://ftp.aist-nara.ac.jp/pub/elisp/Mew/
Mew ver 1.70。xemacsに特化したmew。アイコンデータなどが付属しており、xemacs上からGUI操作も可能。
muleでコンパイルすると、沢山Warningがでてくるが、muleからも利用できるようだ。 設定方法はmew-1.55と同じなので、下の記述も参照して欲しい。
Mew Official Homepage
mew-1.55.tar.gz 263KB
ftp://ftp.aist-nara.ac.jp/pub/elisp/Mew/
Mewの1.55。こちらはCUIベースの最後のバージョン。
MewはMule上でメールの読み書きをするマクロセットである。 ほとんどgnusと同じ感覚で使えるので非常に便利。 mewの作者は奈良先端技術大学にいらっしゃるので、上のftpサイトなら間違いなく最新のmewが入手できるだろう。 mewを動作させるには、 jp-mh がインストールされている必要がある。

日本語のメールタイトルが化けて表示される場合には、 jp-mhの設定 に書かれている方法で対処することができるが、下記のようにmewの設定を変更することもできる。
~/.emacs内部に

(setq mew-mule-charset-local *euc-japan*unix)
を追加すると、EUC漢字コードで表示されているメールタイトル一覧をmewから見ることができる。

mewをしばらく使っていると、メール総数が9999通を越えて、メール番号が表示されなくなってしまう。 そんな時は、~/Mail/scan.form の記述を下記のように変更すると5桁まで表示できるようになる。

%5(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%|\
%<(eq)%(trim{content-type})%<(amatch multipart)M%| %>%>%>%>\
%02(mon{date})/%02(mday{date})%<{date} %|*%>\
%<(mymbox{from})%<{to}To:%14(hdecode(friendly{to}))%>%>\
%<(zero)%17(hdecode(friendly{from}))%> \
%(hdecode{subject})%<{body}<<%{body}%>
	
最初の行の %4(msg) を %5(msg) と変更しているだけである。(^^;)

ちなみに、mew-1.55, mew-1.70をBcc:(Blind Carbon Copy)に対応させる差分は以下の通り。

このパッチの利用方法を示す。
  1. tar xvzf mew-1.55.tar.gz (またはmew-1.70.tar.gz)として mew を展開。
  2. cd mew-1.55(またはmew-1.70)
  3. patch -p1 < mew-1.55-bcc-patch.diff(またはmew-1.70-bcc-patch.diff) として、本差分を適用。
  4. make してコンパイル。
  5. su して root になる。
  6. make install してインストールする。
  7. ~/.emacs に 下記のように Bcc: する宛先を追加記入する。
    (私の場合は、自分で送信したメールを自分宛にも Bcc しておくので、自分のメールアドレスを書いている)
    (setq mew-bcc "george")
ja-mh-6.8.4.tgz FreeBSD 2.2.8R〜
ja-mh-6.8.3.tgz FreeBSD 2.2.5R〜
jp-mh-6.8.3.tgz FreeBSD 2.1.0R〜
メールハンドラー MH の日本語対応バージョン。 メールを取り扱う様々なコマンド群の集合体的なパッケージ。 メールをとって来るにはinc、受信メールの一覧を表示するには scan, メールを見るには show, next, prev 、メールを送信するにはcompなど、ほとんどの操作が4文字コマンドになっている。 このまま使っても良いが、mew から下請けとして利用するとさらに便利。
ちなみに、mhからメールを発送する場合は、発信者のアドレスにローカルホスト名が必ず追加される仕様となっている。 実際には存在しない恥ずかしいローカルホスト名(例えば magi.nerv.jp)を付けていたりする場合など、ローカルホスト名をメールのFrom:の所に出したくない場合は、/usr/local/lib/mh/mtstailorに
localname: yk.rim.or.jp
という行を追加してローカルドメイン名を指定する。 /usr/local/lib/mh/mtstailorの設定に関する詳細は、man mh-tailor で表示されるはずだ。

また、mhのinc(メールを取って来るmhのコマンド)をPOPサーバーから取って来るように変更するには、コンパイルオプションを変更してコンパイルし直す必要がある。 再コンパイルが面倒な場合はfetchmailをpkg_addして利用しよう。

jp-mhのscan等で表示される漢字コードは、以下の順番で決定される。

  1. 環境変数 MH_FILE_CODING
  2. .mh_profileコンポーネント {file,display,process}-coding
  3. 環境変数 LC_CTYPE
  4. 環境変数 LANG
環境変数LANGに、ja_JP.EUCなどと指定している人も多いと思うが、mewはデフォルトの漢字コードとしてJISを使うので、このままだと日本語を使ったメールタイトルがmewから読めない。 この場合は、~/.mh_profileの中に
file-coding:	JIS7
display-coding:	JIS7
process-coding:	JIS7
	
という記述を追加すると良い。 (mewの方で漢字コードの設定を変更することもできるが)
X-Authentication-Warning:                                       
didn't use HELO protocol                                     
	
というエラーメッセージが自分で送信したメールに混入してしまう場合には、/usr/local/lib/mh/mtstailorに
clientname: localhost
という行を追加しよう。
もうひとつの解決策としては、~/.mh_profile に
send: -hencode -client localhost
のように指定するという方法もある。
ja-mnews-1.20.tgz FreeBSD 2.2.5R
jp-mnews-1.20.tgz FreeBSD 2.2.2R
小さくて動作が軽いニュース/メールリーダー mnews
メールのMessage-IDを追跡したソート方法をサポートしているので、コメントツリーが読みやすく、とっても便利だ。 pkg_add 後は /usr/local/lib/mnews/default-domain を編集して、自分のマシンのドメイン名を記入するのを忘れないようにしよう。 (環境変数DOMAINNAMEに指定しても良い。) メールを出すときに、ここで設定したドメイン名がメールアドレスとして付加されるので、リムネット横浜を利用している場合にはドメイン名としてyk.rim.or.jpを指定しておけば良いだろう。
各種ドキュメント(日本語!!)は /usr/local/share/doc/mnews/ 以下にインストールされるので、読んでおくと良い。 マニュアルファイル(mnews.1.gz)は日本語のみが用意されているので、jman mnews とすると、マニュアルが表示される。
ちなみに、私はmhを利用しているので下記のように設定している。
~/.mnews_setup
mime_format:    2
news_thread_mode: on
mail_thread_mode: on
sort_rule:      1
japanese_mode:  on
auto_sig_mode:  on
add_cc_mode:	off
jst_mode:       on
indicator:      >
read_groups:    dti. fj. japan.
mail_fcc_field: Mail/fcc
news_fcc_field: Mail/fcc
msgchk_rule:    2
input_code:	EUC
mh_mode:	on
ucbmail_mode:	off
rmail_mode:	off
mh_select_mode: off
edit_command:	elvis
max_thread_number: 1000
	
edit_command: の行は、mule -nwでもいいかもしれない。
Sendmail 8.8.8 anti relay設定
Sendmail本家Sendmail Home Page(in English)
WIDEプロジェクトのInformation about the Sendmail
メールの不正Relayができるかどうかをテストするページ anti-relay test page
FreeBSD 2.2.6R〜2.2.7R では、Sendmail 8.8.8 が標準搭載されているが、デフォルト設定ではメールのリレーは禁止しない設定となっている。 つい先日、ダイアルアップPPPで接続していたら、目の前でSPAMメールのリレーホストとして自分のマシンが使われている現場に遭遇してしまった (^^;;)。 これを機会に心を入れ替えて、メールのリレーを禁止する設定を行ってみた。 基本的には、以下のページにしたがって設定するだけでよい。 (英語だけど。)

以下、私の設定例を紹介する。

私の設定ファイルは以下の通り。

このファイルの内容は、sendmailの項目で作成したgeorge.mc-8.8.8に上記のページ「Preventing Relaying Through Your SMTP Port」で紹介されていたマクロを追加したものだ。 インストール方法は以下のようになるだろう。

  1. suでrootになる。
  2. cd /usr/src/usr.sbin/sendmail/cf/cf でディレクトリ移動。
  3. make george-anti-relay.cf として、george-anti-relay.mcというm4マクロをgeorge-anti-relay.cfというcfファイルに変換。
  4. cp /etc/sendmail.cf /etc/sendmail.cf.orig として、デフォルトの sendmail.cf をバックアップ。
  5. cp -p george-anti-relay.cf /etc/sendmail.cf としてsendmailの設定ファイルをコピー。
  6. sendmailをkill
  7. sendmail -bdでsendmailを再起動。
  8. anti-relay test pageでテスト。
    ifconfig -aや、PPPによるダイアルアップ中ならpppコマンドからshow ipcpなどとすると、自分のIPアドレスが表示されるので、そのIPアドレスをテキストフォームに入力してみよう。

テスト結果を以下に示す。

Initiating Third-Party Mail Relay Test ...

Target Host = xxx.xxx.xxx.xxx

------------------------------------------------------------

Launching rlytest ...
Connecting to xxx.xxx.xxx.xxx ...
<<< 220 magi.nerv.jp ESMTP Sendmail 8.8.8/8.8.8; Tue, 20 Oct 1998 00:41:27 +0900 (JST)
>>> HELO isrv1.pa.vix.com
<<< 250 magi.nerv.jp Hello isrv1-i.pa.vix.com [204.152.184.28], pleased to meet you
>>> MAIL FROM:<nobody@[xxx.xxx.xxx.xxx]>
<<< 250 <nobody@[xxx.xxx.xxx.xxx]>... Sender ok
>>> RCPT TO:<nobody@isrv1.pa.vix.com>
<<< 550 <nobody@isrv1.pa.vix.com>... Relaying Denied
rlytest: relay rejected - final response code 550

------------------------------------------------------------

Test complete.

GOOD NEWS!  Host [xxx.xxx.xxx.xxx] refuses to relay mail.
	

と、ブラウザに表示されれば成功している。 以上の設定で、外部からのメールのリレーを拒否する設定になった。

Sendmail本家Sendmail Home Page(in English)
WIDEプロジェクトのInformation about the Sendmail
メールの不正Relayができるかどうかをテストするページ anti-relay test page
sendmail 8.8.8 FreeBSD 2.2.6R〜2.2.7R 標準
sendmail FreeBSD 2.2.2R 標準
システム標準のメール配達、送信プログラム
sendmailは名前の通り、メールの宛先を探して配達してくれるソフトだ。 (Mail Transfer Agent(MTA)と呼ばれるソフトの一つだ。)
各種UNIXマシンでは、一台のマシンに複数のユーザがいることが多い。 個人で使っているFreeBSDシステムでも、ユーザ名rootと自分のユーザ名(私の場合はgeorge)のように複数のユーザがいる。 sendmailは、マシン内部でのユーザー間(rootとgeorgeの間とか)メール送信や、マシン外部のユーザ向けメールの送信を一手に引き受けている。

マシン内部宛のメール送信の場合は、宛先、差出人ともにドメイン名(@yk.rim.or.jpのような文字列)は必要ないので通常は付加しない。 ところが、マシン外部に向けてメールを送信する場合、宛先、差出人ともにドメイン名を付加する必要がある。 これらのドメイン名の付加やドメイン名の書き換えなどの処理を/etc/sendmail.cfという設定ファイルにしたがって行うのもsendmailの仕事である。

FreeBSDインストール直後の状態では、マシン外部に向けてメール送信する時に差出人に付けられるドメイン名が@myname.my.domainという実在しないドメイン名になってしまう。 通常、メールをもらった人はFrom:に書かれた差出人の所にメールの返事を出そうとするが、「george@myname.my.domain」などというメールアドレスは実在しない。 実在しないメールアドレスにメールを出せば、配達不能でメールが戻ってくるのはごく自然な成り行きだ。 そこで、sendmail.cfを変更して、差出人に付けられるドメイン名をプロバイダのメールアドレスなど、実在するドメイン名にする必要がある。

/etc/sendmail.cfは一応テキストファイルなのだが、人間の手で作成するのはかなり困難だ。 そこで、sendmail.cfを簡単に作成するCFというツールが公開されている。

私個人はCFは使わずに/usr/src/usr.sbin/sendmail/cf/にあるツールを利用している。 詳しくは、/usr/src/usr.sbin/sendmail/cf/README(英語だが...)を読んで欲しい。 以下では、私の設定方法を示す。

まずは、/usr/src/usr.sbin/sendmail/cf/cf/freebsd.mcを参考に、自分用の設定ファイルを作成する。 ここでは、george.mcというファイルを作成した。

/usr/src/usr.sbin/sendmail/cf/cf/george.mc
VERSIONID(`@(#)george.mc        $Revision: 1.1.4.4 $')
OSTYPE(bsd4.4)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
FEATURE(mailertable, `hash -o /etc/mailertable')dnl
define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
FEATURE(masquerade_envelope)dnl
MASQUERADE_AS(yk.rim.or.jp)dnl
	
設定のキモは MASQUERADE_AS だ。 ここに、偽りたいドメイン名を書いておけば良い。 私の場合は yk.rim.or.jp とした。

ちなみに、上記の設定ファイルに

define(`SMART_HOST', smtp:mail.yk.rim.or.jp)dnl
	
という行を追加すると、外部向けのメールを処理するSMTPサーバを指定できるようだ。 しかし、最近はSPAMメールの踏み台になるので外部からのメールの中継を拒否するサイトが主流なので、成功することはあまりないだろう。

以下にインストール作業を示す。

  1. su で root になる。
  2. cd /usr/src/usr.sbin/sendmail/cf/cf
  3. 上記の設定ファイルを george.mc として保存。
    ブラウザからカット&ペーストすると、タブコードがスペースに変化してしまい、正常に動作しなくなるようだ。 george.mc-8.8.8ファイルから取得した方が良いだろう。
  4. make george.cf
  5. cp /etc/sendmail.cf /etc/sendmail.cf.orig として、デフォルトの sendmail.cf をバックアップ。
  6. cp george.cf /etc/sendmail.cf
  7. 変更した設定を有効にするために、どちらかの操作をおこなう。
    1. shutdown -r now として一度リブートする
    または
    1. ps -ax | grep sendmail として、sendmail の pid を得る。
    2. kill -HUP pid として sendmail を終了させる。
    3. sendmail -bd として、sendmailを起動。
  8. 動作テストするため、自分宛のメールを出す。

この作業は、sendmailを使って外部にメールを出す前に行わなければならない。 メールの返答先をReply-To: で指定するという手もあるが、メーリングリストなどではあまり歓迎されない。 これは、Reply-Toを指定されたメールに返事を出す際に、メーリングリストに返事のメールが流れずにメールを出した個人宛にメールが送られてしまうからだ。

1998.12.23現在、FreeBSD FAQ #133 ダイアルアップでインターネットに接続する環境でメールをセットアップするにはどうやるの?という項目も利用できるので、そちらを参考にした方が確実だと思う。

http://www.wide.ad.jp/sendmail.html (in English)
CF-3.6Wbeta6.tar.gz 278Kb
ftp://ftp.kyoto.wide.ad.jp/mail/CF/
sendmail.cf を比較的簡単に作成するツール。
/etc/sendmail.cfは一応テキストファイルなのだが、人間の手で作成するのはかなり困難だ。 そこで、sendmail.cfを簡単に作成するCFというツールが公開されている。
以下に、FreeBSD徹底入門に記載されていたCF用の設定ファイルを示す。
OS_TYPE=bsd4.4
CF_TYPE=R8
DIRECT_DELIVER_DOMAINS=none
DEFAULT_RELAY="my.providers.mail.server"
FROM_ADDRESS='$m'
	
FreeBSD徹底入門によると、DEFAULT_RELAYの所を各自のプロバイダのメールサーバー名にして、外部ホスト向けのメール送信は、プロバイダのメールサーバに任せる設定とのことだ。

ファイヤーウォール(防火壁)の内側のマシンからメールを送信する際や、自分のマシン名を恥ずかしい名前にしているとき、メールを送信したホスト名やIPアドレスを隠しておきたい場合がある。 (この設定をしないと、メールの先頭付近に、隠しておきたいホスト名が Received: localhost.nerv.jp (127.0.0.1) などと出てしまうのだ。) この場合は、上記の設定に加えて

FORMAT_RECEIVED=Simple-Proto-Dest
	
という行を追加すると良いらしい。

Copyright(c) 1996,97,98,99,2000,01,02,03,04 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索] [高速検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using SPAM filter, so please phone me when you wrote mail to me.)