fetchmail and dovecot

fetchmail でメールをサーバへ持ってきて、dovecot(POP3/IMAP) でそのメールを参照できるように設定をしましたが、fetchmailではいくつか自分にとって不都合な面があることが判明したので、dovecotだけ使うことにしようかと考えています。要はメールの整理、検索ができればいいので、別アカウントで取得したメールをIMAPサーバへコピーすればいいという考えです。

以下、設定メモ

1. postfix設定 (必要ないような気がする)
2. dovecot設定
3. fetchmail設定

# system-switch-mail
# vi  /etc/postfix/main.cf
inet_interfaces = localhost
home_mailbox = Maildir/
# vi /etc/dovecot.conf
protocols = imap
default_mail_env = maildir:~/Maildir

メールをとりにいくサーバを pop.domain.org とし、ユーザー名 hiro345、パスワード changeitだとしています。

$ vi ~/.fetchmailrc
set logfile "/home/hiro345/.fetchmail.log"
set postmaster hiro345
set no bouncemail

defaults
     protocol pop3
     keep
     no mimedecode
     smtphost localhost

poll pop.domain.org
     protocol pop3
     user hiro345
     password changeit
# chkconfig --level 345 postfix on
# chkconfig --level 345 dovecot on
# /etc/init.d/postfix start
# /etc/init.d/dovecot start
# su - hiro345
$ fetchmail

DamageControl on Fedora Core 4

DamageControlをFedora Core 4にインストールしてみたが、かなりはまりました。WEB+DB PRESS Vol.28の記事どおりにインストールすれば楽勝かと思ったら、そんなことはありませんでした。最初に最新版が動作するか試したのがそもそもいけませんでした。それで、バージョンの整合性の問題かなんだかわからなくなって色々ためしてみたところ、どこを修正すればわかったので、とりあえずできたところまでメモ。

まずは、RubyGemsをインストール。TARボールから普通にインストールすれば /usr/lib/site_ruby/と/usr/lib/ruby/にライブラリがインストールされます。

次にRubyGemsを使って rails, rscm, damagecontrol をバージョン指定してインストールします。

  # gem install rails -v 0.12.1
  # gem install rscm -v 0.2.1.1404
  # gem install damagecontrol -v 0.5.0.1404

このままだと、clean_logger.rbでエラーが発生するので修正します。

  # cd /usr/lib/ruby/gems/1.8/gems/
  # vi activesupport-1.0.4/lib/active_support/clean_logger.rb

ここで、

  remove_const "Format"

を次のように修正します。

  if const_defined?(:Format) # Not defined in Ruby 1.8.3
    remove_const "Format"
  end

Ruby1.8.3を使っているならコメントアウトでも大丈夫です。

  # remove_const "Format"

動作確認するには、次のようにしてシェルから実行します。

  # damagecontrol-webrick 

Webブラウザから http://localhost:3000/project へアクセスして画面が表示されればOKです。

Subversion

Subversionのコマンドメモ。

リポジトリの作成

# mkdir /var/svn
# svnadmin create /var/svn
# chown -R hiro345:hiro345 /var/svn

インポート

$ svn --version
$ echo hello > hello.txt
$ echo Hi > hi.txt
$ svn import -m "Hello project" . file:///var/svn/kei/trunk
追加しています              hello.txt
追加しています              hi.txt

リビジョン 1 をコミットしました。

チェックアウト

$ mkdir ../work
$ cd ../work
$ svn co file:///var/svn/kei/trunk kei
A    kei/hello.txt
A    kei/hi.txt
リビジョン 1 をチェックアウトしました。

編集と差分の確認

$ cd kei
$ echo "Hello, Micky" >> hello.txt
$ svn status hello.txt
M      hello.txt
$ svn diff hello.txt
Index: hello.txt
===================================================================
--- hello.txt   (リビジョン 1)
+++ hello.txt   (作業コピー)
@@ -1 +1,2 @@
 hello
+Hello, Micky

コミットとログの確認

$ svn commit -m "Added Hello, Micky"
送信しています              hello.txt
ファイルのデータを送信中です.
リビジョン 2 をコミットしました。

$ LANG=C svn log hello.txt
------------------------------------------------------------------------
r2 | hiro345 | 2005-12-15 20:06:55 +0900 (Thu, 15 Dec 2005) | 1 line

Added Hello, Micky
------------------------------------------------------------------------
r1 | hiro345 | 2005-12-15 19:56:43 +0900 (Thu, 15 Dec 2005) | 1 line

