|
|
Sendmailの設定
|
SendmailについてSendmailのファイル構成sendmail.mcの編集と設定sendmail.cfの作成受信するホスト名の設定ホスト名毎のメールの振分けメール転送設定の使い分け受信/転送に関する設定Sendmailのコントロール連携するアプリケーション等 |
"virtusertable"によるホスト名ごとのメールボックス振分け
Sendmail
の利用で、
"local-host-names"
の記述
それは、例えば "tanaka@obenri.com" 、 "tanaka@mail.obenri.com" 、 "tanaka@ugegege.com" など、 アカウント の部分が "tanaka" であるメールアドレス宛のメールデータは、メールアドレスとしてはすべて異なるにも係わらず、ひとつのメールボックス "/var/spool/mail/tanaka" に書き込まれることです。 これらのメールアドレスの利用者がすべて同じ人であれば良いのですが、それぞれのユーザーが別人である場合はちょっと困ったことになります。 もしもアカウント名にこだわりがなければ、例えばユーザーアカウントを、 "t_tanaka" 、 "s_tanaka" のように別々に作成して、メールアドレスごと別にしてしまうという強引な方法もあります。 しかし普遍的なメールアドレスの場合、例えば、 "webmaster@obenri.com" を既にあなたが使っているとすると、 "webmaster@ugegege.com" は別の人に使わせることができなくなってしまうことになります。 こういう場合に役に立つのが、 "/etc/mail/virtusertable" によるメールデータの振分け機能です。 "/etc/mail/virtusertable"は"local-host-names"の設定によって「自ホスト宛」と判断したメールアドレスを検査し、特定のアカウントのメールボックスに書き込む仕組みを提供するもので、 サブドメイン や異なる ドメイン名 をひとつのSendmailで扱うときに、上のような不具合を解消します。 以下に、その使用方法について説明します。
関連セクション・
メールサーバーの構築
"/etc/mail/virtusertable"の編集とデーベースの作成
まず、
サブネット
内の適当な
クライアント機
から
SSHクライアント
で
構築中のLinuxサーバー
に
ログイン
します
|
||||||||
| 最初は"virtusertable"には何も記述されていないので、実際にバックアップをとる必要があるのは二度目以降の編集からになります。 |
それから
su
コマンドで
アカウント
を
"root"
に変更し、
cp
コマンドでバックアップを作成した後、
nano
エディタで
"/etc/mail/virtusertable"
を開きます
デフォルト の"/etc/mail/virtusertable"には何の記述もありませんので、エディタの画面は空白になるはずです。 |
||||||||
|
|
記述方法は以下のようになります。 [受信対象のメールアドレス] [書き込み先のアカウント] 一つの設定は一行で記述し、二つのパラメータの間は空白またはタブで区切ります。 例えば以下のように記述します。
この設定によって、 "webmaster@obenri.com" 宛てのメールは ユーザーアカウント "webmas_obenri" のメールボックスへ、 "webmaster@ugegege.com" 宛てのメールはユーザーアカウント "webmas_ugegege" のメールボックスへ書き込まれることになります。
記述が終わったら"/etc/mail/virtusertable"を保存し、nanoエディタを閉じます
実は"/etc/mail/virtusertable"はそのままでは使えないので、 makemap コマンド を使ってこの テキストファイル を バイナリ 形式の データベース "/etc/mail/virtusertable.db" に変換します。
次に、 useradd コマンドで書き込み先のユーザーアカウントをそれぞれ作成します。 MUA で受信するためのパスワードも passwd コマンドで設定しておきましょう。
以上で設定は終わりです。 この場合、メールアドレス "webmaster@obenri.com" を利用するユーザーのMUAの設定パラメータは以下のようになります。 メールアドレス: webmaster@obenri.com 受信メールサーバー(POP3): mail.obenri.com 送信メールサーバー(SMTP): mail.obenri.com アカウント名またはユーザー名: webmas_obenri パスワード: web1.obenri.comシステム上のwebmas_obenriのパスワード 一方、メールアドレス "webmaster@ugegege.com" を利用するユーザーのMUAの設定パラメータは以下のようになります。 メールアドレス: webmaster@ugegege.com |
||||||||
| DNSサーバー で "mail.ugegege.com" が設定済みであれば、それを設定することもできます。 |
受信メールサーバー(POP3): mail.obenri.com 送信メールサーバー(SMTP): mail.obenri.com アカウント名またはユーザー名: webmas_ugegege パスワード: web1.obenri.comシステム上のwebmas_ugegegeのパスワード 以上が"/etc/mail/virtusertable"を用いた基本的な「ホスト名ごとのメールの振分け」の設定になります。
関連セクション・
メールサーバーの構築
|
||||||||
"/etc/mail/virtusertable"の設定のポイント
"/etc/mail/virtusertable.db"
は、
構築中のLinuxサーバー
が受信するメールアドレスの設定
"local-host-names"
|
|||||||||
|
|
また、 [書き込み先のアカウント] が存在しない場合は「宛先不明」として処理されますので、同じ名前の アカウント の作成も忘れないようにしてください。 さて、"/etc/mail/virtusertable"の利用については、一つ大きな注意点があります。それは例えば "tanaka@obenri.com" と "tanaka@ugegege.com" の振分けにおいて、既に 構築中のLinuxサーバー 上に "tanaka" というアカウントが存在するケース、つまり一般的にいうと、 「メールのアカウント名と同名のアカウントがシステム上に存在する場合」 の扱いが難しくなるということです。 通常 Sendmail は、例えば "tanaka@[ホスト名]" 宛てに送られてきたメールデータについて、ホスト名が"local-host-names"と一致した場合には、 "@" より前の部分のアカウント名に一致するアカウントを 構築中のLinuxサーバー 上から探し、メールボックスへの保存を試みます。 ところが、"/etc/mail/virtusertable.db"に有効な設定が存在すると、同名のアカウントへの書き込みを試みる前に"/etc/mail/virtusertable.db"が参照されるようになります。 そして"/etc/mail/virtusertable"に記述された上の行から順に評価され、書き込みの条件が一致してメールボックスへの書き込みが終了した段階で処理が終了します。 そして、もしも"/etc/mail/virtusertable"で設定されたどの条件とも一致しなかった場合に、Sendmailは 同名のアカウントへの書き込みを試みる ことになります。 ということは、例えば"local-host-names"に、
という設定があり、"/etc/mail/virtusertable"で、
という設定を有効にしているとすると、"/etc/mail/virtusertable"に明示されていない "tanaka@mail.obenri.com" 宛てのメールは、アカウント "tanaka" のメールボックスに書き込まれることになります。 従って、「アカウント "tanaka" は、 "tanaka@obenri.com" 宛てのメール以外は受け付けない。」という設定にしたければ、"/etc/mail/virtusertable"には、 |
||||||||
| tanaka@mail.obenri.com宛てのメールは「宛先不明」として処理したいので、存在しないアカウント "no_user" に対して架空の転送処理を行います。 |
と、"local-host-names"に記述されているすべてのホスト名について明示的に設定しなければならないことになります。 もちろんこの程度であれば大した面倒でもないのですが、Sendmailで扱う ドメイン名 が増えると、"/etc/mail/virtusertable"にはその都度記述を増やさなければなりません。 例えば"/etc/mail/local-host-names"が、
となった場合、"/etc/mail/virtusertable"は、
と 「受信をしないためのやむをえない記述」 ばかりになってしまいます。 ここでは "tanaka" に限って説明しているのでまだ記述は簡単ですが、メールサーバーを利用するユーザーの数だけこの 「受信をしないための記述」 をしなければならないので、実際の設定作業は恐ろしく面倒なことになるでしょう。 ところが、 構築中のLinuxサーバー に "tanaka" というアカウントが存在せず、 "tanaka@obenri.com" 宛てのメールを受信するアカウントとして "tanaka_obenri" を使うとすれば、"/etc/mail/virtusertable"の設定は、
だけで済みます。 |
||||||||
|
|
今度は "tanaka" というアカウントがシステム上に存在しないわけですから、この"/etc/mail/virtusertable"に記述されていない "tanaka@[ホスト名]" 宛てのメールは書き込み先のメールボックスが存在せず、自動的に「宛先不明」として処理されることになります。 同じ理由から、"/etc/mail/local-host-names"の記述がいくら増えても、このケースでは"/etc/mail/virtusertable"への記述の修正や追記の必要はありません。 結局のところ、複数のホスト名を併用する場合の運用のコツは、 「メールアドレスのアカウント名と、サーバー上のアカウントを同じ名前にしないように運用する。」 ということに尽きるかもしれません。
関連セクション・
メールサーバーの構築
|
|
|
受信するホスト名の設定
<<Previous
|
Next>>
メール転送設定の使い分け
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |