13.3. メール転送エージェント (MTA)

Red Hat Enterprise Linux 7 には、Postfix と Sendmail の 2 つの主要 MTA が装備されています。Postfix がデフォルトの MTA として設定されており、Sendmail は非推奨となっています。デフォルトの MTA を Sendmail に変更する必要がある場合は、Postfix をアンインストールするか、root で次のコマンドを使って Sendmail に切り替えます。
~]# alternatives --config mta
以下のコマンドを使って、希望のサービスを有効にすることもできます。
~]# systemctl enable service
同様に、サービスを無効にするには、シェルプロンプトで以下を入力します。
~]# systemctl disable service
Red Hat Enterprise Linux 7 でシステムサービスを管理する詳細情報については、9章systemd によるサービス管理 を参照してください。

13.3.1. Postfix

当初、IBM のセキュリティエキスパート/プログラマーの Wietse Venema 氏によって開発された Postfix は、Sendmail 互換の MTA で、セキュア、高速、かつ容易に設定できるように設計されています。
セキュリティー向上のために、Postfix ではモジュラー型設計を採用しており、権限が限定された小さなプロセスは、マスター デーモンが起動します。より小さく、権限の低いプロセスは、メール配信の様々な段階に関連する非常に特殊なタスクを実行してルートディレクトリーが変更された環境で稼働し、攻撃の影響を制限します。
Postfix がローカルコンピュータ以外のホストからのネットワーク接続を受け入れるよう設定するには、設定ファイルを多少変更するだけでできます。さらに、より複雑なニーズのために、Postfix は様々な設定オプションだけでなくサードパーティのアドオンも提供するため、多用途でフル機能の MTA となっています。
Postfix の設定ファイルはヒューマンリーダブルで、250 以上のディレクティブに対応しています。Sendmail とは異なり、変更を反映するためにマクロ処理は必要なく、また最も一般的に使用されるオプションの大部分は、多数のコメントが付いたファイルで説明されています。

13.3.1.1. Postfix のデフォルトインストール

Postfix 実行可能ファイルは postfix です。このデーモンは、メール配信の処理に必要なすべての関連プロセスを起動します。
Postfix は設定ファイルを /etc/postfix/ ディレクトリーに格納します。以下は、一般的に使用されるその他のファイルの一覧です。
  • access — アクセス制御に使用します。このファイルは、Postfix に接続可能なホストを指定します。
  • main.cf — Postfix のグローバル設定ファイルです。設定オプションの大部分がこのファイルで指定されています。
  • master.cf — メール配信を完了するために Postfix が様々なプロセスとやりとりを行う方法を指定します。
  • transport — 電子メールアドレスをリレーホストにマッピングします。
aliases ファイルは /etc ディレクトリーにあります。このファイルは Postfix と Sendmail 間で共有されます。ユーザー ID エイリアスを記述するメールプロトコルが必要な設定可能な一覧です。

重要

デフォルトの /etc/postfix/main.cf ファイルでは、Postfix はローカルコンピューター以外のホストからのネットワーク接続を受け付けられないように設定されています。Postfix を他のクライアント用のサーバーとして設定する方法は 「Postfix の基本設定」 を参照してください。
/etc/postfix/ ディレクトリーにある設定ファイルのオプションに変更を加えた後には、変更を反映させるために postfix サービスを再起動してください。これを実行するには、root で以下のコマンドを実行します。
~]# systemctl restart postfix

13.3.1.2. 以前のリリースからのアップグレード

Red Hat Enterprise Linux 7 の以下の設定は、以前のリリースと異なります。
  • disable_vrfy_command = no — Sendmail のデフォルトとは異なり、これはデフォルトで無効になります。yes に変更された場合は、電子メールアドレスを収集する一部の方法を回避できます。
  • allow_percent_hack = yes — これはデフォルトで有効になります。これにより、電子メールの % 文字を削除できるようになります。パーセント記号を使用したハックは、電子メールを送信者が制御してルーティングできるようにする古い回避策です。DNS と電子メールのルーティングの信頼性は非常に高まりましたが、Postfix はこのハックを引き続きサポートします。パーセント記号の書き換えを無効にするには、allow_percent_hackno に設定します。
  • smtpd_helo_required = no — 一部のアプリケーションが電子メールを送信できなくなることがあるため、Sendmail の場合と同様に、これはデフォルトで無効になります。MAIL、FROM、または ETRN コマンドを送信する前にクライアントが HELO または EHLO コマンドを送信するようにするには、yes に変更します。

