courier-imap

メールを(玄箱まで)送受信できるようになったら、PCで見れないと意味がないですよね?
いや、telnetとかftpで見るから良いって言うなら止めないけど・・・

まぁ、メールクライアントで見れたほうが便利。
ってことで、pop3/imap4鯖を作ります。
今回はcourier-imapを使ってみます!
「pop3/imap4」
maildir方式では選択肢が無さ過ぎです。
丁度、popとimapが両方使えるのがcourierしかなかったってだけ(調べた限りは)
まぁ、使えれば何でもいいような気がしますが・・・
ソースの修正が多い(単純だけど)のでがんばってください。

やること一覧
	・courier-authlibのインストールcourier-imapのインストールユーザーパスワードの設定courier-imapのimap認証をUNIXパスワード切り離す
		courier-imapでimap接続のときにCRAM-MD5認証する!不具合修正:Thunderbirdのセッション不足

関連ページ
	・postfixpostfix with smtp authopensslautoconf



courier-authlibのインストール

その前に、libtoolを作成する。

	$ wget http://ftp.yz.yamagata-u.ac.jp/pub/GNU/libtool/libtool-1.5.26.tar.gz
	$ tar xvfz libtool-1.5.26.tar.gz
	$ cd libtool-1.5.26
	$ ./configure --prefix=/usr
	$ make
	$ make check
	# make install
インストールされるモノ(--prefix=/usr/local)=>libtool-1.5.26.txt

courierシリーズ用ユーザーの追加
	# groupadd -g 27 courier
	# useradd -g courier -u 27 -d /var/empty -s /bin/false courier
	# vipw
	または
	# vi /etc/passwd
		変更点:! を * に書き換える
courierシリーズの認証用デーモンであるauthlibをインストールする

