第6章 電子メール・サービス構成

この章では、Oracle Linuxで使用可能な電子メール・プログラムとプロトコル、および基本的なSendmailクライアントの設定方法について説明します。

6.1 電子メール・プログラムについて

メール・ユーザー・エージェントは電子メール・クライアント・アプリケーションで、電子メール・メッセージの作成と読取り、メッセージを保存したり編成するためのメールボックスの設定、およびメール転送エージェント(MTA)へのアウトバウンド・メッセージの送信を可能にします。また、多くのMUAは、Post Office Protocol (POP)またはInternet Message Access Protocol (IMAP)を使用して、リモート・サーバーから電子メッセージを取得できます。

メール転送エージェント(MTA)は、Simple Mail Transport Protocol (SMTP)を使用して、システム間で電子メール・メッセージをトランスポートします。クライアント・プログラムから宛先サーバーへの電子メール配信サービスでは、そのルート上で複数のMTAをトラバースする場合があります。Oracle LinuxにはPostfixとSendmailの2つのMTAが用意されており、SLIPおよびPPPとともに使用する特殊な目的のMTAであるFetchmailも付属しています。

メール配信エージェント(MDA)は、電子メール・メッセージの実際の配信を実行します。MTAはProcmailなどのMDAを起動して、受信電子メールを受信者のメールボックス・ファイルに格納します。MDAは、電子メール・クライアント・アプリケーションがアクセス可能なローカル・システム上で、メッセージを配布およびソートします。

6.2 電子メール・プロトコルについて

電子メール・メッセージを配信するには、複数の異なるネットワーク・プロトコルが必要です。これらのプロトコルは、複数の異なるシステム(多くの場合、異なるオペレーティング・システムと異なる電子メール・プログラムを実行する)で電子メールを送信、転送および受信できるように連携します。

6.2.1 SMTPについて

Simple Mail Transfer Protocol (SMTP)は、電子メール・クライアント・アプリケーションとサーバー間、および送信側サーバーと宛先サーバー間でメール配信サービスを提供するトランスポート・プロトコルです。電子メール・クライアント・アプリケーションの送信電子メールを構成する場合は、SMTPサーバーを指定する必要があります。

SMTPは認証不要です。SMTPを使用して誰もが電子メール(迷惑メールや未承諾一括メールを含む)を送信できます。SMTPサーバーを管理する場合は、リレー制限を構成して、SMTP経由で電子メールを送信するユーザーを制限できます。オープン・リレー・サーバーには、そのような制限はありません。PostfixとSendmailは両方ともSMTPを使用するSMTPサーバー・プログラムです。電子メールを受信するドメインを所有していない場合は、SMTPサーバーを設定する必要はありません。

6.2.2 POPおよびIMAPについて

Post Office Protocol (POP)は、インターネット・サービス・プロバイダ(ISP)で一般的に維持管理されるリモート・サーバーのメールボックスから電子メール・メッセージを取得する際に、電子メール・クライアント・アプリケーションが使用する電子メール・アクセス・プロトコルです。通常、POP電子メール・クライアントは、メッセージが正常に取得されたとき、またはその後の短時間の範囲内に、サーバー上のメッセージを削除します。

Internet Message Access Protocol (IMAP)は、一般的に組織で維持管理されるリモート・サーバーから電子メール・メッセージを取得する際に、電子メール・クライアント・アプリケーションが使用する電子メール・アクセス・プロトコルです。メッセージ全体は開封時にのみダウンロードされ、最初にメッセージをダウンロードせずにサーバーから削除できます。IMAPを使用している場合、電子メールはサーバー上に保持されます。

POPとIMAPの両方を使用することで、メール・フォルダを管理し、複数のメール・ディレクトリを作成して、電子メールを編成および保存できます。

dovecotパッケージは、IMAPサーバーとPOPサーバーの両方を実装するdovecotサービスを提供します。

デフォルトでは、dovecotサービスは、クライアント認証およびデータ転送セッションにSecure Socket Layer (SSL)暗号化を使用するセキュアなバージョンで、IMAPとPOPの両方を実行します。dovecotで提供されるIMAPおよびPOPサーバーは、インストールに応じて機能するように構成されます。通常は、構成ファイル/etc/dovecot.confを変更する必要はありません。

詳細は、dovecot(1)マニュアル・ページおよび/usr/share/doc/dovecot-versionを参照してください。