13.3.1.3. Postfix の基本設定

デフォルトでは、Postfix はローカルホスト以外のホストからのネットワーク接続を受け付けません。ネットワーク上の他のホストを対象としたメール配信を有効にするには、root で以下のステップを実行します。
  • vi などのテキストエディタで /etc/postfix/main.cf ファイルを編集します。
  • mydomain 行のハッシュ記号 (#) を削除してコメント解除してから、domain.tld の箇所を example.com などのメールサーバーがサービスを提供しているドメインに置き換えます。
  • myorigin = $mydomain 行のコメントを解除します。
  • myhostname 行のコメントを解除し、host.domain.tld をマシンのホスト名に置き換えます。
  • mydestination = $myhostname, localhost.$mydomain 行のコメントを解除します。
  • mynetworks 行のコメントを解除して、168.100.189.0/28 の箇所を、サーバーに接続可能なホスト用の有効なネットワーク設定に置き換えます。
  • inet_interfaces = all 行のコメントを解除します。
  • inet_interfaces = localhost をコメント化します。
  • postfix サービスを再起動します。
これらの手順が完了したら、ホストは配信のため外部の電子メールを受け入れるようになります。
Postfix には様々な設定オプションがあります。Postfix の設定方法を学習する最適な方法の 1 つは、/etc/postfix/main.cf 設定ファイルのコメントを読むことです。Postfix 設定、SpamAssassin 統合、/etc/postfix/main.cf パラメータの詳細などの補足情報は http://www.postfix.org/ でオンラインで参照できます。

重要

POODLE: SSLv3 脆弱性 (CVE-2014-3566)』 で説明されている脆弱性のため、Red Hat は、SSL を無効にし、TLSv1.1 または TLSv1.2 のみを使用することを推奨します。詳細については、『Postfix および Dovecot における POODLE SSL 3.0 脆弱性問題 (CVE-2014-3566) の解決方法』 を参照してください。

13.3.1.4. LDAP での Postfix の使用

Postfix は LDAP ディレクトリーを様々なルックアップテーブルのソースとして利用できます (たとえば aliasesvirtualcanonical など)。これにより LDAP は階層的なユーザー情報を保存でき、Postfix は LDAP クエリーの結果を必要な場合にのみ知らされます。この情報をローカルに保存しないことで、管理者は容易に管理することができます。
13.3.1.4.1. /etc/aliases ルックアップのサンプル
以下は /etc/aliases ファイルをルックアップする LDAP を使用する基本的な例です。/etc/postfix/main.cf ファイルに以下の内容が含まれていることを確認してください。
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
/etc/postfix/ldap-aliases.cf ファイルがない場合は、これを作成します。以下の内容を含めます。
server_host = ldap.example.com
search_base = dc=example, dc=com
ldap.example.comexamplecom パラメーターは、既存の利用可能な LDAP サーバーの仕様と置き換える必要があります。

注記

/etc/postfix/ldap-aliases.cf ファイルは、LDAP SSLSTARTTLS を有効にするパラメーターなどの様々なパラメーターを指定することができます。詳細は ldap_table(5) の man ページを参照してください。
LDAP の詳細は、 『System-Level Authentication Guide』 の OpenLDAP を参照してください。

13.3.2. Sendmail

Sendmail の主な目的は、他の MTA と同様に、通常 SMTP プロトコルを使用して、ホスト間で電子メールを安全に転送することです。Sendmail は非推奨とみなされており、可能な場合は Postfix の使用が推奨されていることに注意してください。詳細は、「Postfix」 を参照してください。

13.3.2.1. 用途と制約

認識すべき重要な点は、Sendmail ができないことではなく、Sendmail が何であるか、何ができるのかということです。複数の役割を果たすモノリシックなアプリケーションの時代には、Sendmail は組織内で電子メールサーバーを稼働するために必要な唯一のアプリケーションに思われるかもしれません。技術的にはこれは真実です。Sendmail はメールを各ユーザーのディレクトリーにスプールして、ユーザーに送信メールを配信できるからです。しかし、実際は大半のユーザーは単なるメール配信以上の機能を必要とします。ユーザーは通常、POP または IMAP を使用する MUA で電子メールとやりとりを行い、ローカルマシンにメッセージをダウンロードする方法を望みます。あるいは、メールボックスへのアクセスに Web インターフェースを好むユーザーもいます。こうした他のアプリケーションを Sendmail と連動させることは可能ですが、実際、それらが存在する理由は異なり、独立して機能することができます。
Sendmail で設定すべき、また設定できるすべての用途の説明は、本セクションの対象外となります。Sendmail には文字通り数百におよぶ様々なオプションやルールセットがあるため、Sendmail のあらゆる機能や問題修正方法に関する専門的な資料が多くあります。Sendmail に関するリソースの一覧は 「その他のリソース」 を参照してください。
本セクションでは、Sendmail と共にデフォルトでインストール済みのファイルを概説し、迷惑メール (スパム) の停止方法や LDAP での Sendmail の拡張方法など基本設定の変更について説明します。

13.3.2.2. Sendmail のデフォルトのインストール

Sendmail を使用するには、root で以下を実行し、まず使用中のシステムに sendmail パッケージがインストールされていることを確認します。
~]# yum install sendmail
Sendmail を設定するには、root で以下を実行し、使用中のシステムに sendmail-cf パッケージがインストールされていることを確認します。
~]# yum install sendmail-cf
yum を使ったパッケージのインストールについては 「パッケージのインストール」 を参照してください。
Sendmail を使用する前に、デフォルトの MTA が Postfix から切り替わっている必要があります。デフォルトの MTA の切り替え方法については 「メール転送エージェント (MTA)」 を参照してください。
Sendmail 実行可能ファイルは /sendmail です。
Sendmail の長い詳細設定ファイルは /etc/mail/sendmail.cf です。sendmail.cf ファイルは直接編集しないようにしてください。Sendmail の設定を変更するには、/etc/mail/sendmail.mc ファイルを編集して、元の /etc/mail/sendmail.cf ファイルをバックアップした上で、以下のような別の方法で新規設定ファイルを生成します。
  • /etc/mail にある makefile を使用して新規の /etc/mail/sendmail.cf 設定ファイルを作成します。
    ~]# make all -C /etc/mail/
    /etc/mail にある生成された他のすべてのファイル (db ファイル) は、必要に応じて再生成されます。旧 makemap コマンドは現在も使用可能です。make コマンドは、sendmail サービスを起動もしくは再起動するたびに、自動的に使用されます。