courier-authlib-0.66.1.tar.bz2を探してくる。
Courier-IMAP
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ
	$ wget https://sourceforge.net/projects/courier/files/authlib/0.66.1/courier-authlib-0.66.1.tar.bz2/download
	$ tar xvfj courier-authlib-0.66.1.tar.bz2
	$ cd courier-authlib-0.66.1
	$ ./configure --prefix=/opt/courier
		(警告メッセージ)
		┃checking for expect... no
		┃configure: WARNING: -----------------------------------------------------
		┃configure: WARNING: expect not found - will not be able to change passwds
		┃configure: WARNING: in webmail
		┃configure: WARNING: -----------------------------------------------------
			解説:expectが無いとwebmailからpasswdを変更できないらしい・・・
			   使わないから良いや(ぼそ
			参考:Expect
	$ cp Makefile Makefile.org
	$ sed -e 's,^LIBLTDL = ${top_build_prefix}libltdl/libltdlc.la,LIBLTDL = -lltdl,' Makefile.org >Makefile
		注:そのままだとerrorがでてコンパイルできないのでMekefileを書き換える
	$ make
	$ make check
	# make install
	# make install-configure
		注:再インストール時、install-configureは不要
上記設定でインストールされるもの
	/opt/courier/bin/courierauthconfig
	/opt/courier/etc/authlib/
	/opt/courier/include/courier*
	/opt/courier/include/ltdl.h
	/opt/courier/lib/libltdl.*
	/opt/courier/lib/courier-authlib/
	/opt/courier/libexec/courier-authlib/
	/opt/courier/man/???
	/opt/courier/sbin/auth*
	/opt/courier/sbin/courierlogger
	/opt/courier/sbin/*userdb*
	/opt/courier/var/spool/authdaemon
おまじない
	# strip -p /opt/courier/bin/*
	# strip -p /opt/courier/sbin/*
使う人が居ないのにデーモンが5つも立ち上がるのはうざいから修正
	# vi /opt/courier/etc/authlib/authdaemonrc
		(修正)
		┃daemons=1
			変更点:立ち上がるデーモンの数を5から1に減少(お勧めはしませんw)
「webmail」
このwebmailって言うのは一般に言われるウェブメールとは違うものです。
たしか、courierシリーズの中のウェブメールのことです。
私はsquirrelmailを使うつもりなので、警告は無視しました。
webmailを使う人は無視しないでくださいね。

courier-imapのインストール

事前準備その1:OpenSSLをインストール
暗号通信(POP over SSL)を利用する場合には事前にOpenSSLをインストールする必要がある。
手順は別項:opensslを参照。

事前準備その2:autoconfのアップデート
courier-imapのmake中になぜかautoconfのバージョンが低いと文句をたれるたので、
アップデートしてみる。
必要ないこともあるかも知れないので別項:autoconfを参照。

courier-imap-4.4.1.tar.bz2を探してくる。
Courier-IMAP
で、ユーザーのホームディレクトリにFFFTPで送る。
例のあれ

	$ wget http://kuro.crow2.net/server/data/courier-imap-4.4.1.tar.bz2
	$ tar xvfj courier-imap-4.4.1.tar.bz2
	$ cd courier-imap-4.4.1
ソースファイルの修正
/opt/courier/includeにパスが通っていないので以下のソースファイルを修正
(修正概要)
#include されている courierauth.h と courierauthsasl.h と courierauthdebug.h を
"/opt/courier/include/courier*.h" のように"でくくった絶対パスに修正する。

	パッチを作ったので適応すれば良い
		$ wget http://kuro.crow2.net/server/data/courier-imap.patch
		$ patch -p 2 <./courier-imap.patch
			注:4.15ベースのpatch fileなのでHunkするが、問題無い
			  また、4.15で使う場合は下記のコマンドになる
			  $ patch -p 1 <./courier-imap.patch
		(修正部分)
			[ファイル名]:[行数]
			imap/authenticate_auth.c:16-18
			imap/imapd.c:53,87
			imap/imaplogin.c:35,36
			imap/mailboxlist.c:68
			imap/pop3dserver.c:58
			imap/pop3login.c:25-27
			imap/proxy.c:33

	$ export COURIERAUTHCONFIG=/opt/courier/bin/courierauthconfig
		注:courierauthconfigの場所を環境変数に出力する
	$ ./configure --prefix=/opt/courier --enable-unicode=iso-2022-jp \
	--without-authmysql --without-authldap --without-authuserdb
		

option説明など
--enable-unicode=iso-2022-jp日本語(iso-2022-jp)を有効にする
--without-auth*(*に該当する)認証システムを使わない

$ make $ make check # make install-strip [or # make install] # make install-configure

option説明など
install-stripstripしてインストールする?
install-configure設定ファイルをインストールする

注:再インストール時、install-configureは不要
おまじない
	# chmod 600 /opt/courier/etc/authlib/userdb
		注:再インストール時に必要(?)
「IP v6」
たまに出てくるIP v6・・・使う機会無いよね?
使ってる人も居るみたいだけど、なんかわかりにくくて好きじゃないんだよね。

まぁ、頭の良い人たちが集まって作ったものだから、何か理由があるんだろうけど・・・

ユーザーパスワードの設定

ユーザー情報の登録(正しいユーザー名、ホームディレクトリ、maildir、UID/GIDを設定する)

	# /opt/courier/sbin/userdb [username] set home=[userdir] mail=[userdir]/Maildir \
	uid=`id -u [username]` gid=`id -g [username]`
パスワード入力(imapとpop3のパスワードは独立しています。それぞれ設定してください)
	# /opt/courier/sbin/userdbpw | /opt/courier/sbin/userdb [username] set imappw
	# /opt/courier/sbin/userdbpw | /opt/courier/sbin/userdb [username] set pop3pw
データベース化
	# /opt/courier/sbin/makeuserdb
		注:変更したら必ず実行すること(最後にまとめてで良いので)
起動スクリプトを書いて/etc/init.dに置く(アクセス権も変更)
courier起動スクリプト(courier.tar.gz) md5sum crc32:DE30A948
  注:面倒なので全部一緒に起動させている
	# chmod 755 /etc/init.d/courier
テスト(start/restart/stopがエラーなく動くか?)
	# /etc/init.d/courier start
	# /etc/init.d/courier restart
	# /etc/init.d/courier stop
自動起動設定
	# ln -s /etc/init.d/courier /etc/rc.d/rc2.d/S35courier
	# ln -s /etc/init.d/courier /etc/rc.d/rc0.d/K35courier
	# ln -s /etc/init.d/courier /etc/rc.d/rc6.d/K35courier
再起動テスト
	# shutdown -r now
やるべきこと(pop3のテスト)

LAN内で受信テスト
ルーターのポートを空ける(110番)
外部から受信テスト

両方とも受信できたらOK
「pop3のテスト」
今は外部からのpop3は使っていません。
ウェブメールが使えるようになっているので必要ないかなぁ〜って感じです。
squirrelmailは使いやすいですよ(別ページ:imap4使用)

「問題点」
これで一応は個人用のメール鯖が完成です。
問題点を挙げると・・・
・停電したらメールが受け取れない
・サーバーを(容易に)停止できない
・個人鯖からのメールをはじくところがある
といったところ。
重要なメールは(転送するなどして)プロバイダなど信頼できるところを利用するようにしましょう(を

不具合修正:Thunderbirdのセッション不足

雷鳥こと、Thunderbird(サンダーバード)はフリーで使える高機能なメーラーだ。
まぁ、癖があるけど・・・(を

これをデフォルト設定のcourier-imapで使うと「セッションが足りねぇよヽ(`Д´)ノ」と文句を言われる。

雷鳥の要求するセッション数が5つとなっているのに対して、
courier-imapのデフォルトセッション数が4となっているためだ。

で、どっちを修正するか・・・
まぁ、courier-imapでしょうね(クライアントは何台あるかわからないし)

	# vi /opt/courier/etc/imapd
		(修正)
		┃MAXPERIP=5
んで、courierを再起動。
	# /etc/init.d/courier restart
以上。
「どっちを修正する」
修正方法がいくつかある場合、何処を修正したら良いか。
まぁ、一番手間のかからないところでしょうね。
「今の手間」と「未来の手間」の両方を考えてどの修正が楽か?っていうのを考えないと大変になることもあるけど。


戻るなら押せ!