FetchMailの導入
Fetchmailは、いろいろなメールサーバからメールを検索(取得)できるソフトであり、取得したメールを振り分けたり、必要に応じてSMTPサーバに転送することもできます。
おやじがFetchmailを導入した目的は、以下のとおりです。
- プロバイダ経由のメールとオリジナルドメインのメールを一元的に扱いたい。
- せっかくウイルススキャナー付のSMTPサーバがあるのだから、これでプロバイダ経由のメールのウイルススキャンができないか。(奥さんが駆除操作をびくびくしながらやっている)
一般的に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
|
設定ファイルを保存したら、パスワードが書かれているので、下記でパーミッションを変更しておきます。
■Fetchmailの試験
上記で、「flush」として、プロバイダからメール受信後に削除するようにした場合は、メールが紛失する恐れもあるので、試験完了までは「keep」しておきましょう。
試験は簡単です。試験に先立ち、あらかじめプロバイダアカウントにテストメールを送り込んでおきます。その後、mailscanユーザで「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用に変更。