Sendmail の設定に関する詳細は 「Sendmail の一般的な設定変更」 を参照してください。
以下のような様々な Sendmail 設定ファイルが、/etc/mail/ ディレクトリーにインストールされています。
  • access — 電子メールの送信に Sendmail を使用できるシステムを指定します。
  • domaintable — ドメイン名のマッピングを指定します。
  • local-host-names — ホストのエイリアスを指定します。
  • mailertable — 特定のドメインのルーティングを上書きする方法を指定します。
  • virtusertable — ドメイン固有のエイリアシング (aliasing) 形式を指定し、単一のマシン上における複数の仮想ドメインのホスティングを可能にします。
Sendmail が設定変更を使用可能となる前に、accessdomaintablemailertablevirtusertable など /etc/mail/ ディレクトリーにある設定ファイルのいくつかが、実際にそれらの情報をデータベースファイルに保存する必要があります。これらの設定への変更をデータベースファイル内に含めるには、root で以下のコマンドを実行します。
~]# cd /etc/mail/
~]# make all
これで、virtusertable.dbaccess.dbdomaintable.dbmailertable.dbsendmail.cf、および submit.cf が更新されます。
上記のデータベースファイルすべておよびカスタムのデータベースファイルを更新するには、以下のフォーマットでコマンドを使用します。
make name.db all
ここでの name は、更新するカスタムデータベースファイル名になります。
単一のデータベースを更新するには、以下のフォーマットでコマンドを使用します。
make name.db
ここでの name.db は、更新するデータベースファイル名になります。
変更を反映させるために、以下を実行して sendmail サービスを再起動することもできます。
~]# systemctl restart sendmail
たとえば、example.com ドメイン宛のすべての電子メールが bob@other-example.com に配信されるようにするには、virtusertable ファイルに以下の行を追加します。
@example.com bob@other-example.com
変更を完了するには、virtusertable.db ファイルを更新する必要があります:
~]# make virtusertable.db all
all オプションを使用すると、virtusertable.dbaccess.db が同時に更新されます。

