Courierメール兄弟には、
courierメールサーバの特徴をいうと、設定ファイルがこまかく分かれていてQmail風、 maildirの扱いやその他でも Qmailを意識 (ライバル視ではない) したところが結構多いです。
# dpkg -r exim # apt-get install courier-mta-ssleximは依存があるため削除されませんが、次のapt-get installで削除されます。 これでcourier-authdaemon、courier-base、courier-ssl (基本部分)、 courier-mta(-ssl)がインストールされます。 courierのインストール質問にはデフォルトでいいです。インストール後に、
# dpkg -P exim # cd /etc # rm -r eximでeximがきれいさっぱりなくなります。
インストールそのままだとmkesmtpdcertのバグのせいで、 /etc/courier/esmtpd.pemが作成されないので、 次のように作成しておきます。 esmtpd.pemはdaemonの所有にしておくか、 daemonグループにして読み取り権が必要です。 秘密鍵も一緒になっているので他者読み取り権はつけないでください。
# ln -s /etc/courier/esmtpd.pem /usr/lib/courier/esmtpd.pem # cd /usr/bin -- mkesmtpdcertスクリプトのバグ回避 # mkesmtpdcert # chgrp daemon /etc/courier/esmtpd.pem # chmod 640 /etc/courier/esmtpd.pem
# vi /etc/courier/me icarus.hoehoe.japanまずmeに自分のマシン名を完全修飾名で指定します。 書かないとhostnameの値つまりicarusだけになり、 他でちゃんと設定すればいいのですが面倒です。 meは変更したらnewaliasesしておきます。
# vi /etc/courier/locals locahost icarus icarus.hoehoe.japan次にlocalsを編集します。このファイルは、キューにたまったメールのうち、 どれがローカルに配送すべきなのかを指定します。 これで、moke、moke@localhst、moke@icarus、moke@icarus.hoehoe.japan というメールアドレスはアカウントmoke宛であると判断されます。 localsは変更したら/etc/init.d/courier-mta restartしておきます。
# vi /etc/courier/smtpaccess/default 127.0.0.1 allow,RELAYCLIENT 10 allow,RELAYCLIENT 172.16 allow.RELAYCLIENT 172.17 allow,RELAYCLIENT 172.18 allow,RELAYCLIENT ... 172.31 allow,RELAYCLIENT 192.168 allow,RELAYCLIENTこのファイルには、無条件でリレーを許可するものを追加します。 172.16.0.0/12のアドレスレンジが標準では追加されていませんので、 必要なら追加します。上記のようにいちいち指定しないといけませんし、 また、アドレス部と指示部は必ず1つだけのタブで区切る必要があります。 smtpaceess内のファイルを変更したらmakesmtpaccessしておきます。
# vi /etc/courier/esmtpacceptmailfor icarus.hoehoe.japan最後に、smtp経由で外部から受け取るメールをesmtpacceptmailfor に指定します。 localsはあくまでキューに入ったものの配送に用いられるだけなので、 smtp経由で受け取りたいメールの宛先をここに記述します。 (なお、esmtpacceptmailfor.dirからmakeacceptmailforコマンドで作成される esmtpacceptmailfor.datファイルでも指定できます。両方有効です。)
そして次に、メールを受け取るユーザのmaildir形式のメールボックスを
作成しなければなりません。
courierは標準でmaildir形式を扱いますが、
メール配送指定先に指定されたディレクトリがないと、
それをmailbox形式であると判断し、ファイルとして作ってしまいます。
(Qmailではmailboxへの配達とmaildirへの配達指示は明らかに異なりますし、
eximではmaildirを自動で作ってくれますが、courierはそんなことしません。)
よって、各ユーザでmaildir形式のメールボックスを作成します。
各ユーザに.courierファイルがなかった場合に標準で配送されるのは、
/etc/courier/courierdのDEFAULTDELIVERYで指定された ./Maildir ディレクトリです。
moke% cd moke% maildirmake Maildirこれで~moke/Maildirディレクトリにmaildir形式のメールボックスが作成されます。 まずmokeアカウントでメールをmailコマンドで内部や外部に送ってみましょう。 また外部からmoke@icarus.hoehoe.japan宛にメールを送ってみて、 それがmokeアカウントの~moke/Maildir/curに入ってくるか 確認しましょう。
このアカウントmokeはそのままの設定でもldapで定義したアカウントmokeにも 配送してくれます。 これは、
# vi /etc/courier/locals locahost icarus icarus.hoehoe.japan hoehoe.japan # vi /etc/courier/esmtpacceptmailfor icarus.hoehoe.japan hoehoe.japanこれだけです。/etc/init.d/courier-mta restartの実行をお忘れなく。 なお、moke@hoehoe.japan宛てのメールは最初に moke@icarus.hoehoe.japan宛てに変更されるので、 /etc/aliasesでこれら2つを区別して転送することはできません。 区別したい場合はlocalsには記述せずに、以下のようにします。
# vi /etc/courier/esmtpacceptmailfor icarus.hoehoe.japan enyaka.japan # vi /etc/aliases ... info@enyaka.japan: mokeこれでinfo@enyaka.japan宛のメールはローカルアカウントmokeに届きます。
# vi /etc/aliases ... @enyaka.japan: mokeのようにして、かつ、
moke% vi .courier-default ./Maildirとします。上記の一括形式でメールを転送すると、info@enyaka.japan宛の メールはローカルアカウントmoke-info宛となります。 ここでアカウントmokeに.courier-defaultを作っておかないと、 ユーザ無しと見なされて配送されません。 (.courierがあってもだめです。)
# vi /etc/aliases ... @enyaka.japan: moke-enyakaとしておくとinfo@enyaka.japan宛のメールはmoke-enyaka-infoとして届きます。
enyaka.japan. MX 10 icarus.hoehoe.japan.みたいにenyaka.japanドメイン宛のメールも受信して、これを マシンposeidon.hoehoe.japanに転送したい場合は次のようにします。
# vi /etc/courier/esmtpacceptmailfor icarus.hoehoe.japan enyaka.japan # vi /etc/courier/esmtproutes enyaka.japan: poseidon.hoehoe.japanenyaka.japanの特定のユーザだけをposeidonに転送したい場合は aliasesに次のように追記します。
# vi /etc/aliases ... mokeke@enyaka.japan: mokeke@enyaka.japan undara@enyaka.japan: undara@enyaka.japan @enyaka.japan: ERRORNOUSER