!!!qmail+IPv6+SMTP-Auth+APOP
{{category FreeBSD}}
{{category IPv6}}
{{category mail}}
----
!前提
FreeBSD 4.8-RELEASEに新規でインストールするイメージで。
qmailとtcpserverにはIPv6パッチを当て、
SMTP-AuthとAPOPはqmail-vidaパッケージを使用する。
あたしが実際にインストールしたときには既にqmailはインストール済だったので、
設定ファイルのあれとかそれとかが違っていても責任持たん。
別に他のどこが違っていたとしても責任持たんけど。
----
!事前準備
qmailはわりとややこしいので事前にドキュメントには目を通しておく。
*http://man.qmail.jp/
*http://www.big.or.jp/~mio/ca/qm/index.html
*http://qmail-vida.sourceforge.jp/doc/index.html
特にtcpserverの挙動はしっかりと把握しておくこと。
起動Scriptくらい理解しておかないと恥ずかしい。
----
!アーカイブ
めんどくさいのでdjbのソフトは[[qmail-vida]]サイトのmirrorをつかった。
*[qmail1.03|http://www.emaillab.org/djb/qmail-vida/software/qmail-1.03.tar.gz]
*[checkpassword0.90|http://www.emaillab.org/djb/qmail-vida/software/checkpassword-0.90.tar.gz]
*[tcpserver0.88|http://www.emaillab.org/djb/qmail-vida/software/ucspi-tcp-0.88.tar.gz]
*[cdb0.75|http://www.emaillab.org/djb/qmail-vida/software/cdb-0.75.tar.gz]
*[qmail-vida0.53|http://sourceforge.jp/frs/index.php?group_id=396]
パッチは[[qmail patchあれこれ]]を参照。
qmailのlocaltime patchとIPv6 patch、それにsmtp-relay-reject patchも使用した。
tcpserverのIPv6化は[ギゾネット|http://www.gizo.net/bsd/qmailv6.html]も参照。
[配布元ページ|http://www.fefe.de/ucspi/]にある ucspi-tcp-0.88-ipv6.diff13.bz2
はdietlibcがどーのこーのとややこしいので、
[ucspi-tcp-0.88-ipv6.diff9.bz2|http://www.fefe.de/ucspi/ucspi-tcp-0.88-ipv6.diff9.bz2]
を使用する。
----
!インストール(patch当て)
標準の /var/qmail にインストールにすることを前提で。
とりあえず、とってきたアーカイブを /usr/local/src/qmail あたりにでも保存する。
patch群は /usr/local/src/qmail/patch あたりにてけとーに。
だーっとtarballとbzip2をほどいておく。
こんな感じ。
osakana@marino:qmail>ll
total 464
drwxrwxr-x 9 root wheel 512 8 31 01:34 .
drwxrwxr-x 10 root wheel 512 12 18 2002 ..
drwxr-xr-x 2 osakana wheel 2048 2 20 2000 cdb-0.75
-rw-r--r-- 1 osakana wheel 54162 1 17 2002 cdb-0.75.tar.gz
drwxr-xr-x 2 osakana wheel 2048 12 23 2000 checkpassword-0.90
-rw-r--r-- 1 osakana wheel 15631 11 25 2001 checkpassword-0.90.tar.gz
drwxr-xr-x 6 osakana wheel 512 9 26 2002 old
drwxr-xr-x 2 osakana wheel 512 8 31 01:32 patch
drwxr-xr-x 2 osakana wheel 9216 6 15 1998 qmail-1.03
-rw-r--r-- 1 osakana wheel 220668 11 25 2001 qmail-1.03.tar.gz
drwxr-xr-x 6 osakana wheel 512 1 17 2003 qmail-vida-0.53
-rw-r--r-- 1 osakana wheel 73484 1 17 2003 qmail-vida-0.53.tar.gz
drwxr-xr-x 2 osakana wheel 4608 3 19 2000 ucspi-tcp-0.88
-rw-r--r-- 1 osakana wheel 53019 11 25 2001 ucspi-tcp-0.88.tar.gz
osakana@marino:qmail>ll patch/
total 132
drwxr-xr-x 2 osakana wheel 512 9 2 13:11 .
drwxrwxr-x 9 root wheel 512 8 31 01:34 ..
-rw-r--r-- 1 osakana wheel 28471 5 4 2001 qmail-1.03-v6-20001010.diff
-rw-r--r-- 1 osakana wheel 2603 6 15 1999 qmail-date-localtime.patch
-rw-r--r-- 1 osakana wheel 1230 2 10 2002 qmail-smtpd-relay-reject
-rw-r--r-- 1 osakana wheel 94476 11 4 2001 ucspi-tcp-0.88-ipv6.diff9
で、パッチあてる。
まずは qmail-vida に含まれている qmail, checkpasswordに対するpatch.
これは qmail-vida-0.53 直下で
osakana@marino:qmail-vida-0.53>make patch
するだけ。インストール先を変えていたり、
qmailやcheckpasswordへのPATHが違ったりしたらこの限りではないのでMakefileを編集する。
てゆか[ドキュメント|http://qmail-vida.sourceforge.jp/doc/install.html]読め。
make patch 後に忘れずに
osakana@marino:qmail-vida-0.53>make copy
もしておく。これじゅーよー。オレ1回忘れてえらい目にあった(ぉ
そいからqmailへのパッチもあてる。qmail-1.03 直下で
osakana@marino:qmail-1.03>patch -p1 <../patch/qmail-date-localtime.patch
して
osakana@marino:qmail-1.03>patch -p1 <../patch/qmail-smtpd-relay-reject
して
osakana@marino:qmail-1.03>patch -p1 <../patch/qmail-1.03-v6-20001010.diff
する。
qmail-vidaと同じソースに当たったりもするけどpatch(1)は賢いので問題なく当たるようだ。
最後にtcpserverへもパッチあてる。 ucspi-tcp-0.88 直下で
osakana@marino:ucspi-tcp-0.88>patch -p1 <../patch/ucspi-tcp-0.88-ipv6.diff9
以上。
----
!インストール(user:group作成)
qmail, qmail-vidaは処理内容によってPGMが分割されていて、
各PGMはわりと別々の権限で動く。ぶっちゃけた話かなり大量の専用ユーザを必要とする。
詳しくは[インストール|http://www.big.or.jp/~mio/ca/qm/man/qm_man_installation.html]
[マニュアル|http://qmail-vida.sourceforge.jp/doc/install.html]を読むといい。
qmailが必要とするuser:groupは以下
,user,group
,alias,nofiles
,qmaild,nofiles
,qmaill,nofiles
,qmailp,nofiles
,qmailq,qmail
,qmailr,qmail
,qmails,qmail
で、これに加えてqmail-vidaが
,user,group
,pop,vida
,authdb,vida
,qmailu,vida
を要求する。ふざけんなと思った人、正解。オレもそう思う。
まぁ各ユーザの詳細についてはマニュアル参照。
FreeBSD用の登録shellを用意しておいたので、手抜きしたい人は使うといい。
#!/bin/sh
pw groupadd nofiles
pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
pw useradd qmaild -g nofiles -d /var/qmail/qmail -s /nonexistent
pw useradd qmaill -g nofiles -d /var/qmail/qmail -s /nonexistent
pw useradd qmailp -g nofiles -d /var/qmail/qmail -s /nonexistent
pw groupadd qmail
pw useradd qmailq -g qmail -d /var/qmail/qmail -s /nonexistent
pw useradd qmailr -g qmail -d /var/qmail/qmail -s /nonexistent
pw useradd qmails -g qmail -d /var/qmail/qmail -s /nonexistent
pw groupadd vida
pw useradd vpop -g vida -d /home/pop -s /bin/tcsh -m
pw useradd authdb -g vida -d /var/qmail/authdb -s /nonexistent
pw useradd qmailu -g vida -d /var/qmail/users -s /nonexistent
FreeBSD4.xの場合、popとゆーユーザは既にシステムに登録されているので、
ここではvpopとゆーユーザを代わりに登録することにする。
で、pop → vpop の変更に伴って、ソースを変更する必要がある。
qmail-vida-0.53/src/vida と checkpassword-0.90 に conf-realdomainowner
とゆーファイルがあるので、こいつを編集しておく。
詳細は[マニュアル|http://qmail-vida.sourceforge.jp/doc/install.html]参照。
osakana@marino:vida>cat conf-realdomainowner
vpop
This is the owner for real domain.
----
!インストール(コンパイル, インストール)
コンパイル, インストールは特に特別な手順はなし。
ドキュメント通りに make して make setup して make check すればいい。
詳細略。特にコンパイルエラーは出なかった。
qmail, qmail-vida, checkpassword, tcpserver, cdbをインストールする。
----
!設定(qmail)
qmail-1.03 で config scriptを実行すれば、ある程度の設定ファイルは作成できる。
DNS引けない環境?知らん(ぉ
# pwd
/usr/local/src/qmail/qmail-1.03
# ./config
あとは /var/qmail/control 以下のファイルをてけてけと編集する。
各ファイルの意味は[ここ|http://www.big.or.jp/~mio/ca/qm/ref/qm.html]に説明がある。
locals, me, rcpthosts あたりは中身を確認しておいたほうがいい。
そいからaliasの作成。
/var/qmail/alias あたりに .qmail-hoge ファイルを作成して、
hoge@example.com 宛のメールの転送先を記述しておく。
abuse, mailer-daemon, postmaster, webmaster, admin
あたりはrootに転送しておくといい。
root宛のメールはさらに管理者の実ユーザに転送させる。
osakana@marino:alias>cat .qmail-abuse
&root
osakana@marino:alias>cat .qmail-root
&osakana
な感じ。
----
!設定(qmail-vida)
とりあえずrootで /var/qmail/bin/vida-pwdbinit を実行して、passwd databaseを初期化する。
今はこんだけでいい。
----
!設定(tcpserver)
SMTPアクセス用のDBを作成する。
/var/qmail/cdb とかてけとーにディレクトリ掘ってそこで作成することにする。
SMTP relayには全てSMTP-Auth必須とゆーポリシーでもいいけど、
localhostくらいは認証なしで通したいし、
LAN内からも通したい場合だってあるだろう。
smtpとゆーファイルを作成して、以下のように記述する
osakana@marino:~>cat /var/qmail/cdb/smtp
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
::1:allow,RELAYCLIENT=""
fe80:0:0:0::allow,RELAYCLIENT=""
:allow
上から順にIPv4のlocalhost, IPv4の同一LAN, IPv6のlocalhost,
IPv6のリンクローカルアドレスからのrelayを
SMTP-Authなしで受け付ける設定。
その他のホストからのrelayはSMTP-Authが必要となる。
アドレスとallowとの区切りが:なので、
IPv6の0の省略はあまり使わないほうがいいかもしれない。
先の例だと4行目を
fe80:::allow,RELAYCLIENT=""
なんて書いたらもうわけわからんし。
そもそもprefix指定でないので後ろの省略はできなさそう。
ちなみにここで環境変数ALLOWPLAINなんてものを指定してやると、
SMTP-Authの際にplain textで認証が可能になる。
無指定だとCRAM-MD5のみ。まぁ無指定でええと思う。
いまどきMD5なSMTP-AuthがしゃべれないようなMUAは捨てよう。
で、あとはこのファイルからtcpserverが参照するDBを作成する。
# pwd
/var/qmail/cdb
# tcprules smtp.cdb smtp.tmp <smtp
----
!起動Script
tcpserver経由で起動することになるわけだが、これがややこしいので、
[tcpserver(1)|http://www.big.or.jp/~mio/ca/qm/ut/ut_ref_tcpserver_1.html],
[qmail-vidaインストールマニュアル|http://qmail-vida.sourceforge.jp/doc/install.html]
あたりは熟読しておく。で、熟読して理解したあとに、以下のScriptをコピれ(笑
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOST=mail.example.com
exec env - \
PATH="$PATH" \
qmail-start ./Maildir splogger qmail &
exec env - \
PATH="$PATH" \
tcpserver -vHR -l"$HOST" -x /var/qmail/cdb/smtp.cdb \
0 25 fixcrio \
qmail-smtpup "$HOST" checkpassword qmail-smtpd 2>&1 | \
splogger smtpd &
exec env - \
PATH="$PATH" \
tcpserver -vHR -l"$HOST" \
0 110 \
qmail-popup "$HOST" checkpassword qmail-pop3d Maildir 2>&1 | \
splogger pop3d &
qmail-vidaのマニュアルではtcpserverのオプションでIPアドレスを与えているが、
この例ではv4, v6のデュアルスタックにするためにアドレス指定はしていない。
また、qmail-vidaを導入していない環境では、qmail-smtpdを起動する際に
qmaildのuidとnofilesのgidを指定するが、
今回はvidaのqmail-smtpupを経由させて起動させることになるので、
uid, gidを指定してはいけないことに注意。
checkpasswordはroot権限で起動させないと、passwd DBが読めない。
----
!ユーザ作業
あとはユーザ側での作業になる。
それまでMailboxな環境だった場合は、各ユーザ毎にMaildirの作成が必要。
これはそのユーザ権限で
osakana@marino:~>cd
osakana@marino:~>/var/qmail/bin/maildirmake Maildir
を実行すればいい。
それからSMTP-Auth及びAPOP用のpasswdを作成する。
これもユーザ権限で
osakana@marino:~>/var/qmail/bin/vida-passwd
を実行する。
あとは .qmail の作成。
基本的には
osakana@marino:~>cd
osakana@marino:~>cat .qmail
./Maildir/
で問題ない。転送設定とかはぐぐれ(ぉ
Maildirと.qmailに関してはskeltonに作成しておくのが正義。
既存ユーザ分はまぁがんばるしかないが。
あと、qmail-vidaの機能でVirtualDomainなんてものも使えるんだが、
これに関しては今回は割愛する。
VirtualDomain使う場合は起動Scriptもいぢる必要があるので覚えておこう。
----
!その他
この手順の通りにやって失敗してもおさかなは責任を負いません。
参考程度に見ておくのがいいでしょう。
嘘を嘘と見抜けない以下略(ぉ
あ、でも間違った記述に気が付いたら指摘するとおさかなが喜びます :D