MailDepot バックエンド運用マニュアル

目次
この文書について
MailDepot の構成
設定ファイル
システムの起動
コマンドラインオプション
ログの出力
プロセス監視デーモン
アラート監視デーモン
ジョブ管理デーモン
メール取り込みデーモン
日次処理スクリプト
月次処理スクリプト
バックアップ処理スクリプト
Apache、PostgreSQL のログ
ログの削除

この文書について

この文書では MailDepot のバックエンドの運用管理について説明します。

その他の MailDepot 管理用のコマンドラインツールについてはコマンドラインツールマニュアルを参照してください。

MailDepot の構成

MailDepot のバックエンドのプロセスの構成は以下のようになります。

  md_watch --+-- md_alert
             |
             +-- md_job
             |
             +-- md_import
             |
             +-- md_daily.php
                    |
                    +-- md_monthly.php

md_watch: プロセス監視デーモン

各種常駐プロセスの状態を監視し、起動していない場合はそれらを起動します。また、1日に1回日次処理を起動します。
ドメイン毎に1プロセス起動します。

md_alert: アラート監視デーモン

システムの状態を監視し、異常があればアラートを発行します。
ドメイン毎に1プロセス起動します。

md_job: ジョブ管理デーモン

メール取り込みのジョブを管理します。
ドメイン毎に1プロセス起動します。

md_import: メール取り込みデーモン

POPサーバからメールを取り込んでデータベースに登録します。

md_daily.php: 日次処理スクリプト

1日に1回、日付が変わったときに起動し、前日の統計の処理やメールパーティションの検索対象外切り替え処理などを行います。

md_monthly.php: 月次処理スクリプト

1ヵ月に1回、月が変わったときに起動し、ログの切り詰め処理などを行います。

設定ファイル

maildepot.conf

インストール時に全体の設定または、各ドメインの雛形として /opt/maildepot3/etc に作成されます。
ドメイン作成時には、/opt/maildepot3/domain/ドメイン名/etc にコピーされます。

md_license.conf

ライセンスの管理は md_license コマンドにて行いますので、ファイルは直接変更しないでください。詳細は ライセンスのページ をご覧ください。

md_authenticity.conf

この設定ファイルには、メールの改竄検知に必要な情報が含まれており、インストール時に自動的に作成され、 サーバ毎に異なる内容が保存されています。 バックアップを取得したサーバとは別の MailDepot サーバにバック アップデータをリストアする場合には、メールの取り込みを開始する前にこのファイルをリストアする必要があり ます。このファイルをリストアしない場合、リストアされたメールに対する改竄検査に失敗します。

md_import.conf

メールの取り込み処理において、取り込み先のメールサーバ毎に下記の設定ファイルを参照します。

/etc/maildpepot3/domain/<ドメイン名>/etc/md_import_ユーザ名@ホスト名:ポート番号.conf

このファイルでは、下記のオプションが指定可能です。 このファイルは、必要に応じて管理者が手動で作成して下さい。

md_import_disk.conf

次に月単位パーティションを作るときに使うディスク名(テーブルスペース名)を指定します。

next_table_space = "pg_default"

システムの起動

管理ツールからメール取り込み処理を起動すると、最初に md_watch が起動され、 md_alert 、 md_job 、 md_import が md_watch によって順に起動されます。

各プログラムは、起動されると、そのプロセスのプロセスIDを /opt/maildepot3/domain/ドメイン名/var/run/md_watch.pid などのファイルに保存します。 このファイルはプロセスが終了すると自動的に削除されます。

各プログラムは maildepot ユーザのみによって起動することができます(root を含む他のユーザで起動するとエラーになります)。

コマンドラインオプション

md_watch 、 md_alert 、 md_job 、 md_import は以下のオプションを引数にとります。

ログの出力

MailDepot のバックエンドのプロセスは、各種ログを syslog に出力します。 また、ログレベルが NOTICE 以上のログは(可能な場合)データベースの操作ログにも出力します。 操作ログは管理ツールから確認することができます。

MailDepot の syslog 出力はファシリティとして LOCAL1 を使用しています。

