27.3. メール転送エージェント (MTA)
Red Hat Enterprise Linux には、Sendmail と Postfix の 2 つの主要 MTA が含まれています。Sendmail はデフォルトの MTA として設定されていますが、デフォルトの MTA を Postfix に切り替えることができます。
27.3.1. Sendmail
Sendmail の主な目的は、他の MTA と同様に、通常は SMTP プロトコルを使用してホスト間で電子メールを安全に転送することです。ただし、Sendmail は高度な設定が可能であるため、使用されるプロトコルを含め、電子メールの処理方法についてのほぼすべての側面を制御できます。多くのシステム管理者は、電源とスケーラビリティーにより、Sendmail を MTA として使用することを選択しています。
27.3.1.1. 用途と制約
認識すべき重要な点は、Sendmail ができないことではなく、Sendmail が何であるか、何ができるのかということです。複数のロールを果たすモノリシックなアプリケーションの時代には、Sendmail は組織内で電子メールサーバーを稼働するために必要な唯一のアプリケーションと思われるかもしれません。Sendmail は各ユーザーのディレクトリーにメールを送信し、ユーザー用にアウトバウンドメールを送信できるため、技術的にはこれが当てはまります。Sendmail はメールを各ユーザーのディレクトリーにスプールして、ユーザーに送信メールを配信できるからです。ユーザーは通常、POP または IMAP を使用してメッセージをローカルマシンにダウンロードするMUA を使用して電子メールと対話したいです。ユーザーは通常、POP または IMAP を使用する MUA で電子メールとやりとりを行い、ローカルマシンにメッセージをダウンロードする方法を望みます。こうした他のアプリケーションを Sendmail と連動させることは可能ですが、実際、それらが存在する理由は異なり、独立して機能することができます。
Sendmail で設定すべき、また設定できるすべての用途の説明は、本セクションの対象外となります。Sendmail には文字どおり数百におよぶ様々なオプションやルールセットがあるため、Sendmail のあらゆる機能や問題修正方法に関する専門的な資料が多くあります。Sendmail リソースのリストについては、「関連情報」 を参照してください。
本セクションでは、Sendmail でデフォルトでインストールされたファイルを確認し、不要なメール(スパム)を停止する方法や、LDAP (Lightweight Directory Access Protocol )で Sendmail を拡張する方法など、基本的な設定変更を確認します。
27.3.1.2. Sendmail のデフォルトのインストール
Sendmail 実行可能ファイルは
/usr/sbin/sendmail
です。
Sendmail の長さと詳細な設定ファイルは
Sendmail の設定に関する詳細は 「Sendmail の一般的な設定変更」 を参照してください。
/etc/mail/sendmail.cf
です。sendmail.cf
ファイルを直接編集しないでください。Sendmail の設定を変更するには、/etc/mail/sendmail.mc
ファイルを編集し、元の /etc/mail/sendmail.cf
のバックアップを作成し、以下の代替手段を使用して新しい設定ファイルを生成します。
/etc/mail
に含まれる makefile (すべての -C /etc/mail)を使用して、新しい/etc/mail/sendmail.cf
設定ファイルを作成します。必要に応じて、/etc/mail
(db ファイル)で他のすべての生成されたファイルが再生成されます。古い makemap コマンドは引き続き使用できます。make コマンドは、make
パッケージがインストールされて いる場合は、sendmail start | restart | reload により自動的に使用されます。- または、同梱の m4 マクロプロセッサーを使用して、新しい
/etc/mail/sendmail.cf
を作成することもできます。
各種の Sendmail 設定ファイルは、以下を含む
/etc/mail/
ディレクトリーにインストールされます。
access
: 送信メールに Sendmail を使用できるシステムを指定します。domaintable
- ドメイン名のマッピングを指定します。local-host-names
: ホストのエイリアスを指定します。mailertable
: 特定のドメインのルーティングを上書きする方法を指定します。virtusertable
- ドメイン固有のエイリアス形式を指定し、1 台のマシンで複数の仮想ドメインをホストできるようにします。
/etc/mail/
にある設定ファイルの一部は、Sendmail が設定変更を使用できるようにするために、/etc/mail/ の設定ファイルの一部(ドメインテーブル
、mailertable
、virtusertable
など)をデータベースファイルに保存する必要があります。
データベースファイルの設定に変更を追加する場合は、以下のコマンドを実行します。
makemap hash /etc/mail/ <name> & lt; /etc/mail/ <name>
ここで 、<name > は変換する設定ファイルの名前に置き換えられます。
@example.com bob@other-example.com
変更を完了するには、root で以下のコマンドを使用して
virtusertable.db
ファイルを更新する必要があります。
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
これにより、新しい設定を含む更新された
virtusertable.db
ファイルが作成されます。
27.3.1.3. Sendmail の一般的な設定変更
Sendmail 設定ファイルを変更する場合は、既存のファイルを編集するのではなく、完全に新しい
/etc/mail/sendmail.cf
ファイルを生成するのが最適です。
注意
sendmail.cf
ファイルを変更する前に、バックアップコピーを作成することが推奨されます。
希望する機能を Sendmail に追加するには、root ユーザーとして
/etc/mail/sendmail.mc
ファイルを編集します。完了したら、以下のコマンドを実行して m4 マクロプロセッサーを使用して新しい sendmail.cf
を生成します。
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
デフォルトでは、m4 マクロプロセッサーは Sendmail でインストールされますが、
m4
パッケージに含まれます。
新しい
/etc/mail/sendmail.cf
ファイルを作成したら、Sendmail を再起動して変更を反映します。これを行う最も簡単な方法は、以下のコマンドを入力することです。
service sendmail restart
重要な影響
デフォルトの
sendmail.cf
ファイルでは、Sendmail はローカルコンピューター以外のホストからのネットワーク接続を受け入れません。Sendmail を他のクライアント用のサーバーとして設定するには、/etc/mail/sendmail.mc
ファイルを編集し、DAEMON_OPTIONS ディレクティブの Addr= オプションで指定されているアドレスを 127.0.0.1 からアクティブなネットワークデバイスの IP アドレスに変更するか、行頭に dnl を配置することで DAEMON_OPTIONS ディレクティブをすべてコメントアウトします。完了したら、以下のコマンドを実行して /etc/mail/sendmail.cf
を再生成します。
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
Red Hat Enterprise Linux に同梱されるデフォルト設定は、ほとんどの SMTP 専用サイトで機能します。ただし、UUCP (UNIX から UNIX Copy)サイトでは機能しません。UUCP メール転送を使用する場合は、
/etc/mail/sendmail.mc
ファイルを再設定し、新しい /etc/mail/sendmail.cf
を生成する必要があります。
/usr/share/sendmail-cf
ディレクトリー下のディレクトリーにあるファイルを編集する前に、/usr/share/sendmail-cf/README
ファイルを参照してください。これは、/etc/mail/sendmail.cf
ファイルの今後の設定に影響を及ぼす可能性があるためです。
27.3.1.4. マスカレーディング
一般的な Sendmail の設定の 1 つとして、1 台のマシンがネットワーク上の全マシンのメールのゲートウェイとして機能するように設定する方法があります。たとえば、ある企業が
mail.example.com
という名前のマシンですべての電子メールを処理し、すべての送信メールに一貫した返信アドレスを割り当てるとします。
この場合、Sendmail サーバーは、返信アドレスが
user@host.example.com
ではなく user@example.com
となるように、会社ネットワーク上のマシン名をマスカレードする必要があります。
これを行うには、以下の行を
/etc/mail/sendmail.mc
に追加します。
FEATURE(always_add_domain)dnl FEATURE(`masquerade_entire_domain')dnl FEATURE(`masquerade_envelope')dnl FEATURE(`allmasquerade')dnl MASQUERADE_AS(`bigcorp.com.')dnl MASQUERADE_DOMAIN(`bigcorp.com.')dnl MASQUERADE_AS(bigcorp.com)dnl
m4 を使用して新しい
sendmail.cf
を生成した後、この設定は、ネットワーク内からのすべてのメールが bigcorp.com
から送信されたかのように表示されます。
27.3.1.5. Spam の停止
電子メールのスパムは、通信を要求したことがないユーザーから受信した、不要な迷惑メールとして定義することができます。これは、破壊的でコストがかかる、広く蔓延したインターネット通信標準の悪用です。
Sendmail を使用すると、迷惑メールの送信に使用されている新たなスパム技術を比較的に簡単にブロックすることができます。さらに、数多くの一般的なスパム手法もデフォルトでブロックします。sendmail で利用可能な主要なアンチスパム機能は、ヘッダーチェック、リレー拒否(バージョン 8.9 からデフォルト)、アクセスデータベースおよび送信者情報チェックです。
たとえば、リレーとも呼ばれる SMTP メッセージの転送は、Sendmail バージョン 8.9 以降デフォルトでは無効になっています。この変更前には、Sendmail はメールホスト(
x.edu
)に、ある当事者(y.com
)からのメッセージを受け入れて別の当事者(z.net
)に送信するよう指示しました。しかし、現在は任意のドメインがサーバーを介してメールをリレーするよう Sendmail を設定する必要があります。リレードメインを設定するには、/etc/mail/relay-domains
ファイルを編集して Sendmail を再起動します。
ただし、ユーザーがインターネット全体にある他のサーバーからのスパムによる低下が多くなります。このような場合、
/etc/mail/access
ファイルで利用可能な Sendmail のアクセス制御機能を使用して、不要なホストからの接続を防ぐことができます。以下の例は、このファイルを使用したブロックの方法と Sendmail サーバーへのアクセスを具体的に許可する方法を示しています。
badspammer.com ERROR:550 "Go away and do not spam us anymore" tux.badspammer.com OK 10.0 RELAY
この例では、basp
ammer.com
から送信される電子メールが 550 RFC-821 準拠のエラーコードでブロックされ、メッセージがスパムメーマーに戻されます。tux.badspammer.com
サブドメインから送信される電子メールは受け入れられます。最後の行は、10.0.*.* ネットワークから送信された電子メールがメールサーバーを介してリレーできることを示しています。
/etc/mail/access.db
はデータベースであるため、makemap を使用して変更を有効にします。これを行うには、root で以下のコマンドを実行します。
makemap hash /etc/mail/access < /etc/mail/access
メッセージヘッダーの分析により、ヘッダーの内容に基づいてメールを拒否することができます。SMTP サーバーは、メッセージヘッダーに電子メールに関する情報を保存します。メッセージがある MTA から別の MTA に移動すると、各メッセージは他のすべての Received ヘッダーの上に Received ヘッダーに配置されます。ただし、この情報をスパム対策が変更する可能性があることに注意してください。
上記の例は、アクセスの許可や阻止に関する Sendmail が持つ機能のほんの一部です。詳細と例については、
/usr/share/sendmail-cf/README
を参照してください。
Sendmail は、メールの配信時に Procmail MDA を呼び出すため、SpamAssassin のようなスパムフィルターリングプログラムを使用して、ユーザーに対してスパムを識別してファイルに保存することも可能です。SpamAssassin の使用に関する詳細は、「spam フィルター」 を参照してください。
27.3.1.6. LDAP での Sendmail の使用
LDAP (Lightweight Directory Access Protocol) の使用は、大規模なグループから特定のユーザーに関する特定の情報を検索する非常に迅速かつ強力な方法です。たとえば、LDAP サーバーを使用すると、一般的な企業ディレクトリーから特定のメールアドレスをユーザーの姓で検索できます。このような実装では、LDAP は Sendmail と大きく分離されており、LDAP は階層的なユーザー情報を保存し、Sendmail には事前にアドレスを指定したメールメッセージの LDAP クエリーの結果のみが付与されます。
ただし、Sendmail は LDAP とのはるかに優れた統合をサポートします。この場合、LDAP を使用して、中規模レベルの組織をサポートするさまざまなメールサーバーで、
エイリアス
や virtusertables
などのメンテナーンスされるファイルを置き換えます。つまり、LDAP はメールルーティングレベルを Sendmail およびその個別の設定ファイルから、多くの異なるアプリケーションで活用できる強力な LDAP クラスターに抽象化します。
Sendmail の現行バージョンは LDAP に対応しています。LDAP を使用して Sendmail を拡張するには、最初に OpenLDAP などの LDAP サーバーを実行し、適切に設定します。次に、
/etc/mail/sendmail.mc
を編集して以下を追加します。
LDAPROUTE_DOMAIN('yourdomain.com')dnl FEATURE('ldap_routing')dnl
注記
これは LDAP を使用した非常に基本的な Sendmail の設定にすぎません。この設定は、特に共通の LDAP サーバーを使用するように複数の Sendmail マシンを設定する場合など、LDAP の実装によって大幅に異なる可能性があります。
詳細な LDAP ルーティング設定の指示と例については、
/usr/share/sendmail-cf/README
を参照してください。
LDAP の詳細は、28章Lightweight Directory Access Protocol (LDAP) を参照してください。