Hello project
------------------------------------------------------------------------


$ LANG=C svn log --verbose hello.txt
------------------------------------------------------------------------
r2 | hiro345 | 2005-12-15 20:06:55 +0900 (Thu, 15 Dec 2005) | 1 line
Changed paths:
   M /kei/trunk/hello.txt

Added Hello, Micky
------------------------------------------------------------------------
r1 | hiro345 | 2005-12-15 19:56:43 +0900 (Thu, 15 Dec 2005) | 1 line
Changed paths:
   A /kei
   A /kei/trunk
   A /kei/trunk/hello.txt
   A /kei/trunk/hi.txt

Hello project
------------------------------------------------------------------------

ディレクトリへのチェックアウト

$ cd ..
$ svn co file:///var/svn/kei/trunk shu
A    shu/hello.txt
A    shu/hi.txt
リビジョン 2 をチェックアウトしました。
$ cd kei/
$ echo "Hi, Micky" >> hi.txt
$ svn commit -m "Added Hi, Micky"
送信しています              hi.txt
ファイルのデータを送信中です.
リビジョン 3 をコミットしました。
$ cd ../shu
$ svn status --show-updates
       *        2   hi.txt
状態の背景となるリビジョン:      3
$ svn diff -rHEAD hi.txt
Index: hi.txt
===================================================================
--- hi.txt      (リビジョン 3)
+++ hi.txt      (作業コピー)
@@ -1,2 +1 @@
 Hi
-Hi, Micky
$ svn update
U    hi.txt
リビジョン 3 に更新しました。

競合

$ echo "Hi, Minny" >> hi.txt
$ svn commit -m "Added Hi, Minny"
送信しています              hi.txt
ファイルのデータを送信中です.
リビジョン 4 をコミットしました。

$ cd ../kei
$ echo "Hi, Pluto" >> hi.txt
$ svn commit -m "Added Hi, Pluto"
送信しています              hi.txt
svn: コミットに失敗しました (詳しい理由は以下のとおりです):
svn: '/kei/trunk/hi.txt' (トランザクション '4-1' 中) はリポジトリ側と比べて古く なっています
$ svn update
C    hi.txt
リビジョン 4 に更新しました。
$ cat hi.txt
Hi
Hi, Micky
<<<<<<< .mine
Hi, Pluto
=======
Hi, Minny
>>>>>>> .r4

<<<<<<< .mineと>>>>>>> .r4に囲まれたところが競合しているので、編集してマージします。

$ vi hi.txt
$ cat hi.txt
Hi
Hi, Micky
Hi, Minny
Hi, Pluto

衝突状態を解消してからコミットします。

$ svn resolved hi.txt
'hi.txt' の衝突状態を解消しました
$ svn commit -m "Added Hi, Pluto"
送信しています              hi.txt
ファイルのデータを送信中です.
リビジョン 5 をコミットしました。

ネットワークプロトコル

$ svn co svn://five.sssg.org/var/svn/kei/trunk kei
$ svn co svn+ssh://five.sssg.org/var/svn/kei/trunk el
$ svn co http://five.sssg.org/svn/kei/trunk em

Insert a word to user dictionary

Fedora Core 4 でデフォルトで使用できる日本語変換システムで、単語登録をするためには、変換可能状態で Ctrl + HOME キーを押下します。これでメニューがでるので、それを使えばよいことがわかりました。

SSH port forward for MySQL

はまりました。localhostを使うと、localhostのMySQLへアクセスしてしまいます。これを回避するためには、127.0.0.1を使います。例えば、remote.host.comの3306ポートで起動されているMySQLへのポートフォワードを提供するためには、下記のようにします。

ssh -2 -N -f -L 13306:127.0.0.1:3306 remote.host.com

これで、SSHを動作させているホストから、jdbc://mysql/localhost/dbname などでremote.host.comへアクセスできます。注意点としては、remote.host.com側ではlocalhost.localdomain経由でアクセスがきたというように処理されていたので、アクセス権限を与えておく必要があります。もしかしたら、環境依存かもしれません。

TimeZone

Javaを使っていて、ログなどが出力する時刻が変な場合にはTimeZone環境変数を変更してみるとよいかもしれません。日本の時刻の場合は、TZ=”Asia/Tokyo” もしくは TZ=JST を設定します。

Acrobat7 for Linux

Linux版のAcrobat Reader も 7 がでていました。早速 Fedora Core 4 へインストールしたところ、起動が高速になっていて驚きました。