6.3 Postfix SMTPサーバーについて

Postfixは、Oracle LinuxのデフォルトMTAとして構成されます。PostfixにはSendmailのような多くの機能はありませんが、PostfixはSendmailよりも管理しやすく、その機能はほとんどのインストールの要件を十分に満たします。Sendmailに固有のアドレス再書込みルールまたはメール・フィルタ(milter)を使用する場合は、Sendmailのみを使用する必要があります。ほとんどのメール・フィルタはPostfixで適切に機能します。Sendmailを使用する場合は、ネットワーク・ポートの使用で競合が発生しないようにPostfixを無効にするかアンインストールします。

Postfixは、プライマリ・デーモンといくつかの小さいプロセスで構成される、モジュール式の設計になっています。Postfixの構成ファイルは/etc/postfixディレクトリに配置され、次のものが含まれます。

access

Postfixへの接続を許可するホストを指定します。

main.cf

Postfixのグローバル構成オプションを格納します。

master.cf

Postfixマスター・デーモンおよびPostfixの他のプロセスが、電子メールを配信する際にどのように相互作用するかを指定します。

transport

宛先電子メール・アドレスとリレー・ホスト間のマッピングを指定します。

デフォルトでは、Postfixは、ローカル・ホスト以外のシステムからのネットワーク接続を受け入れません。他のホストのメール配信を有効にするには、/etc/postfix/main.cfを編集して、そのドメイン、ホスト名およびネットワーク情報を構成します。

構成の変更が終了した後は、Postfixサービスを再起動します。

# systemctl restart postfix

詳細は、postfix(1)およびPostfixの他のマニュアル・ページ、第6.5項「電子メールの転送」/usr/share/doc/postfix-versionおよびhttp://www.postfix.org/documentation.htmlを参照してください。

6.4 Sendmail SMTPサーバーについて

Sendmailは、柔軟に構成可能な、インターネットで最も一般的に使用されるMTAです。Sendmailは、主としてシステム間での電子メールの転送に使用されますが、電子メールを取り扱うあらゆる側面のほどんどを制御できます。

Sendmailは、次のパッケージで配布されます。

procmail

SendmailのデフォルトのローカルMDAとして機能するProcmailが入っています。sendmailパッケージに付属するパッケージとしてインストールされます。

sendmail

Sendmail MTAが入っています。

sendmail-cf

Sendmailの構成ファイルが入っています。

Sendmailパッケージをインストールするには、次のように入力します。

# yum install sendmail sendmail-cf

詳細は、sendmail(8)マニュアル・ページを参照してください。

6.4.1 Sendmail構成ファイルについて

Sendmailのメイン構成ファイルは/etc/mail/sendmail.cfで、手動での編集は意図されていません。かわりに、/etc/mail/sendmail.mcファイルで構成を変更します。

他のシステムからの電子メールをSendmailでリレーする必要がある場合は、sendmail.mcの次の行を変更します。

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

変更後:

dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

先頭のdnldelete to new lineの略語で、その行を事実上コメント・アウトします。

sendmail.mcを編集した後は、sendmailサービスを再起動してsendmail.cfを再生成します。

# systemctl restart sendmail

別の方法として、/etc/mailmakeスクリプトを使用できます。

# /etc/mail/make all

ただし、再生成した構成ファイルは、サーバーを再起動するまでは使用されません。

/etc/mailに格納される他の重要なSendmail構成ファイルには、次のものがあります。

access

ローカル・ホストから他のシステムへのアウトバウンド・メールを処理するリレー・ホストを構成します。これはデフォルトの構成です。

Connect: localhost.localdomain      RELAY
Connect: localhost                  RELAY
Connect: 127.0.0.1                  RELAY

ローカル・ネットワーク上の他のシステムからのメールをリレーするようにSendmailを構成するには、次のようなエントリを追加します。

Connect: 192.168.2                    RELAY
mailertable

あるドメインから別のドメインへの電子メールの転送を構成します。次の例は、yourorg.orgドメインに送信された電子メールをmydom.comドメインのSMTPサーバーに転送します。

yourorg.org        smtp:[mydom.com] 
virtusertable

複数のドメインへの電子メールの供給を構成します。宛先アドレスで開始する各行には、Sendmailが電子メールを送信する転送先アドレスが続きます。たとえば、次のエントリは、yourorg.orgの任意のユーザーに宛てた電子メールをmydom.comの同じユーザーに転送します。

