FetchMailの導入

Mail System Postfix SMTP-Auth SMTP-Auth+TLS SMTP+Virtual Qpopper Qpopper/SSL Courier-IMAP FetchMail Procmail WebMail AntiVirus Relay Mail

Fetchmailは、いろいろなメールサーバからメールを検索(取得)できるソフトであり、取得したメールを振り分けたり、必要に応じてSMTPサーバに転送することもできます。
 おやじがFetchmailを導入した目的は、以下のとおりです。

 一般的にFetchmailは、Procmailと組み合わせて使われますが、おやじは、これをPostfixに転送することにより、オリジナルドメインのメールと同様に、ウイルススキャンさせると同時に各ユーザへ配送させました。

■Fetchmailの設定

RedHatでは、fetchmailはプレインストールされているので、設定のみで使用できます。一応、whichコマンドでインストールされているか確認します。
 $ which fetchmail
 /usr/bin/fetchmail
上記のように、fetchmailのパスが表示されればインストールされています。
ここでは仮に2つのアカウントから、メールを自動受信させる設定を行っています。通常、設定は各ユーザのホームディレクトリにある「.fetchmailrc」で行いますが、おやじは自動受信専用のユーザを設け、このユーザで家族全員のプロバイダメールを受信させ、Postfixに転送することにより、あたかも外部のSMTPサーバから受信したかのごとく動作させ、ウイルススキャンと各人への配送を行っています。このユーザ(mailscanと仮定)を通常のユーザ登録と同様に作成し、ホームディレクトリに「.fetchmailrc」を作成、設定していきます。
 # su mailscan
 $ cd ~
 $ vi .fetchmailrc

 set postmaster oyaji
 set nobouncemail

 defaults 
 protocol pop3
 keep
 no mimedecode
 smtphost localhost

 poll mail.hoge.com user oyajiisp password xxxxxxxx is oyaji here
 poll mail.hoge.com user okusanisp password yyyyyyyy is okusan here
ここで利用しているコマンドの意味は下記のとおりです。家族が利用しているメールは全て同じプロバイダのため、共通部分をdefaultでまとめて記述していますが、アクセス条件等が異なる場合は、メールアドレス毎に個別に書けばいいでしょう。poll以下は、アカウント毎に記述します。また、fetchmailはデーモン起動もできますが、常時動かしておくのがいやだったので、別途、cronでまわすことにしました。デーモン起動するには、先頭にset daemon 300」と何秒おきにメールをチェックするかを書けばできます。(300であれば5分おき)

 set postmaster oyaji #エラーメールの送信先(oyaji)を設定  set nobouncemail # エラーメールを送信者に返さないための設定
 defaults # 以下が共通設定であることを宣言  protocol pop3 # メールサーバのプロトコルを指定(pop3、imap等)  keep # メールを削除するかしないかの設定(メールを削除する場合はflush)  no mimedecode # メールサブジェクトをデコードしないよう(文字化けしないよう)に設定  smtphost localhost # 受信したメールをlocalhost(Postfix)渡すための設定
 poll mail.hoge.com # poll [popサーバ名]  user oyajiisp # user [ユーザ名]  password xxxxxxxx # password [パスワード]  is oyaji here # is [転送先オリジナルドメインのユーザ名] here
設定ファイルを保存したら、パスワードが書かれているので、下記でパーミッションを変更しておきます。
 $ chmod 600 .fetchmailrc

■Fetchmailの試験

 上記で、「flush」として、プロバイダからメール受信後に削除するようにした場合は、メールが紛失する恐れもあるので、試験完了までは「keep」しておきましょう。

 試験は簡単です。試験に先立ち、あらかじめプロバイダアカウントにテストメールを送り込んでおきます。その後、mailscanユーザで「fetchmail」と入力します。

 $ fetchmail

 これでメールボックスにメールが取り込まれるはずです。クライアントからメールが受信でき、ウイルススキャンできていることを確認しましょう。

■Fetchmailの自動起動設定

 試験が完了したら、メール受信後の処理(keep/flush)を設定した上で、crontabを編集します。おやじは、そんなに急ぐ必要も無く、無駄なトラヒックを流すことも無いので、10分毎に読みにいくよう、下記のようにcrontabに追加設定しました。(下記は、rootで操作するとき。mailscanユーザで操作するときは、「-u mailscan」は指定しないこと。)

 # crontab -u mailscan -e
 0-59/10 * * * * /usr/bin/fetchmail > /dev/null 2>&1

■おまけ

ここでは、各人の既存のオリジナルドメインのアカウントに取り込んでいますが、クライアントでどちらのアカウントからきたのか識別が面倒なので、専用にプロバイダメール受信専用アカウントを設け、fetchmailで転送先をこちらにすれば識別は簡単です。但し、いずれの場合も、reply時の送信アドレスが転送先アカウントになってしまうという不便さはあります。といっても、おやじはこれで意図的にプロバイダアカウントからオリジナルドメインアカウントへの移行を推進し、コストダウンのためプロバイダアカウントの解約をしようと考えています。(契約アカウント1個は残りますが)
 Outlook Expressの設定を工夫すれば、おやじの企てには反しますが、従来のプロバイダ用アカウントのサーバ(POP3・SMTP)関係の設定を、fetchmailの転送先として作成したユーザのメールを受信するようにすれば、従来と変わらない運用ができることがわかりました。具体的には、以下のようにすればいいでしょう。

  ・サーバ情報のサーバ情報を受信メールのみオリジナルドメイン用サーバに変更。
  ・受信メールサーバのアカウントとパスワードをオリジナルドメイン用に変更。
  ・送信メールサーバは、認証が必要にチェックマーク。
  ・詳細設定のサーバのポート番号は、SSL用に変更。
 
Mail System Postfix SMTP-Auth SMTP-Auth+TLS SMTP+Virtual Qpopper Qpopper/SSL Courier-IMAP FetchMail Procmail WebMail AntiVirus Relay Mail