この章は、リモートシステムと接続するための基礎となるトランスポートエー ジェントについて書かれています。
Smail3.1 は、UUCP のみのサイトやいくつかの smtp サイトでよく使われてい るトランスポートエージェントで、ソースコードから(パッチを必要とせず) コンパイルすることができます。また、 SLS 版 Linux にはバイナリが含まれ ています。
smail3.1.28 をすぐに利用するための設定ファイルが、newspak アーカイブに 入っています。(newspak に関しては「2.0 ソフトウェアの取得」を参照。)
smail をソースファイルから構築するには、 sed に渡すシェルスクリプトが 正確に動作するように、os/linux ファイルに以下の設定が必要です。
CASE_NO_NEWLINES=true
MX-record と(全てのホストを経由できるような)ドメイン形式ヘッダを要求 される UUCP のみのシステムには、以下の設定ファイルが必要でしょう。
#-------- /usr/local/lib/smail/config ----------------- # # domains we belong to visible_domain=subdomain.domain:uucp # # who we're known as (fully-qualified-site-name) visible_name=myhostname.subdomain.domain # # who we go through smart_path=my_uucp_neighbor # #---------- /usr/local/lib/smail/paths -------------- # # we're a domainized site, make sure we accept mail to both names myhostname %s myhostname.subdomain.domain %s # #-------------------------------------------------------------------smail を smtp デーモンとして使うには、下の行を /etc/inetd.conf に追加 して下さい。
smtp stream tcp nowait root /usr/bin/smtpd smtpdelm を使えば、外部のサイトに宛てたメールが自動的に送信されます。送信中 にインターネットリンクが切断されたとしても、メールは "
/usr/spool/smail/input
" に保存され、次にリンクが回復した時点
で、メールを送るために "runq
" が実行されます。
極めて扱いやすいので、私は smail3.1.28 の代わりに sendmail5.65b+IDA1.5
を UUCP のみのサイトで使っています。コンパイルされたものが
sunsite.unc.edu
の pub/Linux/system/Mail
にあります。
インストールする方法を以下に示します。
mail.debug セットを持っていて、かつ syslogd を動かしていれば、送受信さ れたメールの内容がログに残ります。詳しくは /etc/syslogd.conf ファイル を見て下さい。
uxc.cso.uiuc.edu には、そのまま Linux で動作させることのできる sendmail+IDA のソースファイルが置かれています。
sendmail+IDA を動作させているのなら、 Linux 特有のパッチが含まれていて、 なおかつ、 1993 年 12 月 1 日以前に作成された古いバージョンにも含まれ ている、いくつかのセキュリティホールが直された sendmail5.67b+IDA1.5 バー ジョンを使うようにして下さい。
Linux Journal
の 1994 年 5/6 月号に、 sendmail+IDA の設定や運
用等の広範囲にわたる記事が載っています。より詳細で完全なものが、 Linux
DOC Porject の Networking Administration Guide
として編集され
ています。
Sendmail+IDA を使うには、 sendmail.cf
ファイルを直接編集する
よりむしろ sendmail.m4
ファイルの設定が必要です。この方法の利
点は、伝統的な smail や sendmail の設定が(ほとんどの人には正しく設定
することがほとんど不可能なほど)非常に難しいのに比べて、非常に簡単なこ
とです。
その sendmail.m4 ファイルは、上記の smail の例と同じ設定にするためには、 以下のようになります。
dnl #------------------ SAMPLE SENDMAIL.M4 FILE ------------------ dnl # dnl # (the string 'dnl' is the m4 equivalent of commenting out a line) dnl # dnl # you generally don't want to override LIBDIR from the compiled in paths dnl #define(LIBDIR,/usr/local/lib/mail)dnl # where all support files go define(LOCAL_MAILER_DEF, mailers.linux)dnl # mailer for local delivery define(POSTMASTERBOUNCE)dnl # postmaster gets bounces define(PSEUDODOMAINS, BITNET UUCP)dnl # don't try DNS on these dnl # dnl #------------------------------------------------------------- dnl # dnl # names we're known by define(PSEUDONYMS, myhostname.subdomain.domain myhostname.UUCP) dnl # dnl # our primary name define(HOSTNAME, myhostname.subdomain.domain) dnl # dnl # our uucp name define(UUCPNAME, myhostname)dnl dnl # dnl #------------------------------------------------------------- dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # our uucp neighbors define(BANGIMPLIESUUCP)dnl # make certain that uucp define(BANGONLYUUCP)dnl # mail is treated correctly define(RELAY_HOST, my_uucp_neighbor)dnl # our smart relay host define(RELAY_MAILER, UUCP-A)dnl # we reach moria via uucp dnl # dnl #-------------------------------------------------------------------- dnl # dnl # the various dbm lookup tables dnl # define(ALIASES, LIBDIR/aliases)dnl # system aliases define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainize hosts define(PATHTABLE, LIBDIR/pathtable)dnl # paths database define(GENERICFROM, LIBDIR/generics)dnl # generic from addresses define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers per host or domain define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # paths to hosts we feed define(UUCPRELAYS, LIBDIR/uucprelays)dnl # short-circuit paths dnl # dnl #-------------------------------------------------------------------- dnl # dnl # include the 'real' code that makes it all work dnl # (provided with the source code) dnl # include(Sendmail.mc)dnl # REQUIRED ENTRY !!! dnl # dnl #------------ END OF SAMPLE SENDMAIL.M4 FILE -------
他の Unix と違って Linux はそのままではローカルなメイルの配送システム
がありません。私は deliver
プログラムを使うことをお勧めします。
このプログラムは多くの Linux パッケージに含まれていると思います。その
ためには sendmail.m4
ファイルの中のLOCAL_MAILER_DEF
という項目を次のように設定する必要があります。
# -- /usr/local/lib/mail/mailers.linux -- # (local mailers for use on Linux ) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u
sendmail.cf
に読み込まれる Sendmail.mc
ファイルには
標準で deliver
の設定が組み込まれています。ローカルメイラの設
定のためには mailers.linux
ファイルを使わずに、sendmail.m4 ファ
イルに次のような設定を書き込んでください。
dnl --- (in sendmail.m4) --- define(LOCAL_MAILER_DEF, DELIVER)dnl # mailer for local delivery
残念ながら Sendmail.mc は deliver が /bin ディレクトリにインストールさ れていることを前提にしていますが、 Slackware 1.1.1 では /usr/bin にイ ンストールされます。この場合には deliver のリンクを張るか、ソースから コンパイルし直して /bin にインストールしなくてはなりません。
サイトやドメイン内の特殊なメール配送は、sendmail.cf
を直接編
集するよりも、多くの dbm
テーブルを書き換える方がいいでしょう。
これについては Linux Journal
の 1994 年 7 月号、ソースファイ
ルに含まれる文書、LDP (Linux Documentation Project) の Networking
Administration Guide
を参考にするとよいでしょう。
dbm テーブルを追加していないときには、sendmail+IDA はメールを
DEFAULT_MAILER
を経由して(または可能ならば
RELAY_HOST
と RELAY_MAILER
をも使って)送ります。
これらの DEFAULT_MAILER
などは sendmail.m4 ファイルに書き込ま
れ、sendmail.cf に設定された内容で定義されています。この動作はドメイン
テーブルか uucpxtable の内容によって変更することができます。
インターネットにつながり、ネームサーバーと通信のある普通のサイトや、
UUCP 接続のホストで、メールを UUCP によって RELAY_HOST
に送っ
ているサイトでは、たぶん特別なエントリは必要ないでしょう。
仮想的にはすべてのシステムが DEFAULT_HOST
と
PSEUDONYMS
マクロを設定するべきです。これはカノニカルサイト名
とエイリアス、そして DEFAULT_MAILER
を設定します。しかしリレー
ホストとリレーメイラーしかない場合、わざわざ設定しなくてもうまく動作す
るでしょう。
UUCP ホストではたぶん UUCPNAME
に正式な UUCP のホスト名を設定
しなくてはならないでしょう。また、より良いメール配送のルーティングのた
めに、RELAY_MAILER
と RELAY_HOST
、そして UUCP サイ
トに対しては UUCP-A も設定することになるでしょう。
もしもあなたのサイトが SMTP のみを使っていて、ドメイン・ネームサーバ
(DNS)を利用しているならば、の DEFAULT_MAILER
を TCP-A に変え
て、RELAY_MAILER
と RELAY_HOST
の行を消去したほうが
よいでしょう。
バークレイの Sendmail 8.6.x は、 Sendmail5 の後の最新のメジャーな改訂 版です。これには、 Linux で構築するための機能がサポートされています。 make Linux と入力するだけで、全て手に入ります。
日本国内のユーザーは、JE パッケージから WIDE 版の sendmail をインストー ルするとよいでしょう。詳しくは JE-HOWTO なども見てください。同時に CF-3.3Wb7 をインストールすると、sendmail.cf の作成が容易に行なえます。 日本語の詳しいドキュメントもついています。
Linux で動くことが知られているものを、下に書きます。どこにあるかは archie で調べて下さい。
Linux には、他の OS にあるような内蔵されたメールシステムがありませんの で、ローカルメールを配信するプログラムが必要です。Rich Braun の lmail プログラムは良いプログラムですが、もっと有名な配信プログラムに切替えて 使っています。
いずれかのローカル配信エージェントを使う方法についての文書は、 先に書 いた sendmail5.67b+IDA1.5 のバイナリに含まれています。