6 電子メール・サービス構成
この章では、Oracle Linuxで使用可能な電子メール・プログラムとプロトコル、および基本的なSendmailクライアントの設定方法について説明します。
電子メール・プログラムについて
メール・ユーザー・エージェントは電子メール・クライアント・アプリケーションで、電子メール・メッセージの作成と読取り、メッセージを保存したり編成するためのメールボックスの設定、およびメール転送エージェント(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は、電子メール・クライアント・アプリケーションがアクセス可能なローカル・システム上で、メッセージを配布およびソートします。
電子メール・プロトコルについて
電子メール・メッセージを配信するには、複数の異なるネットワーク・プロトコルが必要です。これらのプロトコルは、複数の異なるシステム(多くの場合、異なるオペレーティング・システムと異なる電子メール・プログラムを実行する)で電子メールを送信、転送および受信できるように連携します。
SMTPについて
Simple Mail Transfer Protocol (SMTP)は、電子メール・クライアント・アプリケーションとサーバー間、および送信側サーバーと宛先サーバー間でメール配信サービスを提供するトランスポート・プロトコルです。電子メール・クライアント・アプリケーションの送信電子メールを構成する場合は、SMTPサーバーを指定する必要があります。
SMTPは認証不要です。SMTPを使用して誰もが電子メール(迷惑メールや未承諾一括メールを含む)を送信できます。SMTPサーバーを管理する場合は、リレー制限を構成して、SMTP経由で電子メールを送信するユーザーを制限できます。オープン・リレー・サーバーには、そのような制限はありません。PostfixとSendmailは両方ともSMTPを使用するSMTPサーバー・プログラムです。電子メールを受信するドメインを所有していない場合は、SMTPサーバーを設定する必要はありません。
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
を参照してください。
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サービスを再起動します。
sudo systemctl restart postfix
詳細は、postfix(1)
およびPostfixの他のマニュアル・ページ、電子メールの転送、/usr/share/doc/postfix-version
およびhttp://www.postfix.org/documentation.htmlを参照してください。
Sendmail SMTPサーバーについて
Sendmailは、柔軟に構成可能な、インターネットで最も一般的に使用されるMTAです。Sendmailは、主としてシステム間での電子メールの転送に使用されますが、電子メールを取り扱うあらゆる側面のほどんどを制御できます。
Sendmailは、次のパッケージで配布されます。
-
procmail
-
SendmailのデフォルトのローカルMDAとして機能するProcmailが入っています。
sendmail
パッケージに付属するパッケージとしてインストールされます。 -
sendmail
-
Sendmail MTAが入っています。
-
sendmail-cf
-
Sendmailの構成ファイルが入っています。
Sendmailパッケージをインストールするには、次のように入力します。
sudo yum install sendmail sendmail-cf
詳細は、sendmail(8)
マニュアル・ページを参照してください。
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
先頭のdnl
はdelete to new lineの略語で、その行を事実上コメント・アウトします。
sendmail.mc
を編集した後は、sendmail
サービスを再起動してsendmail.cf
を再生成します。
sudo systemctl restart sendmail
別の方法として、/etc/mail
のmakeスクリプトを使用できます。
sudo /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
については、サーバーを再起動するまで、再生成したデータベース・ファイルは使用されません。
電子メールの転送
/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)
マニュアル・ページを参照してください。
Sendmailクライアントの構成
Sendmailクライアントは、アウトバウンド・メールを別のSMTPサーバー(通常はISPまたは組織のIT部門で管理される)に送信し、次に、このサーバーが電子メールをその宛先にリレーします。
Sendmailクライアントを構成するには:
-
SMTPサーバーのアカウントに認証が必要な場合は、次のようにします。
-
root
のみがアクセス可能な/etc/mail
の下にauth
ディレクトリを作成します。sudo mkdir /etc/mail/auth sudo chmod 700 /etc/mail/auth
-
auth
ディレクトリで、SMTPサーバーの認証情報を格納するファイルsmtp-auth
を作成します。たとえば:sudo echo 'AuthInfo:smtp.isp.com: "U:username" "P:password"' > /etc/mail/auth/smtp-auth
前のコマンドでは、smtp.isp.comはSMTPサーバーのFQDNであり、usernameとpasswordはアカウントの名前とパスワードです。
-
smtp-auth
からデータベース・ファイルを作成し、root
のみがファイルを読取り/書込みできるようにします。cd /etc/mail/auth makemap hash smtp-auth < smtp-auth chmod 600 smtp-auth smtp-auth.db
-
-
/etc/mail/sendmail.mc
を編集し、次の行を変更します。dnl define('SMART_host', 'smtp.your.provider')dnl
変更後:
define('SMART_host', 'smtp.isp.com')dnl
前のコマンドでは、smtp.isp.comはSMTPサーバーのFQDNです。
-
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)。
-
/etc/sysconfig/sendmail
を編集し、DAEMON
の値をno
に設定します。DAEMON=no
このエントリにより、
sendmail
によるポート25での着信電子メールのリスニングが無効になります。 -
sendmail
サービスを再起動します。sudo systemctl restart sendmail
構成をテストするには、電子メールを別のドメインのアカウントに送信します。
この構成は、着信する電子メールを受信またはリレーしません。クライアント・アプリケーションを使用して、POPまたはIMAP経由で電子メールを受信できます。