デフォルトでは /etc/syslog.conf の設定を変更し、 MailDepot のログを独立したログファイルに出力しています。

  local1.*			/var/log/maildepot

出力される情報は以下のようになります(括弧内はログレベル)。

通常の情報(INFO)

重要な情報(NOTICE)

警告(WARNING)

エラー(ERROR)

アラート(ALERT)

プロセス監視デーモン

プロセス監視デーモン(md_watch)は、10秒ごとにアラート監視デーモン(md_alert)、メール取り込みデーモン(md_import)のプロセスが起動しているかどうかを確認します。起動していない場合は自動的にそれらを起動します。プロセスの起動を3回再試行し、失敗した場合はエラーログを出力します。

引数に stop をつけて起動した場合、または終了シグナル(SIGHUP、SIGINT、SIGTERM、SIGQUIT)を受け取った場合は、 md_alert 、 md_job 、 md_import に終了シグナルを送った後、終了します。

アラート監視デーモン

アラート監視デーモン(md_alert)は、システムの状態を1分おきに監視し、システムに何らかの異常があった場合は syslog にアラートを出力します。管理ツールで設定したメールアドレスにもアラートメールが送信されます(データベースにアクセスできない場合を除く)。

監視する対象は以下になります。

システムの異常

統計値異常

同じアラートが連続した場合は、システムの異常の場合、前回そのアラートを発行してから1時間以上経過した場合のみアラートを発行します。統計値異常の場合、前回そのアラートを発行してから1日以上経過した場合のみアラートを発行します。

アラートを発行するかどうか、また発行するしきい値はそれぞれ管理ツールから変更することができます。

ジョブ管理デーモン

ジョブ管理デーモン(md_job)は、20秒ごとに POP アカウント情報をチェックし、メール取り込みのジョブをデータベースに登録します。

メール取り込みデーモン

メール取り込みデーモン(md_import)は、定期的にメール取り込みジョブをチェックし、指定された間隔で POP サーバからメールを取り込み、データベースに格納します。

月の最初にメールを取り込む際に、その月のメールパーティションを新たに作成します。ディスクを追加している場合、メールパーティションを作成するディスクは、使用量が最も少ないものが自動的に選択されます。

メールサーバを複数指定した場合は、取り込み時刻が重複した場合でも、1度に1つのサーバから順番にメールを取り込みます。その場合は前回取り込み時刻が古いほうが優先されます。受信の開始が一定時間以上遅れる場合、そのジョブはスキップされます。

メール取り込み時に日本語の自動判別などを有効にするためには、システム起動時のロケールを LANG=ja_JP.UTF-8 などの日本語ロケールにする必要がありますので注意してください。

MIME タイプと拡張子のリストを記述した /etc/mime.types ファイルがある場合、添付ファイルのファイルタイプを拡張子からも判断します(Content-Type: application/octet-stream の場合)。 mime.types ファイルは mailcap パッケージに含まれます。

メール取り込みデーモン(md_import) は、下記のファイルにメールの取り込み処理の状態を記録します。

/opt/maildepot3/var/tmp/md_session-XXXX.log
メールの取り込み処理が正常に終了した場合には、このファイルは削除されます。

メールの取り込み処理の過程において何らかの異常が発生した場合、プロセス監視デーモン(md_watch)が メール取り込みデーモン(md_import)を再起動します。 この際、上記のメールの取り込み処理の状態を記録した ファイルを参照し、リカバリ処理を実施します。

リカバリ処理において、添付ファイルの解析処理で異常が発生したと判断した場合には、解析不可能な添付 ファイルとしてメールをアーカイブ保存します。 また、登録不可能と判断されたメールは下記のディレクトリ に EML 形式のファイルとして保存します。

/opt/maildepot3/var/mail

日次処理スクリプト

日次処理スクリプト(md_daily.php)は、1日に1回、AM0時(日付が変わったとき)に md_watch から起動され、以下の処理を行います。

MailDepot のシステムが一時的に停止していたなどの理由で、日次処理が実行されなかった場合は、次の日にまとめて処理が実行されるため、特に作業を行う必要はありません。 この場合は統計処理などが1日分遅れることになりますが、すぐに情報を反映させたい場合は、手動で md_daily.php スクリプトを実行することができます。この場合は md_daily.php を実行した時点までの統計情報が反映されます。 md_daily.php は su または sudo コマンドで maildepot ユーザとして実行してください。