@yourorg.org           %1@mydom.com

これらの各構成ファイルには、/etc/mail内に対応するデータベース(.db)ファイルがあり、Sendmailがこのファイルを読み取ります。構成ファイルに変更を加えた後は、sendmailサービスを再起動します。データベース・ファイルを再生成するには、/etc/mail/make allコマンドを実行します。sendmail.cfについては、サーバーを再起動するまで、再生成したデータベース・ファイルは使用されません。

6.5 電子メールの転送

/etc/aliasesファイルを構成することで、Postfix local配信エージェントまたはSendmailを使用して、着信する電子メール・メッセージを転送できます。このファイルのエントリでは、インバウンド・アドレスをローカル・ユーザー、ファイル、コマンドおよびリモート・アドレスにマップできます。

次の例は、postmasterの電子メールをrootにリダイレクトし、ローカル・システムのadminに送信された電子メールを別のシステム上のusr04を含めた他の複数のユーザーに転送します。

postmaster:   root
admin:        usr01, usr02, usr03, usr04@another-system.com 

電子メールをファイルに出力するには、宛先アドレスのかわりに絶対パス名を指定します。コマンドを指定するには、コマンドの前にパイプ記号(|)を使用します。次の例は、nemoに送信された電子メールを/dev/nullに送信することで消去し、aggregatorというスクリプトを実行してfixmeに送信された電子メールを処理します。

nemo:         /dev/null
fixme:        |/usr/local/bin/aggregator

ファイルを変更した後は、コマンドnewaliasesを実行し、索引付きデータベース・ファイルを再構築します。

詳細は、aliases(5)マニュアル・ページを参照してください。

6.6 Sendmailクライアントの構成

Sendmailクライアントは、アウトバウンド・メールを別のSMTPサーバー(通常はISPまたは組織のIT部門で管理される)に送信し、次に、このサーバーが電子メールをその宛先にリレーします。

Sendmailクライアントを構成するには:

  1. SMTPサーバーのアカウントに認証が必要な場合は、次のようにします。

    1. rootのみがアクセス可能な/etc/mailの下にauthディレクトリを作成します。

      # mkdir /etc/mail/auth
      # chmod 700 /etc/mail/auth
    2. authディレクトリで、次の例のようにSMTPサーバーの認証情報を格納するファイルsmtp-authを作成します。

      # echo 'AuthInfo:smtp.isp.com: "U:username" "P:password"' > /etc/mail/auth/smtp-auth

      前のコマンドでは、smtp.isp.comはSMTPサーバーのFQDNであり、usernamepasswordはアカウントの名前とパスワードです。

    3. smtp-authからデータベース・ファイルを作成し、rootのみがファイルを読取り/書込みできるようにします。

      # cd /etc/mail/auth
      # makemap hash smtp-auth < smtp-auth
      # chmod 600 smtp-auth smtp-auth.db
  2. /etc/mail/sendmail.mcを編集し、次の行を変更します。

    dnl define('SMART_host', 'smtp.your.provider')dnl

    変更後:

    define('SMART_host', 'smtp.isp.com')dnl

    前のコマンドでは、smtp.isp.comはSMTPサーバーのFQDNです。

  3. SMTPサーバーのアカウントに認証が必要な場合は、SMART_hostを定義する行の後ろに、次の行を追加します。

    define('RELAY_MAILER_ARGS', 'TCP $h port')dnl
    define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    FEATURE('authinfo','hash /etc/mail/auth/smtp-auth.db')dnl
    define(`confAUTH_OPTIONS', `A p y')dnl

    前のコマンドでは、portはSMTPサーバーによって使用されるポート番号です(たとえば、SMARTTLSの場合は587、SSL/TLSの場合は465)。

  4. /etc/sysconfig/sendmailを編集し、DAEMONの値をnoに設定します。

    DAEMON=no

    このエントリにより、sendmailによるポート25での着信電子メールのリスニングが無効になります。

  5. sendmailサービスを再起動します。

    # systemctl restart sendmail

    構成をテストするには、電子メールを別のドメインのアカウントに送信します。

この構成は、着信する電子メールを受信またはリレーしません。クライアント・アプリケーションを使用して、POPまたはIMAP経由で電子メールを受信できます。