Courier-IMAP設定メモ

Nov 2004

OS:Debian Sarge

IMAP導入の目的はWebメール対応への前段階と考えています。
fetchmailで複数のメールサーバ(POP3)からメールを取得してprocmailでmail形式で保存する設定を記録しておきました。

関連 apache2設定メモ   postfixメモ  APOP設定メモ  SMTP Auth設定メモ  Courier- imap設定メモ
     apache2のSSL対応   DebianにSquirrelmailの設定 メモ 

1 fetchmailの設定

fetchmail は複数のPOPサーバのメールを検知してくれます。ま ずfetchmailをインストールします。

# apt-get install fetchmail

サーバ内のユーザのホームディレクトリに.fetchmailrcを作成します。
これは Debianだと/usr/share/doc/fetchmail/example/の下に例があるので
コピーしてきて下のように書き変えます。
例 /home/hogehoge/.fetchmailrc
# /etc/fetchmailrc for system-wide daemon mode
# This file must be chmod 0600, owner fetchmail

# Daemon configuration
# These two are set in /etc/default/fetchmail
set daemon 300 #<-------メールの取得間隔(秒)
#set syslog # log through syslog facility

set no bouncemail #<---メールを送信者に転送し ない

##########################################################################
# Hosts to pool
##########################################################################

# Defaults ===============================================================
# Set antispam to -1, since it is far safer to use that together with
# no bouncemail
defaults:
antispam -1
batchlimit 100

#poll [サーバ名] with protocol pop3 user [ユーザ名] pass [パスワード]
poll karappi.minidns.net with protocol pop3 user hogehoge  pass XXXXXXXX


.fetchmailrcこのままだと他ユーザから見られてしまいます。 パスワードがそのまま記述されているのでパーミッションを変更して他人が見ることができないようにします。オーナーとグループも必ずそのユーザの ものにし ます。
$ chmod 600 .fetchmailrc

ユーザのアカウントでfetchmailを起動します。

$ fetchmail &


ところでサーバを再起動したとき自動でfetchmailも起動するには
.fetchmailrcを/etc/下にfetchmailrc(.を取って隠しファイルでなくする)という名前で置きます。もちろんパーミッ ションは chmod 600 fetchmailrc のままです。
でそれから/etc/init.d/内にすでにfetcmailの起動スクリプトがあり、これが既に登録
されていますが、登録を一旦削除してから再登録します。

# cp /home/hogehoge/.fetchmailrc /etc/fetchmailrc
# chmod 600 fetchmailrc (念のため)
# cd /etc/init.d
# update-rc.d -f fetchmail remove (自動起動登録の削除)
# update-rc.d fetchmail defaults (自動起動スクリプト登録)




2 procmailの設定


procmailは特定のユーザのMaildirディレクトリ内にメールを配信します。
メールの振り分けもできます。
まずインストールします。
# apt-get install procmail

/etc/postfix/main.cf内に赤い行の部分があることを確認します。無ければ追加します。
# see /usr/share/postfix/main.cf.dist for a commented, fuller
# version of this file.

# Do not change these directory settings - they are critical to Postfix
# operation.
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
setgid_group = postdrop
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
myhostname = karappi.minidns.net
mydomain = karappi.minidns.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, 192.168.0.0/24
mailbox_command = procmail -a "$EXTENSION"
#home_mailbox=Maildir/ Maildirは使わない。複数のメールサーバに対応しないから
mailbox_size_limit = 0
recipient_delimiter = +
allow_mail_to_commands=alias,forward,include
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,permit_auth_destination,reject
broken_sasl_auth_clients = yes