13.3.2.3. Sendmail の一般的な設定変更

Sendmail 設定ファイルを変更する場合は、既存ファイルを編集せずに、全く新しい /etc/mail/sendmail.cf ファイルを生成するのが最適な方法です。

警告

sendmail.cf ファイルを置き換えたり変更したりする前に、バックアップコピーを作成してください。
希望する機能を Sendmail に追加したい場合は、root/etc/mail/sendmail.mc ファイルを編集します。編集が終了したら、sendmail サービスを再起動します。m4 パッケージがインストールされている場合は、m4 マクロプロセッサーが新しい sendmail.cf 設定ファイルを自動的に生成します。
~]# systemctl restart sendmail

重要

デフォルトの sendmail.cf ファイルでは、Sendmail はローカルコンピューター以外のホストからのネットワーク接続を受け入れないように設定されています。Sendmail を他のクライアント用のサーバーとして設定するには、/etc/mail/sendmail.mc ファイルを編集して、DAEMON_OPTIONS ディレクティブの Addr= オプションで指定されているアドレスを 127.0.0.1 からアクティブなネットワークデバイスの IP アドレスに変更するか、行頭に dnl を付けて、 DAEMON_OPTIONS ディレクティブをすべてコメントアウトします。終了したら、サービスを再起動して /etc/mail/sendmail.cf を再生成します。
~]# systemctl restart sendmail
Red Hat Enterprise Linux のデフォルトの設定ファイルは、大半の SMTP 専用サイトで機能します。ただし、UUCP (UNIX-to-UNIX Copy Protocol) サイトでは機能しません。UUCP メール転送を使用する場合は、/etc/mail/sendmail.mc ファイルを再設定して、新しい /etc/mail/sendmail.cf ファイルを生成する必要があります。
/usr/share/sendmail-cf/ ディレクトリー下のディレクトリーにあるファイルを編集する前には、/usr/share/sendmail-cf/README ファイルを確認してください。/etc/mail/sendmail.cf ファイルの今後の設定に影響を及ぼす場合があるためです。

13.3.2.4. マスカレード

一般的な Sendmail の設定の 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(`example.com.')dnl
MASQUERADE_DOMAIN(`example.com.')dnl
MASQUERADE_AS(example.com)dnl
m4 マクロプロセッサーを使用して新しい sendmail.cf ファイルを生成すると、この設定によりネットワーク内のメールはすべて example.com から送信されたかのように表示されます。
メールサーバー、DNS および DHCP サーバー、またプロビジョニングアプリケーションの管理者は、組織内で使用するホスト名のフォーマットに合意するべきであることに注意してください。推奨される命名プラクティスについては、 Red Hat Enterprise Linux 7 Networking Guide を参照してください。

13.3.2.5. スパムの防止

電子メールのスパムは、通信を要求したことがないユーザーから受信した、不要な迷惑メールと定義することができます。これは、破壊的で高コストを伴う、広く蔓延したインターネット通信標準の悪用です。
Sendmail を使うと、迷惑メールの送信に使用されている新たなスパム技術を比較的に簡単にブロックすることができます。さらに、数多くの一般的なスパム手法もデフォルトでブロックします。Sendmail で利用できる主要なアンチスパム機能は ヘッダーのチェックリレーの否認 (バージョン 8.9 からデフォルト)、アクセスのデータベース、送信者情報の確認 です。
たとえば、リレーとも呼ばれる SMTP メッセージの転送は、Sendmail バージョン 8.9 以降デフォルトでは無効になっています。この変更前には、Sendmail はメールホスト (x.edu) に対して、ある当事者 (y.com) からのメッセージを受け入れるよう指示し、そのメッセージを別の当事者 (z.net) に送信していました。しかし、現在は任意のドメインがサーバーを介してメールをリレーするよう Sendmail を設定する必要があります。リレードメインを設定するには、/etc/mail/relay-domains ファイルを編集して Sendmail を再起動してください。
~]# systemctl restart 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
この例では、badspammer.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 の使用に関する詳細は、「スパムフィルター」 を参照してください。

