ハイ・コストパフォーマンス サーバーレンタル

独自ドメイン100MB \500 サブドメイン50MB \300
HOME | ABOUT | FREE SCRIPTS | BBS | LINKSはまりメモ

 

サーバー構築 はまりメモ

MTA関係

Courier Mail Server
+spamassasin
+fml

 

 

 

 

 

 

サーバー構築 はまりメモ

Courier Mail Server

最終更新日(2003/12/2)

さて、Courier Mail Server です。 "Courier" といえばIMAPが有名ですが、こちらはあまり有名ではありません。

が、基本的な機能(SMTP/POP/IMAP - TLS/SSL/SMTP-AUTH対応)はもちろんですが、ML、Webメール、カレンダーからFAXまで扱える、大変高機能なメールサーバーとなっていて非常に魅力的です。

但し、オリジナルでは日本語には対応しておらず、(webmail - sqwebmailの日本語化パッチはあります)、その他のツールも使えるかどうかは謎。^^;

現在稼動している qmail にとりたて不満があるわけではありませんが、パッチを当てなくても必要な機能が用意されていること、なんとなく qmail に似ている^^;、すでに courier imap をPOP3/IMAPで使用しているため、メール環境の統一(特にログ関連)ができる、等といった理由で、少々浮気してみます。

筆者の環境は、redhat 9 / qmail + vpopmail 、バーチャルアカウントのみで運用していますが、その環境をなるべく再現できるようにやってみたいと思います。

参照リンク

http://www.courier-mta.org/ (本家)
http://www.courier-mta.jp/ (courier-mta.jp)
http://courier-users.jp/   (日本Courierユーザ会)

ダウンロード

http://www.courier-mta.org/download.php から、courier-0.44.2.tar.bz2(または、最新版) をダウンロードします。

インストール

解凍して ./configure して make、のいつものパターンですが、 root でやってしまうと WARNING が出てしまうので、ここはいったん一般アカウントになってから行います。
( ./configure --disable-root-check で強制的に進めることはできますが・・・)

# su ユーザー
$ tar jxvf courier-0.44.0.tar.bz2
$ cd courier-0.44.0

configure のオプションは適当にドキュメントを見て加えてください。

筆者は、qmail + vpopmail からの移行なので、ユーザー/グループを 既存のvpopmailアカウントで
--with-mailuser=vpopmail (Courierの一部をこのアカウント権限で動作させる)
--with-mailgroup=vchkpw (Courierの一部をこのグループ権限で動作させる)
と指定しました。

$ ./configure (--必要なオプションを追加)
$ make
$ make check
$ exit (rootに戻る)
# make install
# make install-configure

--with-trashquota、--enable-workarounds-for-imap-client-bugs を configure で指定した場合、make check が失敗します。

それでも問題はないようですが、まず、上記オプションを指定しないで、make check まで済ませて確認した後、上記オプションを加えて再度 configure からやり直すことが推奨されています。

全部終了したらインストールは完了です。

RPMの作成

redhatな方は、courier.spec が同梱されているので、それを元にRPMパッケージを作成してからインストールすると良いかもしれません。

依存関係でごちゃごちゃ言われる可能性が高いので、あらかじめ、apt を入れておくと幸せになれるかもしれません。

