fetchmailの設定
procmailの設定
メールのダウンロードと配送のテスト
crontab
qpopperのインストール
fetchmailの最新バージョンは5.5.6であり,ここから ダウンロードできる. RedHat 6.2Jに同梱されているfetchmailは5.3.1である. 今回はこちらを使ったが,特に問題はなかった. fetchmailは,インストール時に「Mail/WWW/News Tools」グループを選択するとインストールされる(らしい).
まずpop要求専用の"pop"というアカウントを作成しておく.
popでログインし,ホームディレクトリに次のような内容のファイルを作成する.
serverはメールサーバーのホスト名またはIPアドレスである.
protoはpop3で問題ないだろう.
userとpassにはメールサーバーにログインするときのアカウントとパスワードを書く.
keepはダウンロードしたメールをサーバーから削除しない意味になる.
削除する場合はflushとする.
mdaはダウンロードしたメールを配送するメール配送エージェントを指定する.
今回は以下で説明するprocmailを使った.
server mailserver
proto pop3
user akasaka
pass *******
keep
mda /usr/bin/procmail
このファイルを.fetchmailrcとして保存する(必ずpopのホームディレクトリに保存すること). .fetchmailrcには,このような設定を複数書くことができる. すなわち,複数のメールサーバーのメールを一度にダウンロードすることができるのである.
パスワードが直接書かれているので,他の人から見られないようにパーミッションを変更しておく.
% chmod g-r .fetchmailrc
% chmod o-r .fetchmailrc
% ls -a -l .fetchmailrc
-rw------- 1 pop pop 101 Nov 16 16:01 .fetchmailrc
procmailも「Mail/WWW/News Tools」グループを選択するとインストールされる(らしい).
RedHat 6.2Jに同梱されているバージョンは3.14である.
.fetchmailrcのときと同じく,popのホームディレクトリに次のような内容の.procmailrcを作成する.
なにやら呪文のようであるが,:0から次の:0の前までが一つの項目を表している.
最初の
:0
* ^To:.*akasaka
! akasaka
:0
* ^To:.*pop
! pop
:0
! akasaka
は「メールヘッダのToに"akasaka"という文字が含まれていたらakasakaというローカルアカウントに配送せよ」
という意味になる.
したがって,次は「同じく"pop"という文字が含まれていたらpopに配送せよ」という意味である.
最後の
:0
* ^To:.*akasaka
! akasaka
は,「上記のいずれにも該当しない場合はakasakaに配送せよ」という意味になる.
わざわざpopアカウント用の設定を加えているのは,fetchmailを定期的に実行するcrontabが,
ジョブを実行する毎にpopに送ってくるメッセージを除外するためである.
:0
! akasaka
ここまで設定したら,fetchmailを実行してメールが正しく配送されるかを確かめる.
popでログインしたままで/usr/bin/fetchmailを実行し,次のように表示されればOKである.
この場合は,メールサーバーに9通のメールがあり,うち1通が未読である.
既読の8通はダウンロード済みであり,未読の1通をダウンロードしたが,サーバーにメールを残したままである.
ダウンロードしたメールは/var/spool/mailにアカウント名と同じファイル名でスプールされる.
% /usr/bin/fetchmail
9 messages (8 seen) for akasaka at quantum.nucl.kyushu-u.ac.jp (24194 octets).
skipping message 1 not flushed
skipping message 2 not flushed
skipping message 3 not flushed
skipping message 4 not flushed
skipping message 5 not flushed
skipping message 6 not flushed
skipping message 7 not flushed
skipping message 8 not flushed
reading message 9 of 9 (3604 octets) ... not flushed
fetchmailの起動オプションについては,ここに
詳しい説明がある.
fetchmailにしてもprocmailにしても,実行したアカウントのホームディレクトリにある
.fetchmailrcおよび.procmailrcを参照する.
今回の場合はpopアカウントで実行するから,これらの設定ファイルが
popのホームディレクトリになければならないのである.
% pwd
/var/spool/mail
% ls -l akasaka
-rw-rw---- 1 akasaka mail 16754 Nov 17 09:44 akasaka
定期的にfetchmailを実行するためには,自動実行デーモンcrondを用いる.
crondがデーモンとして動いているかを確かめるには,
のようにすればよい.
動いていない場合は,ntsysvでcrondにチェックを入れ,Linuxを再起動する.
% ps aux | grep crond
root 450 0.0 0.5 1328 568 ? S Nov10 0:00 crond
pop 24451 0.0 0.5 1668 524 pts/0 S 11:50 0:00 grep crond
crontabはcronにジョブを設定したり,すでに設定されているジョブの内容を編集するための
コマンドである.
popアカウントでログインし,次のような内容のpopcron.txtというファイルを作成する(ファイル名は何でもよい).
これは「毎時0分,20分,40分に/usr/bin/fetchmailを実行せよ」という意味になる.
書式は
0,20,40 * * * * /usr/bin/fetchmail
となり,各項目に「*」を指定すると「毎*」の意味になる.
weekは0が日曜日である.
次のように入力すれば,popcron.txtの内容がcrondに登録される.
min hour day month week command
登録されたことを確認するには,crontabに-l(小文字のL)オプションを付けて実行する.
% cat popcron | crontab -
/var/log/cronにログが残されている.
このファイルはroot以外見ることはできない.
以下はtailコマンドでファイルの末尾を見た例である.
% crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (- installed on Fri Nov 17 10:09:37 2000)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0,20,40 * * * * /usr/bin/fetchmail
20分おきにfetchmailが実行されていることが確認できる.
% su
Password:
% tail cron
pop (11/17-11:20:00-24208) CMD (/usr/bin/fetchmail)
root (11/17-11:30:00-24313) CMD ( /sbin/rmmod -as)
root (11/17-11:40:00-24316) CMD ( /sbin/rmmod -as)
pop (11/17-11:40:01-24317) CMD (/usr/bin/fetchmail)
root (11/17-11:50:00-24448) CMD ( /sbin/rmmod -as)
pop (11/17-11:54:54-24455) LIST (pop)
root (11/17-12:00:00-24495) CMD ( /sbin/rmmod -as)
pop (11/17-12:00:00-24496) CMD (/usr/bin/fetchmail)
root (11/17-12:01:00-24599) CMD (run-parts /etc/cron.hourly)
root (11/17-12:10:01-24612) CMD ( /sbin/rmmod -as)
以上でメールのダウンロードおよび配送の設定が終了した. 次はクライアントからのpop要求に応えられるようにpopサーバーをインストールする.
qpopperは,WindowsやMacのメールクライアントであるEudoraで有名な QUALCOMM Incorporatedがリリースしているpop3サーバーである. ダウンロードサイトのリストはここにある. 最新バージョンは3.1のようであるが,安定バージョンである3.0.2をダウンロードした.
qpopperは暗号による認証(APOP認証)ができるようであるが,今回は使用しなかった.
まず,アーカイブを適当なディレクトリで解凍する.
qpopper3.0.2というディレクトリができるので,そちらに移動しmakeする.
% tar xvzf qpopper3.0.2.tar.gz
--enable-specialauthオプションを忘れないようにする.
これを忘れるとAPOP(Authenticated Post Office Protocol)による認証が必要となるため,
APOPに対応していないクライアントからはユーザー認証ができない.
makeが無事終了すると,popperというディレクトリができており,その中にpopperという
実行ファイルができている.
これを/usr/sbin/popperにコピーする.
% cd qpopper3.0.2
% ./configure --enable-specialauth (シャドウパスワードのサポート)
% make
% cp popper /usr/sbin
次に,inetd.confを次のように書き換える.
inetd.confを書き換えたので,inetdを再起動して変更を反映させる.
書き換え前 pop3 stream tcp nowait root /usr/sbin/tcpd in.pop3d
書き換え後 pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper -s
% ps ax | grep inetd
458 ? S 0:00 inetd
% kill -HUP 458
次にどのクライアントからのpop要求も受け付けるように,/etc/hosts.allowに以下の行を追加する.
popper: ALL
念のため,tcpdchk(/usr/sbin/tcpdchk)を実行してhosts.denyとhosts.allowの妥当性を確かめる. もし,popperのパスが間違っていたりするとエラーメッセージが表示される.
qpopperが正常に動いているかのテストは,クライアントから
として,
% telnet servername 110
が返ってくればOK.
クライアントのメーラーでpopサーバーにfukunm12を指定すれば,メールを読むことができる.
+OK QPOP (version 3.0.2) at fukunm12.****.****.kyushu-u.ac.jp starting.
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||