13.3.2.6. LDAP での Sendmail の使用

LDAP の使用は、大規模なグループからある特定のユーザーに関する特定の情報を検索する、非常に迅速かつ強力な方法です。例えば、LDAP サーバーを使用すると、一般的な企業ディレクトリーから特定の電子メールアドレスをユーザーの姓で検索することができます。この種の実装では、LDAP はほどんど Sendmail から分離されており、LDAP が階層別のユーザー情報を保存して、Sendmail は事前にアドレスが入力された電子メールメッセージの形式で LDAP のクエリー結果を知らされるだけです。
ただし、Sendmail は LDAP との非常に大規模な統合をサポートします。この統合では、Sendmail は LDAP を使用して、中規模からエンタープライズレベルの組織をサポートするために連携する異なるメールサーバー上の /etc/aliases/etc/mail/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 の実装によりこれとは大幅に異なる可能性があります。特に、共通の LDAP サーバーを使用するために数種の Sendmail マシンを設定する場合がそうです。
詳しい LDAP のルーティング設定に関する説明と例は、 /usr/share/sendmail-cf/README を参照してください。
次に、m4 マクロプロセッサーを実行し、再び Sendmail を再起動して、/etc/mail/sendmail.cf ファイルを再作成します。この方法については、「Sendmail の一般的な設定変更」 を参照してください。
LDAP の詳細は、 『System-Level Authentication Guide』 の OpenLDAP を参照してください。

13.3.3. Fetchmail

Fetchmail は、リモートサーバーから電子メールを取得してローカルの MTA に配信する MTA です。多くのユーザーは、リモートサーバー上にあるメッセージをダウンロードするプロセスと、MUA で電子メールを読み取り、整理するプロセスを別々にする機能性を評価してます。ダイアルアップユーザーのニーズを踏まえて設計されている Fetchmail は、POP3IMAP などの数々のプロトコルを使用して、メールスプールファイルに接続し、すべての電子メールメッセージを迅速にダウンロードします。また、必要に応じて、電子メールメッセージを SMTP サーバーに転送することもできます。

注記

Fetchmail を使用するには、root で以下を実行し、まず使用中のシステムに fetchmail パッケージがインストールされていることを確認します。
~]# yum install fetchmail
yum を使ったパッケージのインストールについては 「パッケージのインストール」 を参照してください。
Fetchmail は、ユーザーのホームディレクトリー内の .fetchmailrc ファイルを使用して各ユーザー用に設定されています。これがない場合は、ホームディレクトリーに .fetchmailrc ファイルを作成してください。
Fetchmail は .fetchmailrc ファイル内の詳細設定を使用して、リモートサーバー上にある電子メールを確認し、ダウンロードします。次に、電子メールをローカルマシン上のポート 25 に配信し、ローカルの MTA を使用して電子メールを適正なユーザーのスプールファイルに配置します。Procmail が利用できる場合は起動して電子メールをフィルターし、MUA が読み込むことができるようにメールボックスに配置します。

13.3.3.1. Fetchmail の設定オプション

