Kデスクトップ環境

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-PathFrom:フィールドには、 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 に送信され、その後、 最終的な送信先まで送信されることになるでしょう。