このページではLinux構築した自宅サーバーで使用するMTAであるSendmailメールの転送・受信・拒否の制御について初心者向けに解説します。

HPの格安エントリーサーバー機"HP ProLiant ML115"でのLinuxサーバー構築記を掲載しました。サーバー機の選定にお悩みの方は是非お越しください...。お便利サーバー.com管理人。
サーバーのセットアップ
Sendmailの設定

Sendmailについて

Sendmailのファイル構成

sendmail.mcの編集と設定

sendmail.cfの作成

受信するホスト名の設定

ホスト名毎のメールの振分け

メール転送設定の使い分け

受信/転送に関する設定

Sendmailのコントロール

連携するアプリケーション等

サイト内検索

受信、転送を許可するホストの設定

Sendmail は、任意の ホスト からのメールを受信するとき、その宛先のメールアドレスの "@" 以降が "/etc/mail/local-host-names" の記述と一致する場合は自ホスト内への保存を試み 受信するホスト名の設定 、一致しない場合は外部の MTA への転送を試みます。

この働きはMTAにとって最も重要なものですが、この設定を誤ると不正なスパムメールの 「配信の踏み台」 にされる可能性がありますので、仕組みをきちんと理解して設定を行う必要があります。

MTAは通常、メールの受け入れの許可、転送の許可について、メールの送信元のホストの IPアドレス または ドメイン名 で判別することができるようになっています。

Sendmailではその制御を行うのに、 "/etc/mail/access.db" という バイナリ データベース ファイルを参照します。

ルミカショップへようこそ
管理人がお手伝いしたサイトです。 一度お越しくださいね!。

"/etc/mail/access.db"は、 テキスト ファイルである "/etc/mail/access" の内容を、 "makemap" コマンド でバイナリ型に変換して作成されますから、実際に編集を行うのはこの"/etc/mail/access"となります。

まず、 cp コマンドでバックアップを作成した後、 pico エディタで "/etc/mail/access" を開きます picoエディタでファイルを開く

[root@web1 root]# cp /etc/mail/access /etc/mail/access.orgEnter
[root@web1 root]# pico /etc/mail/accessEnter


picoで/etc/mail/accessを開く
picoで"/etc/mail/access"を開く

"/etc/mail/access"は、行頭に "#" を記述するとコメント文として無視されますから、自分で説明を入れたり、一時的に設定を無効にする場合などに利用してください。

書式は、対象となるIPアドレスまたはドメイン名を向かって左側に記述し、スペースまたはタブで区切って右側にアクセス制御キーワードを記述します。

例えば、

192.168.100.101  RELAY

と記述すると、Sendmailは、

「IPアドレス"192.168.100.101"のホストのMUAからのメールの受信と、他のMTAへの転送を許可する。」

という動作をします。また、

obenriclient.com  REJECT

と記述すると、

FQDN "*.obenriclient.com"のホストのMUAからのメールの受信を拒否する。」

という動作をします。

アクセス制御キーワードはいくつかの種類がありますが、少しわかり難いかもしれませんので図解してみます。

"OK"〜受信と自ホストへの保存のみ許可

デフォルト の設定です。

明示的に設定を行わない場合は、自動的に任意のホストに "OK" が設定されたものとみなされます。

この場合、

メールはユーザーがMUAから発信するだけでなく、Sendmailと同じホスト上で動作する他の アプリケーション (例えば httpd から送信されるフォームメールなど) からも発信されます。
この場合の送信元のホストはいうまでもなく "localhost" として扱われ、 "/etc/mail/access" の制御を受けます。
キーワードにOKが指定(あるいは無指定)されたときのSendmailの動作
キーワードに"OK"が指定(あるいは無指定)されたときのSendmailの動作

のように、Sendmailは MUA MTA からの受信を受け入れ、自ホストへの保存動作を試みます。

メールの宛先が自ホストではない場合には、Sendmailは受信そのものを拒否し、送信元にその旨のメッセージを送り返します。

つまりこの設定では、 「他のMTAへの転送は行わない」 ので、先に説明した "local-host-names" で指定されていないメールアドレス宛てのメールは、一切扱わないことになります。

"RELAY"〜受信と自ホストへの保存と他ホストへ転送を許可

上の "OK" の動作に加えて、他の ホスト へのメールの転送を許可します。

MUA クライアント アプリケーション ですから、MTAからのメールの転送先ではありえません。

ここでいう「他のホスト」とは、正確には 「他のホストからメールの受け入れが可能な MTA ということになります。

キーワードにRELAYが指定されたときのSendmailの動作
キーワードに"RELAY"が指定されたときのSendmailの動作

Sendmail は、"RELAY"キーワードで指定されたホスト(MTAまたはMUA)からのメールを受信すると、その宛先が "local-host-names" で指定されたもの以外の場合、 DNSサーバー を利用してメールの宛先の 名前解決 を行い、自身以外のMTAへの転送を試みることになります。