Fetchmai を実行する時にすべての必要なオプションをコマンドライン上で渡し、リモートサーバー上の電子メールを確認することは可能ですが、.fetchmailrc ファイルを使用した方がはるかに簡単です。希望の設定オプションを .fetchmailrc ファイル内に配置し、それらのオプションが、 fetchmail コマンドを発行する時に毎回使用されるようにします。Fetchmail の実行時にオプションを上書きしたい場合は、コマンドライン上でそのオプションを指定します。
ユーザーの .fetchmailrc ファイルには、3 つのクラスの設定オプションが格納されています。
  • グローバルオプション — プログラムの動作を制御する、または電子メールを確認する全接続の設定を提供する指示を Fetchmail に与えます。
  • サーバーオプション — ポーリングされるサーバーに関する必要情報を指定します。ホスト名をはじめ、確認するポートやタイムアウトになるまでの秒数などの特定の電子メールサーバーの設定などです。こうしたオプションは、該当するサーバーを使用する全ユーザーに影響を及ぼします。
  • ユーザーオプション — 指定された電子メールサーバーを使用して、電子メールの認証や確認を行うにあたって必要なユーザー名、パスワードなどの情報を格納します。
グローバルオプションは、.fetchmailrc ファイルの最上部に表示されます。その次には 1 つまたは複数のサーバーオプションがあり、それぞれが Fetchmail が確認すべき異なる電子メールサーバーを指定します。サーバーオプションの次には、その電子メールサーバーを確認する各ユーザーアカウントのユーザーオプションがあります。サーバーオプションと同様に、複数のユーザーオプションを指定することで特定のサーバーでの使用、同一サーバー上の複数の電子メールアカウントの確認を行うことができます。
サーバーオプションを .fetchmailrc ファイルで利用するには、サーバーの情報の先頭に poll または skip などの特別なオプションの動詞を使用します。poll アクションは、Fetchmail の実行時にこのサーバーオプションを使用して、指定されたユーザーオプションで電子メールを確認するよう Fetchmail に指示します。ただし、skip アクションの後にあるサーバーオプションは、Fetchmail が呼び出された時にサーバーのホスト名が指定されていない限り確認されません。skip オプションは、特定して呼び出された時にスキップされたサーバーのみを確認し、現在稼働中の設定には影響を及ぼさないため .fetchmailrc ファイルの設定をテストする時に役立ちます。
サンプルの .fetchmailrc ファイルは以下のとおりです:
set postmaster "user1"
set bouncemail

poll pop.domain.com proto pop3
    user 'user1' there with password 'secret' is user1 here

poll mail.domain2.com
    user 'user5' there with password 'secret2' is user1 here
    user 'user7' there with password 'secret3' is user1 here
この例では、グローバルオプションにより、最終手段としてユーザーに電子メールが送信されるように指定されており (postmaster オプション)、すべての電子メールエラーは送信者ではなく、ポストマスターに送信されます (bouncemail オプション)。set アクションは、この行にグローバルオプションが含まれていることを Fetchmail に伝えます。次に、2 つの電子メールサーバーが指定されます。1 つは POP3 を使用して確認するように設定され、もう 1 つは様々なプロトコルを試みて機能するものを見つけるように設定されます。第 2 のサーバーオプションを使用して 2 人のユーザーが確認されますが、どのユーザー宛でも見つかった電子メールはすべて、user1 のメールスプールに送信されます。これにより、単一の MUA 受信ボックスに表示させながら、複数のサーバー上で複数のメールボックスをチェックすることが可能となります。各ユーザーの固有の情報は、user アクションで開始します。

注記

ユーザーはパスワードを .fetchmailrc ファイルに配置する必要はありません。with password 'password' のセクションを省略した場合は、Fetchmail は起動時にパスワードを要求するようになります。
Fetchmail には、数々のグローバルオプション、サーバーオプション、ローカルオプションがあります。これらの多くのオプションは、ほとんど使用されないか、非常に独特な状況にのみ適用されます。fetchmail の man ページに、各オプションの詳細が記載されていますが、最も一般的なものを以下の 3 セクションで説明します。

