このページでは、 Fetchmail Mail Retrievalの設定方法について説明します。 別のサーバーから電子メールをダウンロードして、システム上のアドレスに配信するプログラム。
コンテンツ
Fetchmailの概要
Fetchmailは、POP3またはIMAPプロトコルを使用して別のサーバーから電子メールをダウンロードし、システム上のメールボックスに配信する比較的単純なプログラムです。独自のメールサーバーを実行したいが、何らかの理由でメールを直接配信できない場合に最も便利です。解決策は、FetchmailがPOP3などのプロトコルを使用して定期的に電子メールをダウンロードし、システム上のSMTPサーバーに接続して、直接送信されたかのように配信することです。
たまにしかアクティブにならないインターネットへのダイヤルアップ接続としてのシステムの場合、通常、メールを直接配信することはできません。固定IPアドレスがない場合も同様です。このような状況でも、ドメインのメールをISPのメールボックスに送信し、Fetchmailを使用して定期的にシステムに転送することで、独自のメールドメインとサーバーを実行できます。
独自のインターネットドメインを持っていない場合でも、Fetchmailを使用してISPのドメインの電子メールアカウントから電子メールをダウンロードできます。 pine、elm、Userminなどの多くのメールクライアントは、POP3またはIMAPプロトコルを介してメッセージをダウンロードする代わりに、/ var/mail内のUnixメールファイルを直接読み取ります。これらのプログラムのいずれかを使用するには、電子メールをシステムにダウンロードして、ローカルユーザーに配信する必要があります。
Fetchmailは、異なるサーバー上の複数のメールボックスから電子メールをダウンロードして、システム上の異なるアドレスに配信できます。ドメイン内のすべてのアドレスへの電子メールが単一のメールボックスに結合されている場合、Fetchmailは通常、システム上の適切なユーザーに配信するためにそれを分離できます。これはおそらく最も便利な機能ですが、残念ながら100%信頼できるわけではありません。
Fetchmailプログラムは、POP2、POP3、およびIMAPプロトコルを使用してメールを取得できます。そのうちの1つは、ほとんどすべてのメールサーバーでサポートされます。また、SMTPプロトコルのETRNモードを使用して、システムへの配信を待機しているキューに入れられたすべてのメッセージをメールサーバーに強制的に配信させることもできます。残念ながら、ExchangeやLotus Notesなどの独自の電子メールシステムや、HotmailなどのWebベースの電子メールサービスからのメールの取得は、標準プロトコルの1つもサポートしていない限りサポートされていません。
定期的なチェックを実行するために、Fetchmailは通常、定期的にすべてのメールサーバーに接続するバックグラウンドデーモンプロセスとして実行されます。または、選択した日時にCronジョブから実行することも、コマンドラインやその他のスクリプトから手動で開始することもできます。
Fetchmailは、多くの場合、システム管理者ではなく個々のユーザーによって実行され、それぞれがホームディレクトリに独自の.fetchmailrc構成ファイルを持っています。実行にroot権限を必要としないため、マルチユーザーUnixシステムでは、各ユーザーは自分のリモートメールボックスからメールをダウンロードするようにFetchmailを安全に構成できます。これは、各ユーザーが独自の構成を使用する独自のFetchmailデーモンプロセスを実行している可能性があることを意味します。
または、単一の構成ファイルを使用し、Fetchmailをrootとして実行して、システム上のすべてのユーザーの電子メールをダウンロードすることもできます。 Linuxボックスの唯一のユーザーである場合、またはドメイン全体の電子メールをダウンロードしてローカルユーザーに再配布する場合は、このオプションの方が理にかなっています。通常、/ etc/fetchmailrcはグローバル構成ファイルとして使用されます。
実際、Fetchmailは、個々のユーザーの構成ファイルとグローバルファイルの両方で同時に実行することができます。ただし、それを構成するためのWebminモジュールは、いずれかのモードを使用することを想定しています。
Fetchmailメール取得モジュール
Fetchmailを管理するためのWebminのモジュールは、サーバーカテゴリにあります。アイコンを初めてクリックすると、メインページにシステム上のすべてのユーザーのFetchmail構成が表示されます。ホームディレクトリに.fetchmailrcがあるユーザーごとに、ユーザーの名前とファイルのすべてのサーバーが、各ユーザーとログインするユーザーに接続するために使用されるプロトコルとともに表示されます。図33-1に例を示します。
Fetchmailモジュールのメインページ
Webminがfetchmailプログラムを見つけられない場合、メインページに代わりにエラーメッセージが表示されます。これは、インストールされていないか、モジュールが間違った場所を探していることが原因である可能性があります。ほとんどのLinuxディストリビューションには、Fetchmail用のパッケージが付属しています。CDまたはWebサイトを確認し、ソフトウェアパッケージモジュールを使用してインストールしてください。
システム上の単一のFetchmail構成ファイルのみを管理する場合は、今がモジュールをそのモードに切り替えるときです。システム上のすべてのユーザーの構成を管理する場合を除いて、これが最良の選択です。これにより、デーモンプロセスを設定して、電子メールを定期的にチェックし、ローカルメールボックスにダウンロードできます。これは、ほとんどの管理者がFetchmailを使用する目的です。
単一のファイルを使用するようにモジュールを変更するには、次の手順に従います。
- Module Configをクリックします メインページの左上隅にあるリンク。
- 編集するFetchmail構成ファイル フィールドで、2番目のラジオボタンを選択し、その横のフィールドに構成ファイルのパスを入力します。すでにFetchmail構成ファイルがある場合は、当然そのパスを入力する必要があります。そうでない場合は、/ etc/fetchmailrcで問題ありません。
- 保存をクリックします フォームの下部にあるボタンをクリックして、モジュール構成を更新し、メインページに戻ります。
単一構成ファイルモードの場合、そのファイルのサーバーのみがファイル名でメインページに表示されます。その下には、Fetchmailデーモンを起動して、リストされているサーバーとアカウントを定期的にチェックするためのフォームがあります。これについては、この章の後半で詳しく説明します。
モジュールは個々のユーザーのFetchmailデーモンの開始をサポートしていないため、モジュールを使用して複数の個々の構成ファイルを管理する場合は、Cronジョブを作成するか、ユーザーごとの構成のデーモンを開始する必要があります。最も簡単な方法は、Scheduled Cron Jobsモジュールを使用して、選択したスケジュールでfetchmailコマンドを実行するユーザーごとにジョブを作成することです。受信する電子メールの量にもよりますが、通常は30分または30分に1回で十分です。 fetchmailプログラムは、デフォルトで、それを実行するユーザーのホームディレクトリにある〜/.fetchmailrcファイルを使用します。
ユーザーが独自のFetchmail構成を管理し、Webminと密接に関連しているUserminで独自のデーモンを起動するために使用できる別のパッケージ。
Fetchmailはすべての種類のUnixで利用可能であり、ほとんど同じように機能するため、このモジュールも同じように動作します。唯一の違いは状態の確認です 特定のネットワークインターフェイスがダウンしているかどうかのチェックをオフにするフィールドは、少なくとも現在のバージョンのFetchmailでは、LinuxおよびFreeBSD以外のオペレーティングシステムでは機能しません。このフィールドは常に表示されますが、他のバージョンのUnixでは使用しないでください。
確認する新しいメールサーバーを追加する
Fetchmailがメールサーバーからメールをダウンロードする前に、そのエントリを設定に追加する必要があります。これを行う手順は次のとおりです。
- モジュールのメインページで、新しいサーバーの追加をクリックします。 既存のサーバーの表の下にあるリンク。複数のユーザーの構成を管理している場合は、サーバーをリストに追加するユーザーのセクションにあるリンクを使用する必要があります。または、ユーザー用のFetchmailサーバーを追加 ボタンを使用して、隣接するフィールドに入力したユーザーにサーバーを追加できます。ユーザーがまだサーバーを定義していない場合は、この方法を使用する必要があります。
- 使用するリンクやボタンに関係なく、新しいサーバーの詳細を入力するために、以下のスクリーンショットに示すフォームが表示されます。
- サーバー名 フィールドに、このメールサーバーエントリの一意の名前を入力します。通常、これは mail.yourisp.comなどの実際のホスト名になります 。
- このサーバーをスケジュールどおりにチェックする場合は、ポーリングが有効になっていることを確認してください フィールドがはいに設定されている 。それ以外の場合は、Webminまたはコマンドリンクから手動で実行した場合にのみチェックされます。
- 連絡するメールサーバー フィールドは、同じホスト上の複数のポートまたはプロトコルに接続する必要がある場合に役立ちます。 サーバー名 一意である必要があります。サーバー名に異なる値を入力することによってのみ、同じ実際のメールサーバーに対して2つのエントリを作成できます( mail.yourisp.com-1 など)。 およびmail.yourisp.com-2 )そして、サーバーの実際のホスト名をこのフィールドに入力します。ただし、この状況は非常にまれであるため、通常はこのフィールドをサーバー名と同じに設定したままにしておくことができます。 。
- プロトコルから メニューで、このサーバーに使用するメール取得プロトコルを選択します。最も一般的なのはPOP3とIMAPです。 ISPまたはメールサーバーの管理者は、どちらを使用するかを教えてくれます。
- メールサーバーが選択したプロトコルに非標準ポートを使用している場合、[デフォルト]オプションは[*サーバーポート*]フィールドでは機能しません。代わりに、 1110などの正しいポート番号を入力する必要があります 。
- 状態の確認 フィールドは、ネットワークインターフェイスがダウンしている場合にこのサーバーの定期的なチェックを防ぐために使用できます。これは、たまにしかアクティブにならないインターネットへのダイヤルアップ接続があり、アクティブでないときにメールサーバーに接続しようとする無駄な試みを避けたい場合に便利です。 常に確認する場合 が選択されている場合、Fetchmailは常に接続を試みます。ただし、インターフェースが起動している場合のみ が選択されている場合、その隣のフィールドに入力されたネットワークインターフェイスがダウンしている場合、接続は確立されません。ダイヤルアップ用のプライマリPPPインターフェイスは、通常、ppp0という名前です。アクティブなインターフェイスのリストについては、ネットワーク構成モジュールを参照してください。インターフェイス名だけでなく、ネットワークとネットマスクを入力して、実行するチェック用のインターフェイスの有効なローカルアドレスの範囲を指定する必要があります。これは、複数の異なるISPにダイヤルアップするが、特定のISPに接続している場合にのみFetchmailがメールをチェックするようにしたい場合に便利です。ほとんどのISPは、 203.51.0.0 / 255.255.0.0 など、特定のクラスCまたはBネットワーク内のアドレスをすべての顧客に割り当てます。 。 Fetchmailがインターフェースが稼働している間チェックできるようにするには、IPアドレスに関係なく、 0.0.0.0と入力するだけです。 ネットワークフィールドとネットマスクフィールドの両方に入力します。これはすべての可能なアドレスをカバーします。
- メールサーバーのユーザーの詳細 セクションに、リモートユーザーのようにメールサーバーに接続するためのログイン名を入力します 分野。
- ユーザーの正しいパスワードをリモートパスワードに入力します 分野。
- ローカルユーザー フィールドは、取得したメッセージを送信する電子メールアドレスを入力するためのものです。通常、これは jcameronのようなローカルユーザー名です。 、ただし、 [email protected]などの別のサーバー上のアドレスにすることもできます。 。複数のユーザー名を入力することもできます。その場合、Fetchmailは、ダウンロードされた各メッセージの名前を特定しようとします。これは、複数のアドレスの電子メールをISPメールサーバーの同じメールボックスに転送し、取得したメッセージを分割して正しいローカルメールボックスに配信する場合に役立ちます。受信者がリストにないメッセージをFetchmailが検出すると、送信者に返送されます。最後の方法は、ローカルユーザーに_*_と入力することです。 フィールド。名前が同じであるシステム上のローカルユーザーに各メッセージを配信するようにFetchmailに指示します。これは、メッセージの宛先アドレスのユーザー名部分です。
- ダウンロード後にFetchmailでメールサーバーからメッセージを削除する場合は、メッセージをサーバーに残しますか?を設定します。 いいえへのフィールド 。メールボックスへのアクセスに別のメールクライアントが使用されていない限り、これは、メールファイルのサイズに制限がある可能性があるISPのサーバーに保存されるすべてのメッセージの追加コピーを防ぐための最良のオプションです。 はいを選択する Fetchmailは受信したメッセージを追跡し、メールボックス内の新しいメッセージのみをダウンロードします。実際には、サーバーで削除されたメッセージがローカルで削除されないことを除いて、リモートメールボックスをローカルメールボックスに同期しています。
- リモートサーバーにメッセージを保持している場合は、[*常にすべてのメッセージをフェッチしますか?*]フィールドをいいえに設定する必要があります。 。それ以外の場合は、はいに設定します メールボックス内のすべてのメッセージがダウンロードされることを保証します。
- 接続する前に実行するコマンド フィールドを使用して、メールサーバーに接続する直前にFetchmailによって実行されるシェルコマンドを入力できます。この機能の最も一般的な使用法の1つは、コマンドを実行してSSHトンネルを設定し、直接接続できないサーバーへのアクセスを許可することです。ただし、これは非常に複雑になる可能性があるため、ここでは説明しません。通常、このフィールドは空のままにしておくことができます。
- 同様に、切断後に実行するコマンド フィールドは、Fetchmailがリモートメールサーバーからログオフした後に実行されるシェルコマンドを入力するためのものです。これは、「before」コマンドによって開始されたSSHプロセスを強制終了するためによく使用されます。
- 最後に、作成をクリックします ボタンをクリックして、新しいサーバーを保存します。これ以降、定期的なチェックを行うときにFetchmailが実行されるたびに使用されます。
サーバー作成フォーム
新しいサーバーエントリを作成すると、モジュールのメインページに一覧表示されます。編集するには、ポーリングするサーバーでサーバー名をクリックするだけです。 列。ブラウザに編集フォームが表示されます。いずれかのフィールドを変更して、[保存]をクリックします Fetchmail構成ファイルを更新します。
削除を押すと、サーバーを削除できます。 編集フォームのボタン。ただし、通常はポーリングを有効にしますか?を変更することをお勧めします。 いいえへのフィールド 、サーバーを効果的に無効にします。 メールのダウンロードセクションで説明されているように、Fetchmailは、そのサーバーをチェックするように明示的に指示しない限り、Fetchmailに接続しません。 下。
Fetchmailで同じサーバー上の複数のメールボックスをチェックし、追加のメールボックスから別のユーザーにメールを配信することができます。これは、同じサーバーに対して複数の構成エントリを作成することで実行できますが、より簡単で優れた方法があります。
- モジュールのメインページで、チェックするメールボックスを追加するサーバーの名前をクリックします。
- 別のユーザーを追加をクリックします ボタン。編集フォームが再表示されますが、空のメールサーバーユーザーの詳細が追加されます 下部のセクション。
- 空のリモートユーザーを入力します 、リモートパスワード 、ローカルユーザー 上記の手順で説明したように、新しいセクションのその他のフィールド。
- 保存を押します ボタン。モジュールのメインページに戻り、サーバーの横に新しいリモートユーザー名とローカルユーザー名が表示されます。
1つのメールボックスから複数のユーザーのメールを抽出する機能はFetchmailの最も便利な機能の1つですが、100%信頼できるわけではありません。すべての場合において、プログラムが電子メールの送信先アドレスを正確に判別できる方法はありません。通常、To:またはCc:ヘッダーには宛先アドレスが含まれますが、メーリングリストから受信したメッセージの場合はそうではありません。代わりに、To:ヘッダーにリストのアドレスが含まれます。 Fetchmailがメッセージの実際の宛先アドレスを見つけるためにチェックしようとする他のメールヘッダーがありますが、それらは常に利用できるとは限りません。
電子メールメッセージがSMTPプロトコルを介してサーバーに直接配信される場合、送信元システムは宛先サーバーにメッセージの実際の宛先アドレスを通知します。残念ながら、アドレスは実際のメッセージに含まれている必要はありません。代わりに、サーバー間のSMTP会話の一部として指定されます。電子メールがメールボックスに配信されると、この情報は失われ、正確に復元できなくなります。
Fetchmailがメールボックスから電子メールをダウンロードして単一の受信者に配信している場合にのみ、正しいことを行うことが保証されます。この場合、すべてのメッセージが単一のローカルメールボックスに送信されるため、各メッセージの宛先アドレスを確認する必要はありません。
メールのダウンロード
少なくとも1つのサーバーエントリを作成したら、このモジュールを使用してFetchmailをサーバーに接続し、メッセージをダウンロードできます。このモジュールを使用して、構成ファイル内のすべてのサーバーから電子メールを取得することも、単一のサーバーから電子メールを取得することもできます。それらすべてを確認するには、次の手順に従います。
- モジュールのメインページで、すべてのサーバーを確認をクリックします サーバーの表の下にあるリンク。複数のユーザーの構成を管理している場合、このリンクは各ユーザーのテーブルの下に表示されます。
- fetchmailコマンドの出力を示すページが表示され、Fetchmailがメッセージをダウンロードするときにシステムとリモートメールサーバー間のPOP3またはIMAPプロトコル交換を確認できます。エラーが発生した場合(接続の失敗やパスワードの誤りなど)、出力に表示されます。
- ダウンロードされたメッセージは、サーバー構成エントリで指定されたローカルアドレスに配信されます。デフォルトでは、メールはシステム上のメールサーバーにSMTP接続することで送信されます。メールの配信に使用される実際のSMTPプロトコルコマンドが出力ページに表示されるため、エラーが発生したかどうかを確認できます。システムで実行されているメールサーバーがない場合、または指定されたローカルアドレスの電子メールにアクセスしない場合、配信が失敗する可能性があります。これが発生した場合、Fetchmailはバウンスメッセージを送信者に返送しようとします。
ポーリングが有効になっているサーバーでも、単一のサーバーでメールをチェックすることもできますか? フィールドをいいえに設定 。これを行うプロセスは次のとおりです。
- モジュールのマニュアルページで、サーバーの名前をクリックして編集フォームを表示します。
- このサーバーを確認をクリックします ページ下部のボタン。
- 上記のように、メッセージをダウンロードして配信するときのFetchmailからの出力を示すページが表示されます。
Fetchmailデーモンの実行
モジュールを使用して単一のFetchmail構成ファイルを管理している場合は、バックグラウンドプロセスを開始して、そのファイル内のサーバーとメールボックスを定期的にチェックすることができます。これを行う手順は次のとおりです。
- メインページの下部には、 Start Fetchmail Daemonというラベルの付いたボタンがあります。 。その隣の説明には、デーモンがチェックの間に待機する秒数を入力するためのテキストフィールドがあります。短い期間(60秒など)は、電子メールをより早く受信することを意味しますが、頻繁なチェックによって帯域幅とCPU時間が消費されるという犠牲が伴います。
- チェック期間に入ったら、 Start Fetchmail Daemonを押します。 ボタンをクリックして、バックグラウンドのfetchmailプロセスを開始します。ページが再表示されますが、ボタンに Stop Fetchmail Daemonというラベルが付いています。 。
名前が示すように、新しい停止をクリックできます 実行中のデーモンプロセスを強制終了するには、いつでもボタンを押します。モジュールが実行されなくなったことを検出すると、開始 ボタンが再び表示されます。
システムが再起動されると、もちろんFetchmailデーモンは停止します。起動時に自動的に再開するには、起動とシャットダウンで説明されているように起動アクションを作成する必要があります。このアクションでは、コマンドfetchmail -d intervalを実行する必要があります。 -f configfile 、間隔 チェック期間とconfigfileに置き換えられました 構成ファイルへのフルパスを使用します。
グローバル設定の編集
Fetchmailモジュールを使用して、構成ファイル内のすべてのサーバーに適用されるオプションを編集することもできます。これは、ネットワークインターフェイスがダウンした場合に連絡が取れないようにしたり、デフォルトのプロトコルを定義したりする場合に役立ちます。これらのグローバルオプションを編集するには、次の手順に従います。
- モジュールのメインページで、デフォルト設定の編集をクリックします サーバーの表の下にあるリンク。モジュールが複数のユーザーのFetchmail構成を管理するために使用されている場合、このリンクは、サーバーが定義されている各ユーザーのテーブルの下に表示されます。いずれにせよ、ブラウザはグローバルオプションを編集するためのページを表示します。
- すべてのサーバーにデフォルトのプロトコルを設定するには、プロトコルから1つを選択します メニュー。最も一般的なのはPOP3とIMAPで、前者はデフォルトの場合に使用されます オプションが選択されています。 プロトコルの場合 サーバー編集または作成フォームのフィールドがデフォルトに設定されている 、ここで選択したプロトコルが使用されます。
- Fetchmailが接続するデフォルトのポートを定義するには、サーバーポートに入力します 分野。通常、これはデフォルトのままにしておくのが最善です。 ただし、この場合、プログラムはサーバーごとに選択されたプロトコルに適切なポートを使用します。 サーバーポートの場合のみ サーバーフォームのフィールドはデフォルトに設定されています ここに入力した値が使用されます。それ以外の場合は、入力した値でそのサーバーに上書きされます。
- 状態の確認 フィールドは、特定のインターフェースがダウンしている場合、または正しいIPアドレスを持っていない場合に、Fetchmailがサーバーに接続するのを防ぐために使用できます。 確認する新しいメールサーバーの追加の手順 上記のセクションでは、このフィールドの仕組みと入力内容について説明しています。 Fetchmailがチェックしているサーバーはすべて同じネットワーク接続を介してアクセスできる可能性が高いため、チェックをグローバルに条件付きで設定する方が、個々のサーバーに対して繰り返し設定するよりも理にかなっています。
- 保存をクリックします ボタンをクリックして、新しいグローバル設定をアクティブにします。
モジュールを使用して複数のユーザーのFetchmail構成を管理している場合、すべてのユーザーに適用されるオプションを定義する方法はありません。一度に1人のユーザーのグローバル設定のみを定義します。
モジュールアクセス制御
Webminユーザーが説明しているように、Webminユーザーがアクセスを許可されたモジュールで実行できることを制限することができます。 Fetchmailモジュールの場合、Fetchmail構成を編集できるUnixユーザーを制限できます。ユーザーが作成されたら、アクセスをさらに制限する手順は次のとおりです。
- Webminユーザーモジュールで、ユーザー名の横にあるFetchmailMailRetrievalをクリックします。これにより、モジュールアクセス制御フォームが表示されます。
- モジュール構成フィールドを編集できますか?を変更します いいえ 、Webminユーザーがモジュールを単一ファイルモードに切り替えたり、Fetchmailプログラムへのパスを変更したりするのを停止します。
- fetchmailの設定を編集できます フィールドは、このWebminユーザーがFetchmailサーバーを編集できるUnixユーザーを決定します。使用可能なオプションとその意味は次のとおりです。すべてのユーザー 任意のユーザーの構成を編集できます。これがデフォルトです。 現在のWebminユーザー ユーザー名がWebminユーザーと同じUnixユーザーのみを編集できます。このオプションは、ユーザーが独自のFetchmail設定を編集できるようにする場合に役立ちますが、Userminプログラムの方が適しています。 ユーザーのみ このオプションの横のテキストフィールドに入力されたユーザーの構成のみを編集できます。 ユーザーを除くすべて 隣接するテキストフィールドに入力するユーザーを除くすべてのユーザーのFetchmail設定を編集できます。
- 保存をクリックします ボタンをクリックして、新しいモジュール制限をアクティブにします。
この種のアクセス制御は、モジュールが個々の.fetchmailrcファイルの編集を許可するように構成されている場合にのみ役立ちます。単一構成ファイルモードでは、制限は適用されません。
構成
Fetchmailの構成問題が発生した場合...
SELinux対応サーバーでは、Postfix / Dovecot / Fetchmailを誤って設定し、Fetchmailが期待どおりに機能しないようにするのは簡単です。 rootとしてログインし、次の方法でSELinuxを一時的にオフにします:
setenforce 0
Fetchmailが機能し始めたら、デバッグを開始する場所がわかります...