# 7.7. ダイヤルアップ接続をする場合、Kmailと連動させるには、sendmailの設定をどのようにすればいいのでしょう?

これらの手順は、ほとんど一字一句、UCT Linux User's groupの configuring Sendmail for Dial-up connections のページからの引用です。

## 7.7.1. ステップ 1: マスカレード ホスト

まず、 `/etc/sendmail.cf` を編集して、 どのホストがマスカレードしているのか指定しなければなりません。 `/etc/sendmail.cf`内で、 次のように宣言してある行を探してください。

     # who I masquerade as (null for no masquerading) (see also $=M)
     DM

そこで、"DM"で始める行の末尾にあなたのアドレスを書き加えてください。 我々は、あるユーザを例として、次のように変更してみました。

     DMhendrix.org

このようにすると、例示されたユーザがメールを送った際に、 `Return-Path` や `From:`フィールドには、 hendrix.org から送られてきたメールであることが記されます。 こうすることで、あなたのマシンがDNSエントリを持っていない場合に、 メールの送信先となるホストにより生成される"cannot route to sender" というメッセージを避けることができます。 更に、Eメールアドレスのユーザ部も変えなければなりません。 何故なら、ここまでの設定では、例示されたユーザがメールを送ると、 `From:` フィールドには `mj@hendrix.org`と書かれることになりますが、 これは正しくないからです。 もし、あなたがEmailアドレスのユーザ名と同一のユーザ名で、ホームマシンにログインしているのであれば、 ステップ4「sendmailを再起動する」まで読み飛ばして構いません。 しかし、あなたが(例示されたように)異なるユーザ名でログインしているのであれば、 ステップ2及び3に示されるユーザデータベースの追加を行わなければなりません。

## 7.7.2. ステップ 2: ユーザデータベースの作成

次に示されるような形式でファイルを作成してください。

     loginname:mailname      First_Last
     First_Last:maildrop     loginname

"loginname" は、あなたがホームマシンにログインする際のログイン名です (この例では、mjです)。"First_Last"は、あなたのEメールアドレスのユーザ部です (この例では、mjturnerです)。この例では、次のような内容を含む `/etc/userdb` というファイルを作成しました。

     mj:mailname     mjturner@hendrix.org
     mjturner:maildrop       mj

上のファイルを作成したら、テキストファイルである `/etc/userdb` を、sendmailの解釈できる"db"ファイル(Berkeley "db" database file)に変換しなければなりません。このため、makemapを次のように実行してください。

     # makemap btree /etc/userdb.db < /etc/userdb

これで、テキストファイルである `/etc/userdb` から、データベースファイルである `/etc/userdb.db`が作成されます。 `/etc/userdb`を変更した場合には、忘れずに、 この処理を行ってください。この処理を行わなければ、sendmailは、メールを送信するときに、 あなたが作成した最新のユーザデータベースを使えません。

## 7.7.3. ステップ 3: ユーザデータベースの sendmail.cf への追加

また、あなたは、sendmailに対して、メールを送信するときに、作成した ユーザデータベース (`/etc/userdb.db`) を用いることを教えなけ ればなりません。なお、シンタックスは、あなたが 8.7.x もしくは 8.8.x コンフィグファイルを使っているか、 8.6.x コンフィグファイルを使っているかによって、 わずかに異なっています。コンフィグファイルのバージョンは、"DZ"という文字列をサーチする (`grep ˆDZ /etc/sendmail.cf`) ことで、 知ることができます。例えば、8.8.0コンフィグファイルであれば、 `DZ8.8.0`と表示されるでしょう。

### 7.7.3.1. 8.6.x コンフィグファイル

8.6.x コンフィグファイルを使っている場合、次の文言で始まる行を探し、

         # list of locations of user database file (null means no lookup)
         OU

あなたの作成したユーザデータベースの場所を追加してください。例示したユーザは、上に示される行を次のように変更しました。

         OU/etc/userdb.db

### 7.7.3.2. 8.7.x または 8.8.x コンフィグファイル

8.7.x または 8.8.x コンフィグファイルを使っている場合、次の文言で始める行を探し、

         # list of locations of user database file (null means no lookup)
         O UserDatabaseSpec=

そこに、あなたの作成したユーザデータベースの場所を追加してください。 例示したユーザは、次のように変更しました。

         O UserDatabaseSpec=/etc/userdb.db

## 7.7.4. ステップ 4: sendmail の再起動

これらの変更をし終えたら、rootになってsendmailを再起動してください。

     # ps aux | grep sendmail | grep -v grep
     root        64  0.0  0.0  1208     0  ?  SW  11:45   0:00 (sendmail)

     # kill -HUP 64

(SysVでは、 `ps aux` に代えて `ps -ef` を使ってください)

ここで、sendmailが、そのコンフィグファイル (`/etc/sendmail.cf`) を再読み込みし、全てが反映されます。 これで、メールを送信するときに、ヘッダのFromフィールドには妥当な Eメールアドレスが記されることになり、ローカルなアドレスは記されない ようになるでしょう。上の例では、例示されたユーザがメールを送ると、ヘッダには、 `From: mjturner@hendrix.org` と記されるでしょう。 この設定は、全てのメールユーザエージェント(Mutt, Elm, Pine, mh, etc)で動作します。 アドレス変換は、メール転送エージェントのレベルで行われるからです。 基本的には、どんなメール送信プログラムでも使うことができるようになりましたし、 ヘッダに記載されるアドレスも正しいものになったでしょう。

## 7.7.5. ステップ 5: "smart" リレーの設定

sendmailでは、メール受信者側のサーバに接続しなければならないため、 メールが最終的な送信先に届くまでに、かなりの時間がかかることとなります。 また、この時間は、回線の使用効率が悪く、コストも高いこととなります。 しかし、sendmailに対して"smart"リレーを使うように設定すれば、sendmailは、 全てのメールをそのリレーに運び、更に、リレーがその送信先まで運ぶことになります。 例えば、あなたのISPのメールサーバは、理想的な"smart"リレーです。

Change

     # "Smart" relay host (may be null)
     DS

を

     # "Smart" relay host (may be null)
     DSmail.hendrix.org

に変更してください。

これを行ったら、sendmailを再起動することを忘れないでください (ステップ4「sendmailの再起動」参照)。これで、全ての非ローカルなメールは、 `mail.hendrix.org` に送信され、その後、 最終的な送信先まで送信されることになるでしょう。