13.3.3.2. グローバルオプション

グローバルオプションは、set アクションの後に、それぞれ 1 行ずつ配置する必要があります。
  • daemon seconds — Fetchmail がバックグラウンドに残るデーモンモードを指定します。seconds を Fetchmail がサーバーをポーリングするまでの待機時間の秒数に置き換えます。
  • postmaster — 配信に問題が生じた場合にローカルユーザーがメールを送信するよう指定します。
  • syslog — エラーとステータスメッセージのログファイルを指定します。デフォルトは /var/log/maillog です。

13.3.3.3. サーバーオプション

サーバーオプションは .fetchmailrc 内で、poll または skip アクションの後にそれぞれの行に配置される必要があります。
  • auth auth-type auth-type を使用する認証のタイプに置き換えます。デフォルトでは、password 認証が使用されますが、一部のプロトコルは kerberos_v5kerberos_v4 および ssh を含む他のタイプの認証をサポートしています。any の認証タイプを使用した場合、Fetchmail は最初にパスワードを必要としない方法を試みます。次に、パスワードをマスクする方法を試みた後、最後にサーバーに暗号化されていないパスワードを送信して認証を試みます。
  • interval number — 指定されたサーバーを number の時間間隔でポーリングし、設定された全サーバー上の電子メールを確認します。このオプションは、通常ユーザーがほとんどメッセージを受信しない電子メールサーバーに使用されます。
  • port port-number port-number をポート番号に置き換えます。この値は、指定されたプロトコルのデフォルトのポート番号を上書きします。
  • proto protocol protocol を、サーバー上のメッセージを確認する時に使用する pop3imap などのプロトコルに置き換えます。
  • timeout seconds seconds を、Fetchmail が接続の試行を打ち切った後でサーバーが非アクティブとなる秒数に置き換えます。この値が設定されていない場合は、デフォルトの 300 秒が使用されます。

13.3.3.4. ユーザーオプション

ユーザーオプションは、サーバーオプションの下の各行に配置される場合と、サーバーオプションと同じ行に配置される場合があります。いずれの場合も、定義されるオプションは user オプション (以下で説明) にしたがう必要があります。
  • fetchall — 既読メッセージを含め Fetchmail がキューにあるすべてのメッセージをダウンロードするように命令します。デフォルトでは、Fetchmail は新規メッセージのみをダウンロードするようになっています。
  • fetchlimit number number を、停止する前に取得されるメッセージ数に置き換えます。
  • flush — 新規メッセージを取得する前に、キューにあるすべての既読メッセージを削除します。
  • limit max-number-bytes max-number-bytes を、Fetchmail で取得する時に許容されているメッセージの最大バイトサイズに置き換えます。このオプションは、大型のメッセージのダウンロードに時間がかかりすぎる場合の低速のネットワークリンクに有用です。
  • password 'password'password をユーザーのパスワードに置き換えます。
  • preconnect "command"command を、ユーザー宛のメッセージを取得する前に実行するコマンドに置き換えます。
  • postconnect "command"command を、ユーザー宛のメッセージを取得した後に実行するコマンドに置き換えます。
  • ssl — SSL 暗号化を有効にします。執筆時点では、デフォルトのアクションでは SSL2SSL3SSL23TLS1TLS1.1、および TLS1.2 から最良のものを使用します。SSL2 は廃止されたものと見なされ、 POODLE: SSLv3 脆弱性 (CVE-2014-3566) のため、SSLv3 を使用しないようにする必要があります。ただし、TLS1 以降の使用を強制できないため、接続するメールサーバーが SSLv2SSLv3使用しないよう設定する必要があります。サーバーが SSLv2SSLv3使用しないよう設定できない stunnel を使用します。
  • sslproto — 許可された SSL または TLS プロトコルを定義します。可能な値は SSL2SSL3SSL23、および TLS1 です。デフォルトの値 (sslproto が省略された場合、未設定の場合、または無効な値に設定された場合) は SSL23 です。デフォルトのアクションは SSLv2SSLv3TLSv1TLS1.1、および TLS1.2 から最適なものを使用します。SSL または TLS の他の値を設定すると、他のすべてのプロトコルが無効になることに注意してください。POODLE: SSLv3 脆弱性 (CVE-2014-3566) のため、このプションを省略するか、SSLv23 に設定し、対応するメールサーバーが SSLv2SSLv3使用しないよう設定することが推奨されます。サーバーが SSLv2SSLv3使用しないよう設定できない stunnel を使用します。
  • user "username"username を、Fetchmail がメッセージの取得に使用するユーザー名に置き換えます。このオプションは、他のすべてのユーザーオプションの前に付ける必要があります。

