Fetchmail と qmail-pop3d



暫く家を留守にするときとか、 プロバイダにメールを溜めておくと容量が心配になるので
できればローカルの Linux マシンでメールを受信しておきたいなあと思ってました。 ついでに受信したメールを内部のホストから POP で吸い出せば良いかなあと。 一度 Linux マシンで受信することでバックアップもしやすいかもとか思って。

そんで、Fetchmail でメールを取り込んで、 qmail-pop3d とか使って POP サーバを立てることにしました。 Linux マシンは Vine-2.6rc4 が動いているので SMTP は Postfix が動作しているのですが、 あとあと qmail を動かすことを考えて、qmail もインストールしちゃうことに。

まずは Fetchmail のインストール

~% sudo apt-get update
~% sudo apt-get install fetchmail
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
  fetchmail
0 個のアップグレードパッケージ, 1 個の新規パッケージ, 0 個の削除/リプレースパッケージ, 
4  個の保留パッケージがあります。
取得パッケージ: 451kB のアーカイブを取得します。インストール後は 1147kB が使用されます。
取得:1 http://updates.vinelinux.org 2.6/i386/updates fetchmail 5.9.11-0vl2 [451kB]
取得完了: 451kB を 0s (1157kB/秒)
RPM コマンドを実行しています (-U)...
fetchmail                   ##################################################
次に Fetchmail を動かすユーザの設定。POP で受信する際に内部でパスワードが流れるのもあれ
なので別のユーザを作っちゃいました。別のユーザを作ると知らないうちにバックドアのアカウント
になってても、嫌なので SSH は証明書がないとログインできないようにもしてと。
~% sudo /usr/sbin/usradd -s /bin/zsh kawa2
~% sudo passwd kawa2
(パスワードは:pass)
このユーザでログインして、 $HOME/.fetchmailrc を作成。パーミッションは 600
~% /bin/su - kawa2
kawa2@~% vi ~/.fetchmailrc
defaults                            # デフォルト設定
  protocol pop3                     # プロトコルは POP3
  keep                              # メールを受信した後メールを消さない
  no rewrite                        # ヘッダを書き換えない
  no mimedecode                     # メールをデコードしない
  mda "/usr/bin/procmail"           # MDA として procmail を指定

poll 172.16.27.2                    # POP サーバのIPアドレス
 username "kawa" password "passwd"  # POP サーバから受信するアカウント
 is kawa2                           # kawa2 ユーザに蓄積
kawa2@~% chmod 600 ~/.fetchmailrc
次に procmail の設定。受信したメールは全て Maildir の下に振り分けるように設定。
kawa2@~% vi ~/.procmailrc
VERBOSE=off
MAILDIR=$HOME/Maildir/
DEFAULT=/home/kawa2/Maildir/

:0
*
/home/kawa2/Maildir/
Maildir にいれるようにする。Maildir は qmail をインストールした後に作成する予定。

次に qmail のインストール

Debianでは色々面倒そうだ。
まだ調べ中なので、未完成。

でも単純にパッケージを削除しようとすると、関連パッケージまで削除されちゃう。 例えば、eximとqmailを入れ替えようとするのに単純にexim削除とすると、 apache等がぞろぞろと。
その場合の解決方法が以下。

$ sudo dpkg --force-depends --purge exim
$ sudo dpkg -i qmail.deb
こりゃほかでも使える技ですな。

Maildir の作成

kawa2@~% /var/qmail/bin/maildirmake Maildir

あとは qmail-pop3d だけ動作させて OK と

ユーザ kawa2 で fetchmail を実行。
kawa2@~% fetchmail
215 messages for kawa at 172.16.27.2 (137557 octets).
reading message kawa@172.16.27.2:1 of 215 (628 octets) 
procmail: Couldn't create "/var/spool/mail/kawa2" not flushed
reading message kawa@172.16.27.2:2 of 215 
(756 octets) procmail: Couldn't create "/var/spool/mail/kawa2" not flushed
(以下、ずらずら〜とエラーが)
このエラーは /var/spool/mail/kawa2 がないのでエラーがでていたのでとりあえず作成。
~% sudo touch /var/spool/mail/kawa2
~% sudo chown kawa2.mail /var/spool/mail/kawa2
~% sudo chmod 660 /var/spool/mail/kawa2
正しい解決方法なのかはわからないけど、あるだけで良いみたい。 次はエラーがでずに終了。

これで取り込んだメールが /home/kawa2/Maildir/new の下に格納されているので、 別のマシンのメーラを設定して、 kawa2 ユーザで POP 受信すればメールが取得できると。

次に Fetchmail が定期的にメールを受信してくるように cron の設定。 デーモンモードもあるみたいなんだけど、 起動時に立ち上がる設定とか考えるのが面倒だったので、とりあえず cron で。
kawa2@~% crontab -e
*/10 * * * * /usr/bin/fetchmail > /dev/null 2>&1
これで10分おきにメールが kawa2 の下に溜まってくると。 無事に動くことが確認できたら .fetchmailrc の keep をコメントアウトして、 サーバ側のメールを削除するように設定変更。

IMAP でほげほげしたい先輩もいたけど、多分似たような感じでできるんではないでしょうかヽ(´ー`)ノ 転載元
Fetchmail と qmail-pop3dを目指す

2004/04/02