実際のところ、ほとんどのインターネット利用者は ISP から提供されたメールアドレスを使用しているはずですから、あなたが 構築中のLinuxサーバー 上のSendmailを使って友人などにメールを送りたい場合、あなたが使うMUAに対して"RELAY"を設定する必要があります。

ただし、自分の管理下にないMTAやMUAに対しては、 絶対に"RELAY"を設定してはいけません。

もしもそういう設定をしてしまうと、 構築中のLinuxサーバー スパムメールの発信基地 にされてしまうかもしれないからです。

スパマーは自分で設置したMTAから直接スパムメールを発信するわけにはいきませんから 自分所有するサーバーでスパムメールを発信できない理由 、「不用意に外部のMTAからの中継を許可しているメールサーバー」を常日頃から探し回っています。

そしてもし 構築中のLinuxサーバー がスパムメールの発信基地にされてしまったら、あなたのメールサーバーそのうちブラックリストに挙げられ、多くのMTAから受信拒否されてしまうことになるでしょう。

"REJECT"〜受信を拒否する(エラー表示)

ホスト からの受信を拒否し、送信元にエラーを表示させる動作を行うキーワードです。

頻繁にスパムメールを送りつけてくる MTA などに設定します。

"550 [メッセージ]"〜受信を拒否する(エラー+メッセージ表示)

動作は"REJECT"と同じですが、エラーとともに[メッセージ]を送信します。

"DISCARD"〜受信メールを破棄する(エラー非表示)

ホスト からの受信メールを破棄し、送信元にエラーを表示させないためのキーワードです。

この動作を行われると、送信元にとっては「正常にメールが送信できた。」と錯覚することになりますから、正当なユーザーにとってはかなり迷惑な設定になります。

また、未熟なスパマーが「スパムメールの踏み台」が見つかったと錯覚する恐れもありますから、一般的には使用すべきキーワードではありません。

関連セクションへ 関連セクション・ メールサーバーの構築

このページの先頭へ↑

"/etc/mail/access"の設定とデータベース化

デフォルト "/etc/mail/access" からコメント文を除くと、次のようになっているはずです。

localhost.localdomain      RELAY
localhost            RELAY
127.0.0.1            RELAY

つまり、 構築中のLinuxサーバー 上で動作する httpd やその他の アプリケーション から送信されるメールのみ、他の MTA に転送許可されています。

これに、自宅内の同じ サブネット "192.168.100.0/24" の中にある ホスト機 MUA を使って、任意のメールアドレス宛にメール送信を可能にするには、

localhost.localdomain      RELAY
localhost            RELAY
127.0.0.1            RELAY
192.168.100           RELAY

と設定します。

単独の IPアドレス ではなく、サブネット単位で ホスト を指定するときは、このように オクテット 単位で ネットワーク部 を指定し、 ホスト部 を省略します。

プレフィックス長 形式や サブネットマスク 形式は記述できません。

一般的にはこれ以外の設定を行う必要はありませんが、例えば頻繁にスパムメールを送ってくるMTAがある場合は、

localhost.localdomain      RELAY
localhost            RELAY
127.0.0.1            RELAY
192.168.100           RELAY
spam.com            REJECT

と設定します。

このように設定すると、ホスト名 "*.spam.com からの転送を拒否することができます。

もちろん、ホストを特定できるのであれば、記述は FQDN でもIPアドレスでも構いません。

/etc/mail/accessの設定例と動作イメージ図
"/etc/mail/access"の設定例と動作イメージ図

設定が終了したら保存して picoエディタ を閉じ picoエディタを閉じる "/etc/mail/access" に対して データベース 化処理を行い、 "/etc/mail/access.db" として保存します。

この変換作業を行っても"/etc/mail/access"はそのまま残りますので、バックアップをとる必要はありません。

"makemap" コマンド "-v" オプション付きで実行すると、 "key=","val=" で処理内容を確認することができます。
[root@web1 root]# cd /etc/mailEnter cdコマンドについて
[root@web1 mail]# makemap -v hash access.db < accessEnter 入力のリダイレクトについて
key=`localhost.localdomain', val=`RELAY'
key=`localhost', val=`RELAY'
key=`127.0.0.1', val=`RELAY'
key=`192.168.100', val=`RELAY'
key=`spam.com', val=`REJECT'
[root@web1 mail]# ls -l access.dbEnter lsコマンドについて
-rw-r-----  1 root   root    12288 2月 27 19:24 access.db
             現在の日時に変更されています↑。
[root@web1 mail]#

このようにして作成された"/etc/mail/access.db"は、 Sendmail が一つの動作ごとに参照するデータベースですから、設定を反映するためにSendmailを再起動する必要はありません。データベースを作成すれば即動作に反映されるようになります。

関連セクションへ 関連セクション・ メールサーバーの構築

このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
Powered by White Box Enterprise Linux