umask 77 ; \
/usr/bin/openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP ←国
State or Province Name (full name) [Some-State]:Mie ←都市を入力
Locality Name (eg, city) []:Kuwana
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tsuttayo ←会社名などを入力
Organizational Unit Name (eg, section) []: ←必要ない
Common Name (eg, YOUR name) []:tsuttayo.sytes.net ←アドレスを入力
Email Address []:sg@tsuttayo.sytes.net ←メール・アドレスを入力
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←必要ない
An optional company name []: ←必要ない
|
ここでは、CAに署名を依頼するかわりに、自分で署名してしまいます。以下は有効期限を365日にしてますが、これはご自身で適当に変えてください。また、CAへ署名を依頼するときは上記CSRを使って依頼します。
# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365
これで /usr/share/ssl/certs/server.pem が出来上がったはずです。
imapd.confの設定
IMAPサーバについての設定は /etc/imapd.conf で行います。
/etc/imapd.conf をエディタで編集します。以下は設定例です
# Cyrus IMAP Serverが各種管理用ファイルを置くディレクトリ
configdirectory: /var/lib/imap
# ユーザーのメールの保管場所
partition-default: /var/spool/imap
# 管理者権限を持つユーザーの一覧
admins: admin
# /home/USER/.sieve でメールの振り分け処理をする場合、
# コメントをはずす。
#sieveusehomedir: true
# sieveusehomedirを無効にしている場合、
# sieveスクリプトの保管場所
sievedir: /var/lib/imap/sieve
# 認証方法の指定。
# ここではsaslpasswd2コマンドでユーザー管理をするのでsasldbとしています。
sasl_pwcheck_method: sasldb
# TLS関係の設定
tls_cert_file: /usr/share/ssl/certs/server.pem
tls_key_file: /usr/share/ssl/certs/server.pem
|
cyrus-imapdは、色々なサービスを提供しています。
もしも必要がないサービスがあれば /etc/cyrus.conf をエディタで変更します。
# UNIX sockets start with a slash and are put into /var/lib/imap/sockets
SERVICES {
# add or remove based on preferences
imap cmd="imapd" listen="imap" prefork=5
imaps cmd="imapd -s" listen="imaps" prefork=1
pop3 cmd="pop3d" listen="pop3" prefork=3
pop3s cmd="pop3d -s" listen="pop3s" prefork=1
sieve cmd="timsieved" listen="sieve" prefork=0
# 上記のようなところで、もしもpop3を利用禁止にしたいなら、
# 以下のように、先頭に「#」を付けてコメントに変えます。
# pop3 cmd="pop3d" listen="pop3" prefork=3
|
さらにプレーン認証を行う場合(OutlookExpressはプレーン認証が必要)、/usr/lib/sasl2/smtpd.confに「pwcheck_method: auxprop」という行を追加する必要があるようです。
cyrus-imapdサービスを起動
cyrus-imapdサービスを起動します。
# /etc/init.d/cyrus-imapd start
cyrus-imapdを自動起動するように設定します。
# /sbin/chkconfig cyrus-imapd on
Postfixの設定を変更
/etc/postfix/main.cfを変更します。
|
# 通常のメールボックスへの配信にcyrusのインターフェイスを利用する
mailbox_transport = cyrus
# メールアドレスが見つからないメールの配信に
# cyrusのインターフェイスを利用する
fallback_transport = cyrus
|
Postfixをリスタートします。
# /etc/init.d/postfix restart
アカウントの管理
cyrus-imapでは、ユーザー管理がLinuxのシステムユーザーとは独立していますので、アカウントの登録などは独自コマンドを利用します。
また、cyrus-imapではユーザーとメールボックスとは別に管理することになります。
| ユーザーの追加/パスワード変更 |
saslpasswd2 ユーザー名 |
| ユーザーの削除 |
saslpasswd2 -d ユーザー名 |
| ユーザーの一覧表示 |
sasldblistusers2 |
たとえば 「suzuki」 というユーザーを作る場合では
# saslpasswd2 suzuki
ここでパスワードを2回入力すると、ユーザー「suzuki」が追加されます。
なお、/etc/imapd.confのadminsで設定したユーザーは必ず必要です。
この管理者が全アカウントのメールボックス管理を行えます。
この説明の例では「admin」というユーザーは必ず作ることになります。
# saslpasswd2 admin
メールボックスの管理
メールボックスの管理は cyradm という対話型のコマンドで行います。
-
ここでは、例としてアカウント「suzuki」が利用するメールボックスを作ってみましょう。
cyradmを起動します。ここではsaslpasswd2で作成した管理者用ユーザーの「cyrus」でログインしています。
$ cyradm --user admin localhost
パスワードはsaslpasswd2で設定したパスワードです。
-
suzuki用のメールボックスを作ります。
DOMAIN.NAME> cm user.suzuki
|
cyradmで「セグメンテーション違反です」(Segmentation fault)になってログインできない場合、以下のようにしてsasldb2のパーミッション設定を変えることで直る場合があるようです。
# chown cyrus. /etc/sasldb2
|
cyradmでよく使いそうなコマンドには以下があります。
| ? |
cyradmコマンドの操作方法を表示します。 |
| cm user.USERNAME |
ユーザー専用のメールボックス追加を作ります。このメールボックスの初期アクセス権はUSERNAMEで指定したユーザーです。 |
| lm |
すべてのメールボックスを表示します。 |
| dm user.USERNAME |
メールボックスの削除をします。
ただ、このとき管理者に書き込み権限がないと「deletemailbox: Permission denied」というエラーになります。
sam user.USERNAME cyrus write (ここでcyrusはメールボックス管理者のことです)
このようにして、管理者に書き込み権限を付加した後なら、メールボックスを削除することができます。
|
| sam user.USERNAME OPTUSER [read/write] |
メールボックス「USERNAME」について、OPTUSERのアクセス権設定をします。
たとえば、suzukiは営業部に所属しているので営業部専用のメールボックス(eigyou)についても読み取りのみ可能にしたいという場合では次のようにします。
> sam user.eigyou suzuki read
なお、read/write以外にも色々な設定が可能なんですが、普通はこれ以上の設定があまり必要ないんじゃないかと思います。
|
| lam user.USERNAME |
メールボックスのアクセス権を表示します。 |
| sq user.USERNAME 1024 |
メールボックス「USERNAME」の容量制限を1024KBにします。 |
sieveの利用
sieveというスクリプト言語機能を利用して、メールをサーバ側で自動的に振り分けることができます。
sieve機能は、ユーザーのホームディレクトリに.sieveというファイルを作成して利用する方式(以下、sieveusehomedir方式と呼びます)と、サーバ側と通信してスクリプト定義をする方式(以下、sieveshell方式と呼びます)があります。
Linuxシステムアカウントとは別管理にしたアカウント管理というのがcyrus本来の考え方だと思いますので、後者のサーバ側と通信する方式がお勧めですが、
それぞれ一長一短があるかと思いますので、ここでは両方の方式について書きたいと思います。
なお、sieveで利用する簡易言語機能については、sieveスクリプトに書きます。
sieveusehomedir方式でのsieve利用
/etc/imapd.confを編集して、「sieveusehomedir: true」という行を追加します。
また「sievedir: /etc/sieve」というような行は削除(またはコメントに)します。
-
変更したらimapdを再起動します。
# /etc/init.d/cyrus-imapd restart
振り分けする一般ユーザーでログインします (sieveusehomedir方式ではLinuxアカウントが必要です)。
エディタを使ってsieveの言語構文にのっとってソースを書きます。
ここでは、sieve.srcというファイルで保存したこととします。ファイル名は何でもかまいません。
作成したソースをsievecでサーバが実行できるようにコンパイルします。
$ /usr/lib/cyrus-imapd/sievec sieve.src ~/.sieve
これでコンパイル済みファイルは、ホームディレクトリの.sieveに作成されます。
ホームディレクトリに.sieveが置かれると、自動的に振り分け機能がスタートします。
sieveshell方式でのsieve利用
どの一般ユーザーでもかまいませんので、ログインします。
エディタを使ってsieveの言語構文にのっとってソースを書きます。
ここでは、sieve.srcというファイルで保存したこととします。ファイル名は何でもかまいません。
sieveshellを起動します。ここでは「suzuki」というユーザーについての振り分け定義をすることとします。
$ sieveshell -u suzuki -a suzuki localhost
> put sieve.src
> activate sieve.src
> quit
この後、届いたメールは自動振り分けされます。
sieveスクリプト
Cyrus IMAP serverでsieveを使うでのサンプルがシンプルでわかりやすいです。
RFC3028を見るとUTF8で書くのがいいようですね。RFC3028には細かい言語仕様が書かれています。
上記2つを見ていただければ、他の言語の経験があればわかると思います。ここでは単純な例を書きます。
# ファイル操作拡張機能の読み込み
require "fileinto";
# SpamAssassinでSPAMと判定されメールをSPAMフォルダへ移動
if header :is "X-Spam-Flag" "YES" {
fileinto "INBOX.SPAM";
}
|
参考文書