16.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 が読み込むことができるようにメールボックスに配置します。

16.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 つの項で説明します。

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

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

16.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 秒が仮定されます。

16.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 暗号化をアクティベートします。
  • user "<username>"<username> の箇所を、Fetchmail がメッセージの取得に使用するユーザー名に置き換えます。このオプションは、他のすべてのユーザーオプションの前に付ける必要があります。

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

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

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

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

16.3.3.7. 特別なオプション

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