ユーザのホームディレクトリ内に.procmailrcを作成します。
/home/hogehoge/.procmailrc
PATH=/bin:/usr/bin:/usr/local/bin <--環境変数の設定
MAILDIR=$HOME/Maildir <--メールディレ クトリへのパス
DEFAULT=$MAILDIR/ <---デフォルト(下の振 り分け以外のメールの格納 先
LOGFILE=$MAILDIR/procmail.log <-- ログの保存場所
LOCKFILE=$HOME/.lockmail <-- ロックファイルのパス
:0 <-----メールヘッダがhogezouからのメールの振 り分け
* ^X-ML-Name: hogezou
.ML.test/

:0 <-----From行が hoge@hogesearver.jpからのメールの振り 分け
* ^From: hoge@hogeserver.jp
.hoge-mail/
メールの振り分けは上のように:0というラベルのようなものを書き、その次の行に条件を記述します。
オーナーとグループも必ずそのユーザのものにします。

サーバが起動したときprocmailが自動起動するには
/etc/init.d/下にスクリプトファイルを記述して登録します。
内容は1行、
procmail &
(ユーザ権限で起動するには 「su ユーザ名 コマンド」というを記述します。
 具体的には  「su  hogehoge  procmail &」を記述します。 )


ファイル名がpcrocmail.shだとするとパーミッションを起動可にして次のように登録します。

# chmod 755 procmail.sh
# update-rc.d procmail.sh defaults 99
defaultsの後に数値を最大99にて起動の順番を遅くした方がいいみたいです。


3 Courier-IMAPのインストール
imap4サーバはCourier-IMAPで行います。
# apt-get install courier-imap

起動はDebianの場合、インストール直後に自動的に起動するように設定されます。
もし再起動したい場合は下のようにします。2つのdaemonを再起動します。
# /etc/init.d/courier-imap restart
# /etc/init.d/courier-authdaemon restart


4 暗号化の設定
このままではIMAPはパスワードを平文で認証します。そこで通信の暗号化をするためにCRAM-MD5という認証の設定を行います。

まず/etc/courier/authdaemonrcファイルのauthmodulistの記述のある行を次のように変更します。

/etc/courier/authdaemonrc
#authmodulelist="authpam"
authmodulelist="authcram authpam"

また/etc/courier/imapdの中でimapdファイルがauthdaemonを参照する設定になっていることを確認しておきます。 次のよう になっていればOKです。

/etc/courier/imapd
AUTHMODULES="authdaemon"
同じく/etc/courier/imapdファイルのbannerを変更します。
まず下の行を見つけてコメントにします。(119行目)
/etc/courier/imapd
 #IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"

つぎにMD5用のbannerがコメントアウトになっていたらそれをはずします。これは2個所ありました。近辺のコメントを読むと下のは Webmin用み たいです。(116と141行目あたり)
/etc/courier/imapd
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE"

IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE"


5 パスワードファイルの生成
パスワードファイルはpw2userdbコマンドで生成されます。
例(Debianの場合 ユーザはhogehoge)
# pw2userdb | grep hogehoge > /etc/courier/userdb

? 2人目以降は >を >>にする。(たぶん)

/etc/courier/userdb のパーミッションを変更しておかないとあぶないです。
# chmod 700 /etc/courier/userdb

6 共有秘密鍵の作成

CRAM-MD5用の共有秘密鍵を作成します。
# userdbpw -hmac-md5 | userdb hogehoge set imap-hmac-md5pw
Password: (パスワード)
Reenter password (パスワード)

# makeuserdb


7 Maildirの作成
Maildirが存在しない場合はユーザモードになってmaildirmakeコマンドでMaildirを作成します。
$ maildirmake Maildir


8 クライアントの設定

Sylpheed(Ver 0.7XX)は新規にアカウントを設定します。あとからpop3をimapに変更できません。アカウントの設定のダイアログボックスでプロトコル を IMAP4にします。

Becky!2は受信プロトコルを IMAP4rev1にして認証方式でCRAM-MD5にチェックを入れます。



目次 top

ア ンケー トにお答え下さい.
このページについて とても参考になった。
すこし参考 になった。
参考になら なかった。