13.3.3.5. Fetchmail のコマンドオプション

fetchmail コマンドの実行時にコマンドライン上で使用される Fetchmail オプションの大半は .fetchmailrc 設定オプションを反映します。この方法では、Fetchmail は設定ファイルの有無を問わず使用することができます。 .fetchmailrc 設定オプションは、.fetchmailrc ファイルに残しておいた方が簡単なため、大半のユーザーはコマンドライン上では使用しません。
fetchmail コマンドは、特定の用途のオプションと併せて実行した方が望ましい場合もあります。コマンドラインで指定されるオプションはいずれも設定ファイルオプションを上書きするため、エラーが発生した場合は、コマンドオプションを使用してエラーの原因になっている .fetchmailrc 設定を一時的に上書きすることが可能です。

13.3.3.6. 情報提供またはデバッグのオプション

fetchmail コマンドの後に使用されるオプションの一部は、重要な情報を提供する場合があります。
  • --configdump.fetchmailrc および Fetchmail のデフォルト値からの情報に基づいた、可能なオプションをすべて表示します。このオプションを使用すると、どのユーザーの電子メールも取得されません。
  • -s — Fetchmail をサイレントモードで実行し、fetchmail コマンドの後にエラー以外のメッセージが表示されないようにします。
  • -v — Fetchmail を verbose モードで実行し、Fetchmail とリモート電子メールサーバー間のすべての通信を表示します。
  • -V — 詳細なバージョン情報の表示、グローバルオプションの一覧表示、電子メールプロトコルや認証メソッドなどの各ユーザーと使用する設定の表示を行います。このオプションを使用すると、どのユーザーの電子メールも取得されません。

13.3.3.7. 特別なオプション

これらのオプションは .fetchmailrc ファイルによく見られるデフォルト値を上書きする時に役立つ場合があります。
  • -a — Fetchmail は、新規または既読を問わず、すべてのメッセージをリモートの電子メールサーバーからダウンロードします。デフォルトでは、Fetchmail は新規メッセージのみをダウンロードします。
  • -k — Fetchmail はメッセージをダウンロードした後、リモートの電子メールサーバー上にメッセージを残します。このオプションを使用すると、メッセージをダウンロード後に削除するデフォルトの動作は上書きされます。
  • -l max-number-bytes — Fetchmail は一定のサイズを超えるメッセージはダウンロードせず、リモートの電子メールサーバー上に残します。
  • --quit — Fetchmail デーモンのプロセスを終了します。
その他のコマンドと .fetchmailrc オプションについては、fetchmail の man ページを参照してください。

13.3.4. MTA の設定

MTA は電子メールの送信に不可欠です。EvolutionMutt などの MUA を使用してメールの読み取り、作成を行うことができます。ユーザーが MUA から電子メールを送信すると、メッセージは MTA に渡されます。MTA は一連の MTA を通じて、メッセージが送信先に届くまで送信します。
ユーザーがシステムから電子メールを送信する予定でなくても、一部の自動化されたタスクまたはシステムプログラムは mail コマンドを使用して、ログメッセージを含む電子メールをローカルシステムの root ユーザーに送信する場合があります。
Red Hat Enterprise Linux 7 は、Sendmail と Postfix の 2 つの MTA を提供しています。どちらもインストールされている場合は、Postfix がデフォルトの MTA となります。Sendmail は Red Hat Enterprise Linux 7 では非推奨となることに注意してください。