斬新スタイル!カメラ特集
ラベル Cyrus-IMAP の投稿を表示しています。 すべての投稿を表示
ラベル Cyrus-IMAP の投稿を表示しています。 すべての投稿を表示

2007年12月25日火曜日

Cyrus-IMAP で Quota 制限を超えた場合のエラー設定

LMTP 配送を利用した場合、デフォルトでは Quota制限を超えたメールはテンポラリエラー(4XX)として動作する。従って、Cyrus-IMAP へ配送する MTA 側にリトライキューとして再送待ちになる。この動きを変更したい場合(5XXを返す)は、次のパラメータを設定する。

lmtp_over_quota_perm_failure: 1

LMTP配送を利用した場合、quota 制限を超えたメールはテンポラリエラーがデフォルトの動作になっています。このパラメータを設定することでハードエラー(5XX)になります。

これにより、Quota制限を超えたメールは、エラーメールとして送信者側に戻ります。

※運用初期の段階では、アカウント登録不足などによる予期せぬエラーが発生する可能性がありますので、テンポラリエラーの運用を暫く続けてからの、ハードエラーへの設定変更がよいでしょう。

Cyrus IMAP サーバ LMTP TCPソケット配送の設定

Postfix + Cyrus IMAP サーバを利用する場合、Cyrus-IMAP の install-configure では
LMTP Unixドメインソケットを利用した例が用いられています。
両者が同一ホスト上で動作する場合は問題ありませんが、それぞれが異なるホスト上で動作する場合は、TCPソケットを利用した LMTP配送に変更したほうがよいので、早速設定内容について記述します。

1. Postfix main.cf を次の内容へ変更します。

mailbox_transport = lmtpunix:/var/imap/socket/lmtp



mailbox_transport = lmtp:inet:ホスト名:ポート番号

- lmtp : lmtp そのまま
- inet : inet そのまま
- ホスト名:
Cyrus-IMAP サーバ名を指定。
名前解決をさせたくない場合、カッコ("[","]")で囲む。
- ポート番号:
Cyrus-IMAP では、2003番を LMTP のデフォルトと定義していますので、
サーバの /etc/services に lmtp 2000/tcp を追加します。
(Postfix は、24番がデフォルト)

2. Cyrus-IMAP cyrus.conf の設定

以下、cyrus.conf の「SERVICES 句」の例。

SERVICES {
imap ~
pop3 ~
sieve ~
#
lmtp   cmd="lmtpd -a" listen="lmtp" prefork=0
lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
}

ここで、「lmtp」の行を有効にします。
lmtpd に対して "-a" を指定していますが、これは、lmtpd のデフォルト
では、SASL認証を要求するので、認証をしない場合、"-a"を指定する必要が
あります。

ここまで設定した後、Postfix、Cyrus-IMAP を再起動して下さい。

Cyrus IMAPサーバの古いメールを削除する

Cyrus IMAP サーバを IMAP運用した場合、容量管理が一番大変になってきますが、
幸い、Cyrus IMAP サーバには、古いメールを自動的に削除する機能が実装されています。

それは、ipurge コマンドです。

$ man ipurge

ipurge は、期間又はサイズによるメール削除機能を提供するコマンドです。

私の場合は、期間指定で利用しています。
コマンドラインで実行した場合は、次のようにオプションを指定します。

$ ipurge -d 14 -f -X

・ -d 14 : 14日前のメールを対象。
・ -f :   全てのメールボックスを対象。
・ -X :  メール本文の日付ではなく、配送した日付を利用。

サーバに組み込む場合は、cyrus.conf に追加します。

以下、cyrus.conf の「EVENTS 句」の例。

EVENTS {
cleanup  cmd="ipurge -d 14 -f -X" at=0300
}

at=0300 は、AM 3:00 に実行します。
実行時間は、定期実行とインターバル指定が可能です。

変更後は、Cyrus IMAP サーバを再起動します。

Cyrus IMAP を SNMPでモニターする

Cyrus IMAP サーバは SNMP 経由で master プロセスの稼働状況を見る事ができます。
(--with-snmp でコンパイルしておく必要があります)


この機能を使えば、MRTGやCactiを使っていろいろモニターリングが可能になります。

□ Cyrus サーバ基本情報

- Cyrus サーバの一般的情報
- Cyrus サーババージョン情報
- master プロセスの稼働時間

□ Cyrus サービス情報

- master プロセス起動後からの起動回数の合計
- 現在起動している子プロセスの数
- サービス名
- サービスID
- master プロセス起動後からの接続数

これら情報より LMTP接続/POP/IMAP接続の状況が見えてくるので、サーバの頑張り具合を判断するにはよい材料になります。

【設定方法】

※Cyrus 側には特に何も設定する必要はなく、snmp側(ここでは Net-SNMP 5.X)に設定を追加します。
※FreeBSD 5.5 を例にしています。

1. snmpd.conf に次のエントリを追加します。

# vi /usr/local/etc/snmpd.conf

master agentx

※ Subagent 機能を使うようですが、勉強不足で詳細わかりません。

2. 各デーモンを再起動

# /usr/local/etc/rc.d/snmpd.sh restart

# /usr/local/etc/rc.d/imapd.sh restart


これで、oid でアクセス可能になります。

【アクセス方法】

※基本情報

$ snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.3.6.1.1
SNMPv2-SMI::enterprises.3.6.1.1.1.0 = STRING: "Cyrus IMAP server master process"
SNMPv2-SMI::enterprises.3.6.1.1.2.0 = STRING: "v2.3.8"
SNMPv2-SMI::enterprises.3.6.1.1.3.0 = Timeticks: (1080600) 3:00:06.00

※稼働状況

$ snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.3.6.1.2

ずらずらと表示(省略)。

この情報を Cacti に組み込むと頑張り具合が見えるようになります。

Cyrus IMAPサーバでメールアドレスの大文字/小文字の区別を無効にする

Cyrus IMAPサーバを利用してる場合、デフォルト設定ではメールアカウントの大文字/小文字は判別するようになっています。従って、mail@example.com と MAIL@EXAMPLE.COM は別メールアカウントとして内部処理されます。

この判別を無効にするには、imapd.conf 設定ファイルへ次の項目を追加し無効にできます。

次は FreeBSD + ports で導入した場合の例です。
imapd.conf のパスは、環境によって修正してください。
# vi /usr/local/etc/imapd.conf

lmtp_downcase_rcpt: 1

上の変数を追加します。

# /usr/local/etc/rc.d/imapd.sh restart

※再起動も忘れずに。

但し、LMTP 配送を行っている場合だけ有効になりますので、それ以外の配送を行っている場合は、別の手段あるのかな?