# sudo -u maildepot -i /opt/maildepot3/bin/md_daily.php DOMAIN

また、 md_daily.php は以下のオプションを引数にとります。手動実行時に特定の処理だけ実行させたい場合などに便利です。

月次処理スクリプト

月次処理スクリプト(md_monthly.php)は、毎月1日(月が変わったとき)に md_daily.php から起動され、以下の処理を行います。

MailDepot のシステムが一時的に停止していたなどの理由で、月次処理が実行されなかった場合は、次の月にまとめて処理が実行されることになります。 次の月まで待たずに処理を行いたい場合は、手動で md_monthly.php スクリプトを実行することができます。 md_monthly.php は su または sudo コマンドで maildepot ユーザとして実行してください。

# sudo -u maildepot /opt/maildepot3/bin/md_monthly.php DOMAIN

バックアップ処理スクリプト

管理ツールからバックアップ処理が要求されると、バックアップ処理スクリプト (md_backup) が起動され、バックアップ対象のメールパーティションのバックアップを作成します。 バックアップ処理スクリプトが起動中の場合は、メールパーティションのバックアップ状態がバックアップ中に設定されます。

Apache、PostgreSQL のログ

Apache や PostgreSQL のログは標準では以下のファイルに出力されます。 ファイル名に「YYYY-MM-DD (年-月-日)」が含まれるログは 1 日ごとにローテートされます。 なお、以下のログファイルは自動的に削除されません。 ディスク容量を圧迫しないように定期的に過去のログファイルを削除するようにしてください。

Apache のアクセスログ
/opt/maildepot3/var/log/httpd/access-YYYY-MM-DD.log
Apache のエラーログ
/opt/maildepot3/var/log/httpd/error-YYYY-MM-DD.log

PHP のエラーメッセージなどもこのファイルに出力されます。 管理ツールの画面に何も表示されない場合などにはこのファイルを確認してください。

PostgreSQL のログ
$PGDATA/pg_log/postgresql-YYYY-MM-DD.log

$PGDATA にはデータベースクラスタディレクトリを指定します。 データベースクラスタディレクトリは標準では /opt/maildepot3/data ディレクトリとなります。 データベースクラスタディレクトリが不明な場合には設定ファイル /opt/maildepot3/etc/maildepot.conf の db_datadir パラメータの値を確認してください。

PostgreSQL の起動ログ
/opt/maildepot3/var/log/postgresql-startup.log

PostgreSQL の起動に失敗した場合のみエラーメッセージがこのファイルに出力されます。

ログの削除

MailDepot の syslog 出力ファイル (/var/log/maildepot) ならびに Apache や PostgreSQL のログファイルは、 自動的には削除されません。

syslog 出力ファイルの削除

MailDepot の syslog 出力ファイルの自動削除を行うには、次の設定ファイルを作成します。

/etc/logrotate.d/maildepot
この設定ファイルは、ログ・ファイルの保存期間を指定します。
/var/log/maildepot
{
    # rotate log files monthly
    monthly
    # keep 12 month worth of backlogs
    rotate 12
    # use date as a suffix of the rotated file
    dateext
    # compress rotated log file
    compress
    # send signal to syslog service
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Apache、PostgreSQL のログファイルの削除

MailDepot の Apache、PostgreSQL のログファイルの自動削除を行うには、tmpwatch コマンドを利用します。

yum コマンドを実行し、tmpwatch をインストールします。

# yum install tmpwatch
次に、tmpwatch の実行スクリプトを作成します。
#!/bin/sh

tmpwatch -d -m 356d /opt/maildepot3/var/log/httpd/
tmpwatch -d -m 365d /opt/maildepot3/data/pg_log/
上記のスクリプトを日次で自動実行するために、/etc/cron.daily/maildepot にスクリプトを保存し、スクリプトに実行権限を設定します。
# chmod 755 /etc/cron.daily/maildepot
crond サービスにより、スクリプトが定期的に実行されます。