RPMを作る際の注意点

  • root でない一般アカウントでRPMパッケージを作成したほうがいいです。

  • --with-trashquota、--enable-workarounds-for-imap-client-bugs を指定した場合は、courier.spec の %{__make} check の項(377行目あたり)をコメントアウトします。

  • RPM外でperlを別途インストールしている場合には、/usr/bin/perl でなく、/usr/local/bin/perl を認識している状態でパッケージが作成されることがあります。

    その状態で作成したRPMは、インストールする際に、"/usr/local/bin/perl is needed by ..." と依存関係のエラーが出てインストールに失敗してしまいます。  

    もちろん rpm --nodeps でインストールはできるのですが、作成前に必ず /usr/bin/perl を参照するように あらかじめPATH を設定しておくとよいでしょう。 (# export PATH=/bin:/usr/bin)

作成したRPMのインストール

  • courier-0.44.2-1.9.i686.rpm
  • courier-debuginfo-0.44.2-1.9.i686.rpm
  • courier-fax-0.44.2-1.9.i686.rpm
  • courier-imapd-0.44.2-1.9.i686.rpm
  • courier-ldap-0.44.2-1.9.i686.rpm
  • courier-maildrop-0.44.2-1.9.i686.rpm
  • courier-maildrop-wrapper-0.44.2-1.9.i686.rpm
  • courier-mlm-0.44.2-1.9.i686.rpm
  • courier-mysql-0.44.2-1.9.i686.rpm
  • courier-pgsql-0.44.2-1.9.i686.rpm
  • courier-pop3d-0.44.2-1.9.i686.rpm
  • courier-smtpauth-0.44.2-1.9.i686.rpm
  • courier-webadmin-0.44.2-1.9.i686.rpm
  • courier-webmail-0.44.2-1.9.i686.rpm

大量の^^;RPMができますが、必要なものだけをインストールすればOKです。

筆者は、ML→fml を使う、FAX→使わない、DB関連→使わない、webmail→SquirrelMail を使う、webadmin→使わない、というわけで

  • courier-0.44.2-1.9.i686.rpm
  • courier-imapd-0.44.2-1.9.i686.rpm
  • courier-maildrop-0.44.2-1.9.i686.rpm
  • courier-maildrop-wrapper-0.44.2-1.9.i686.rpm
  • courier-pop3d-0.44.2-1.9.i686.rpm
  • courier-smtpauth-0.44.2-1.9.i686.rpm

をインストールしました。 シンプルな構成ですね;;(乗り換えの意味が・・・ない?^^;)

設定

設定ファイル群は /etc/courier か、/usr/lib/courier/etc にあるはずです。 必要な設定ファイルを編集、または作成します。

基本設定

※以下に無い設定ファイルは、こちら

me

自ホスト名を書きます

mail.example.com

defaultdomain

ドメインの無いアドレスに付くデフォルトのドメインを書きます

example.com

<root> は、 <root@example.com> となります。

locals ローカルで受けるドメインをリストします。 (システムアカウント用)

localhost
example.com
example.net


<user@example.com>へのメールはアカウント "user" へ届けられます。
<user@example.net>へのメールもアカウント "user" へ届けられます。
hosteddomains

ローカルで受けるドメインをリストします。 (バーチャルアカウント用)

example.com
example.net


<user@example.com>へのメールは、アカウント "user@example.com"へ届けられます。
<user@example.net>へのメールはアカウント "user@example.net" へ届けられます。

※変更後には makehosteddomains が必要

esmtpacceptmailfor

SMTPで受け付けるドメインを全てリストします。

example.com
example.net
mail2ndry.example.org

※変更後には makeacceptmailfor が必要。

aliases/system

システムアカウントのaliasを設定します。

※変更後には makealiases が必要。

設定データベースの更新

設定を変更したら、データベースに反映させるために次のコマンドを使用します。

hosteddomains
# /usr/lib/courier/sbin/makehosteddomains

esmtpacceptmailfor
# /usr/lib/courier/sbin/makeacceptmailfor

aliases
# /usr/lib/courier/sbin/makealiases

これをやらないと、データが反映されませんので注意。

デーモン設定

※変更した箇所のみ記述、その他のオプションは各設定ファイルを直接参照のこと。

authdaemonrc

authdaemon (認証デーモン)の設定ファイル

authmodulelist="authcram authuserdb"

必要な認証モジュール以外を省きます。システムアカウントは使わない(全てバーチャルでハンドリングする)ので、authpam も抜きました。

pop3d/pop3d-ssl

pop3d の設定ファイル

<pop3d>
SASLコマンドを有効にする

POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
POP3AUTH_TLS="LOGIN PLAIN"

<pop3d-ssl>
SSLの証明書は初回起動時に勝手に作成しますが、必要であれば、自分で別に作成した証明書のパスを指定します。

TLS_CERTFILE=証明書ファイル
TLS_TRUSTCERTS=CA証明書ファイル

imapd/imapd-ssl

imapd の設定ファイル

<imapd-ssl>
SSLの証明書は初回起動時に勝手に作成しますが、必要であれば、自分で別に作成した証明書のパスを指定します。

TLS_CERTFILE=証明書ファイル
TLS_TRUSTCERTS=CA証明書ファイル

esmtpd/esmtpd-ssl

smtpd の設定ファイル

<esmtpd>
IDENT Lookup をしない、AUTHを有効にする、esmtpdを起動する(デフォルトでは起動しない。)

TCPDOPTS="-noidentlookup -stderrlogger=/usr/lib/courier/sbin/courierlogger"
AUTHMODULES="authdaemon"
ESMTPAUTH="LOGIN CRAM-MD5"
ESMTPAUTH_TLS="PLAIN LOGIN CRAM-MD5"
ESMTPDSTART=YES

<esmtpd-ssl>
SSLの証明書は初回起動時に勝手に作成しますが、必要であれば、自分で別に作成した証明書のパスを指定します。esmtpd(ssl)を起動する(デフォルトでは起動しない。)

TLS_CERTFILE=証明書ファイル
TLS_TRUSTCERTS=CA証明書ファイル
ESMTPDSSLSTART=YES

.qmailを読むようにする

Courier では、転送指定などをホームディレクトリの .courier というファイルで行います。
記述内容などは、ほとんど .qmail 互換らしいので、.qmail を .courier の代わりに読むように設定するオプションが用意されています。

# echo "qmail" > /etc/courier/dotextension

アカウント

vpopmailドメインの移行

vpopmail のドメインを、Courier のアカウントデータベースに移行します。

# /usr/lib/courier/sbin/vchkpw2userdb --todir=/etc/courier/userdb/vpopmail

vpopmail の domains 以下に登録されたドメインとアカウントデータが、/etc/courier/userdb/vpopmail/domains にそれぞれのドメイン名のついたテキストファイルとしてコンバートされます。 shell の項に quota の値が入ったりしていて不完全な気もしますが(ーー、後で修正することにしてとりあえずそのままにしておきます。

vpopmail を userdb にコンバートすると、以前はアカウント名として使えていたuser%example.com といった % 形式のアカウントが認識されなくなります。 したがって、その形式を使用しているユーザーには、user@example.com のような、アドレス形式のアカウント名に変更してもらう必要があります。

もし既登録アカウントの変更が困難な場合は、authdaemonrc の authmodulelist に "authvchkpw" を追加しておきます。 そうすると、vpopmail に登録されているアカウントは、 % 形式のアカウント名が使えるようになりますが、そのアカウントの操作は vpopmailを介して行うこととなります。

バーチャルアカウントの追加、編集、削除

アカウントを追加、編集、削除するには userdb を使います。

アカウント一覧
# userdb -show -f アカウントファイル

アカウント個別の設定内容表示
# userdb -show -f アカウントファイル アドレス

値のセット(存在しないアドレスの場合はアカウントが新たに追加される)
# userdb -f アカウントファイル アドレス set 設定名=値 ・・・

値をクリア
# userdb -f アカウントファイル アドレス unset 設定名・・・

アカウントを削除
# userdb -f アカウントファイル アドレス del

このユーティリティは大変シンプルにできていて、 間違った設定名を渡してもそのまま追加されます。 ご注意・・・ーー;

設定名
uid

このアカウントをハンドリングするシステムアカウントのUIDを数値で設定します。

gid

このアカウントをハンドリングするシステムアカウントのGIDを数値で設定します。

home

ホームディレクトリの場所を設定します。

mail

Maildir形式のメールボックスを設定します。

quota このアカウントの quota を設定します。(例えば、10000000S、だと10MB)

メールボックスを作成

Maildir 形式のメールボックスを作成するには maildirmake を使用します。 標準のメールボックスには Maildir という名前を使います。

# cd ホームディレクトリ
# maildirmake ./Maildir

パスワード

パスワードの設定には、userdbpw を userdb とあわせて使用します。CRAM-MD5/CRAM-SHA1認証を使う場合は、デフォルトのパスワードと CRAM-MD5/CRAM-SHA1認証用のパスワードをそれぞれ設定しなくてはいけません。

デフォルトのパスワード設定
# userdbpw -md5 | userdb -f アカウントファイル アドレス set systempw

CRAM-MD5認証用のパスワード設定
# userdbpw -hmac-md5 | userdb -f アカウントファイル アドレス set hmac-md5pw

CRAM-SHA1認証用のパスワード設定
# userdbpw -hmac-sha1 | userdb -f アカウントファイル アドレス set hmac-sha1pw

pop,imap,smtpsそれぞれに違うパスワードも設定できる
# userdbpw -md5 | userdb -f アカウントファイル アドレス set pop3pw
# userdbpw -md5 | userdb -f アカウントファイル アドレス set imappw
# userdbpw -md5 | userdb -f アカウントファイル アドレス set esmtppw

キャッチオールアカウントの追加

登録されていないアドレスは全て指定のドメインアカウントに配送する機能(いわゆる、キャッチオールアカウント)を追加してみます。 Courier では、 特別な "alias" という名前のアカウントをドメインのアカウントとして加えれれば可能です。

例えば、example.com 宛てのメールは <postmaster@example.com> に全て配送したいとすると、userdb を使って"alias@example.com" というアカウントを追加、その home値に postmaster@example.com のホームディレクトリを指定します。

# userdb -f /etc/courier/userdb/vpopmail/domains/example.com alias@example.com set home=postmaster@example.com のホームディレクトリ uid=ユーザーID gid=グループID

postmaster@example.com のホームディレクトリに .courier 、.courier-default (qmail互換設定をしている場合は、.qmail、.qmail-default ) ファイルを作成します。

# echo ./Maildir > postmaster@example.com のホームディレクトリ/.courier
# echo ./Maildir > postmaster@example.com のホームディレクトリ/.courier-default

userdb データベースの更新

アカウントの追加やパスワード変更などを行った後には makeuserdb コマンドで、データベースを更新します。

# makeuserdb

これをやらないと、データが反映されませんので注意。

起動

qmailの停止

現在稼動している qmail を止めます。

daemontools で起動している場合

# cd /service
# mv ファイル名 .ファイル名
# svc -dx /service/.ファイル名/log
# svc -dx /service/.ファイル名

で、qmail 関連のデーモンを停止させます。

Courier の起動

# /usr/lib/courier/sbin/courier start

redhatの場合
# /etc/init.d/courier start

syslogを確認して、正常に立ち上がっているようでしたら、メールの送受信をやってみます。


というわけで、導入後はトラブルもなく順調に稼動しています。(けっこういいかも)

 

次回は>>Courier + maildrop + spamassassin

HOME | ABOUT | FREE SCRIPTS | BBS | LINKSはまりメモ

webmaster@elemsoft.com
(C)1997-2003 ELEMENTZ. all rights reserved.