次のページ 前のページ 目次へ

3. ダイアルオンデマンドによる解決

Written by Jan P Tietze <jptietze@mail.hh.provi.de>.

多くのLinuxユーザーはダイアルアップ回線を使ってインターネットに接続して います。またシステム上にダイアルオンデマンド(dial-on-demand)の機能を 実装しています。つまり、ある種類のIPパケットがローカルネットワーク/ローカル ホストを出る時はいつでも、ISP(Internet Service Provider)へのリンクが自動的 に確立されるということです。パケットが無くなるとリンクはダウンします。

これは快適で有効なものですが、もしかしたら快適でもなく(古いモデムでの ダイアルアップが著しく)有効ではないこともあります。これは電子メールを送り ます。電子メールは一般にあなたのシステムによって配送されるかインターネット 上のSMTPホストを経由してSMTPによって配送されます。普通インターネット上の SMTPホストはISPのネットワークにあります。

ダイアルアップ回線ではメッセージを送る時は常にリンクされていなければな りません。これはひとつのメッセージを送るだけならいいのですが、複数の メッセージを書いて送る時は何度も回線に接続しなくてはならず 面倒で手間のかかることです。またISPが許可しているログイン時間(訳注:例えば UUCPで1日に1回接続するなど)を制限している場合は、1日のある時間しか メッセージを送信できません。そして後からメールを手動で送らなければなりません。

このドキュメントの ダイアルオンデマンドを使わない解決 でこの状況を解決していますが、外部DNSがリンクアップしている状況では、リンク は電子メールがキューにある場合でさえも確立されます。 理由はsendmailがhost名を基準化("canonify")しようとするからです。

この問題に対する解決法は2つあります。sendmail.cfを適当に変更して 実際のメール配送のプロセスを定義することです。個人的にはcronを使って ジョブ管理をさせています。以下必要な変更を説明していきます。

3.1 sendmail.cfの設定

sendmailの設定で書かれた理由もあり、sendmail.cfを 直接編集するかわりにm4ソースを修正することをお奨めします。m4ソースを使えば多く の困難や設定変更の冗長さから救われます。

はじめに、このドキュメントのはじめで記述した変更を行います。 そしてダイアルオンデマンドの特定のスタッフを調べます。

ちょっとした設定をするためにsendmail.cfを直接設定する。

じかに設定することはあまり実際的ではなく冗長です。しかしこれはあなた 次第です。 sendmail.cfの終りあたりの行で:

R$* < @ $* $~P > $*               $: $1 < @ $[ $2 $3 $] > $4
とあります。"#"を行頭に置きます:

#R$* < @ $* $~P > $*              $: $1 < @ $[ $2 $3 $] > $4

m4ソースを使ってsendmail.cfを設定する

以下の行を/usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mcに 追加します:

FEATURE(nocanonify)dnl
最終のsendmail.cfは以下のコマンドを実行して起動します。新しいものをインス トールする前に古い/etc/sendmail.cfを保存しておいて下さい:
cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf

3.2 ダイアル遅延の追加

場合によっては便利です。特にモデム回線を使っているときはダイアル遅延を インストールしておきましょう。これはsendmailが電子メールを送ろう(これは回線の 接続を意味します)として接続を開始するけれど、sendmailでタイムアウトする時間 よりもリンク接続の確立のほうに時間がかかるといった場合、sendmailは数秒 待ってから接続を試みます。

sendmail.cfの設定

sendmail.cfのどこかに以下の行があります

#O DialDelay=10s
"#"を削除します。行頭に"#"がない場合は 問題ありません(以前この行を有効にしていたというだけです)。 [訳注:Slackwareパッケージなどでは /usr/src/sendmail ディレクトリにREADME.linux, *.cfファイルがあります] sendmail.cfにこの行がない場合は以下の行を追加しておいて下さい(ファイルの "option(オプション)"パートに追加しておくとよいでしょう)。
O DialDelay=10s
"10s"の部分を適当な秒数に変更します。

m4を使ったsendmail.cfの設定

/usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc

に以下の行を追加します:

define(`confDIAL_DELAY',`10s')
ここで"10s"の部分を適当な秒数に変更します。

最終的なsendmail.cfは以下のコマンドを実行して構築できます。 新しいものをインストールする前に古い/etc/sendmail.cfを保存 しておいて下さい:

cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf


次のページ 前のページ 目次へ