qmailは致命的な欠陥が無いせいか、バージョンアップが長い間されていません。
しかし、機能拡張の為のパッチが沢山でていて、パッチをあてるのが面倒です。
現在、パッチをあてるのが簡単なnetqmailというのがでています。
今回はStray Penguinさんのサイトを参考にバーチャルドメイン、SMTP-AUTHとCRAM-MD5による暗号化、APOPなどをサポートしたqmai-vidaをnetqmai-1.05と組み合わせてインストールしました。
Stray Penguinさんのサイトは、いろいろな自作パッチを公開されているので、必見です。
netqmail+qmail-vidaをFedora Core4にインストール
ダウンロードするソフト
| netqmail-1.05.tar.gz | http://qmail.org/netqmail/ |
| qmail-vida-0.53.tar.gz | http://qmail-vida.sourceforge.jp/ |
| checkpassword-0.90.tar.gz | http://cr.yp.to/checkpwd.html |
| ucspi-tcp-0.88.tar.gz | http://cr.yp.to/ucspi-tcp.html |
| date-localtime | http://mirror.averse.net/pub/FreeBSD/ports/local-distfiles/sada/ |
| gregex-20040601 | http://www.asahi-net.or.jp/~aa4t-nngk/codes/netqmail-vida-qregex-20040601.patch |
| validrcptto | http://www.asahi-net.or.jp/~aa4t-nngk/codes/netqmail-vida-qregex-vrt.patch |
上のgregexh-20040601はbadmailto、badmailfrom機能を付加するpatch、validrcpttoは指定したメールアドレス以外のメールを受け取らないようにするpatchです。必要なければ入れなくてもかまいませんが、spam対策にはお薦めです。
インストール
| 管理者権限になり、現在のメールサーバ関連(postfix or sendmail、dovecot,saslauth)を止めます。 | |
| SMTPサーバがPostfix、POPサーバがdovecot、SMTP-AUTHがsaslauthの場合 | |
| # su - | 管理者権限になる |
| # /etc/init.d/postfix stop | postfixを止める。 |
| # /etc/init.d/dovecot stop | dovecotを止める。 |
| # /etc/init.d/saslauth stop | saslauthを止める。 |
| # chkconfig --del postfix | スタートアップからpostfixを外す |
| # chkconfig --del dovecot | スタートアップかdovecotを外す |
| # chkconfig --del saslauth | スタートアップからsaslauthを外す |
qmailのホームディレクトリを作成
# mkdir /var/qmail
pathの設定
/etc/profileを編集
MAIL="$HOME/Maildir" < --変更
MAILDIR=$MAIL <--追加
export PATH USER LOGNAME MAIL MAILDIR ~以下省略 <--MAILDIRを挿入
qmailの稼働に必要なユーザとグループを作成(uidとgidは500番以上で作成)
# groupadd -g 600 nofiles
# groupadd -g 601 qmail
# useradd -u 600 -g nofiles -d /var/qmail/alias -m -k /dev/null -s /sbin/nologin alias
# useradd -u 601 -g nofiles -d /var/qmail -m -k /dev/null -s /sbin/nologin qmaild
# useradd -u 602 -g nofiles -d /var/qmail -m -k /dev/null -s /sbin/nologin qmaill
# useradd -u 603 -g nofiles -d /var/qmail -m -k /dev/null -s /sbin/nologin qmailp
# useradd -u 604 -g qmail -d /var/qmail -m -k /dev/null -s /sbin/nologin qmailq
# useradd -u 605 -g qmail -d /var/qmail -m -k /dev/null -s /sbin/nologin qmailr
# useradd -u 606 -g qmail -d /var/qmail -m -k /dev/null -s /sbin/nologin qmails
qmail-vida用のユーザとグループを作成
# groupadd -g 900 vida
# useradd -u 900 -g vida -d /home/pop -s /bin/bash pop
# useradd -u 901 -g vida -d /var/qmail/users -m -k /dev/null -s /sbin/nologin qmailu
# useradd -u 902 -g vida -d /var/qmail/authdb -m -k /dev/null -s /sbin/nologin authdb
# passwd pop
最後のpasswd popでpopユーザのパスワードを作成します。
popユーザはシステムアカウントを作らないでメールユーザを作るために必要なユーザなので、シェルをつぶしてはいけません。
また、メールユーザのみのユーザはこのディレクトリ(/home/pop)に配送されます。
ソースの解凍
# tar xzvf netqmail-1.05.tar.gz
# tar xzvf qmail-vida-0.53.tar.gz
# tar xzvf checkpassword-0.90.tar.gz
# tar xzvf ucspi-tcp-0.88.tar.gz
# gzip -d qmail-date-localtime.patch.gz
qmail-vidaのMakefireを編集
# vi ./qmail-vida-0.53/Makefile
QMAILSRC = ../qmail-1.03
↓
QMAILSRC = ../netqmail-1.05/netqmail-1.05
・
・
・
patch-qmail:
here=`pwd` && cd ${QMAILSRC} && \
${PATCH} -p1 < $${here}/patch/qmail.patch
↓
here=`pwd` && cd ${QMAILSRC} && \
${PATCH} -p1 -F 3 < $${here}/patch/qmail.patch
パッチの適用とソース補完
# cd netqmail-1.05
# ./collate.sh <--netqmailの展開と付属パッチの適用
# cd ../qmail-vida-0.53
# make patch
# cd ../netqmail-1.05/netqmail-1.05
# patch -p1 < ../../qmail-date-localtime.patch
# patch -p1 < ../../netqmail-vida-qregex-vrt.patch ((qregex と validrcptto をあてたい場合)
# patch -p1 < ../../netqmail-vida-qregex-20040601.patch (qregex だけをあてる場合)
# cd ../../checkpassword-0.90
# patch -p1 < ../netqmail-1.05/other-patches/checkpassword-0.90.errno.patch
# cd ../ucspi-tcp-0.88
# patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
# patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0_88_a_record_patch
# patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0_88_nobase_patch
# cd ../qmail-vida-0.53
# make copy
コンパイルとインストール
# cd ../netqmail-1.05/netqmail-1.05
# make setup check 必要なライブラリがコピーされる。
# ./config-fast mail.hxge.cxm
*サーバ名を入れるのは初回インストール時のみ。/var/qmail/control下にmeやdefaultdomainファイルが作られる。
*再インストールのときにサーバ名を入れると/var/qmail/control下のファイルが初期化されてしまう。
# cd ../../checkpassword-0.90
# make
# make setup check
# cd ../qmail-vida-0.53/src/vida
# make
# make setup check
# cd ../..
# make install-doc
# cd ../ucspi-tcp-0.88
# make
# make setup check
基本的な設定ファイルの作成
controlファイルの作成
# cd /var/qmail/control
me
上記の./config-fastで設定した mail.hxge.cxm が書かれている筈。
例:mail.hxge.cxm
local
meと同じだが認識すべきドメイン、サブドメインを全て書く。
- 例:
- localhost
- hxge.cxm
- mail.hxge.cxm
- smtp.hxge.cxm host.hxge.cxm
rcpthosts
受信・中継をおこなうドメイン・サブドメイン名を書く。
中継をおこなわないならlocalと同じ内容で良い。
hxge.cxmが書かれている筈。
plusdomain
mente+ など "+" で終わる宛先を指定したメールに付加するドメイン名。
hxge.cxm
databytes
smtpセッションで送受信を許可する最大メッセージサイズ。
4メガなら4*1024*1024で4194304
smtp セッションで送受信を許可しないMAIL FROMアドレス
- 例:
- .*[%#:\*\^!].*
- .*[\(\)].*
- .*[\{\}].*
- @.*@.*
- @(.*\.)*sex\.com
badmailto
smtpセッションで受付を許可しないRCPT TO アドレス
- 例:
- @.*@.*
- info@(.*\.)*hxge\.cxm
- sales@(.*\.)*hxge\.cxm
validrcptto
smtpsmtp セッションで受信を許可する RCPT TO: アドレス。
ここに書かれていないアドレスは受信しないのでメールユーザ全てを記入する必要がある。(validrcpttoパッチをあててなければ使用できない。)
- 例:
- ^mailer-daemon@
- ^postmaster@
- ^root@
- ^admin@
- ^sousuke(-.*)*@
- ^chidori(-.*)*@
aliasファイルの作成
# cd /var/qmail/alias
# touch .qmail-root
# echo admin > .qmail-root
# touch .qmail-mailer-daemon
# echo admin > .qmail-mailer-daemon
# touch .qmail-postmaster
# echo admin > .qmail-postmaster
# touch .qmail-webmaster
# echo admin > .qmail-webmaster
パーミッションの確認をする。
# ls -alF
-rw-r--r-- 1 root qmail 6 12月 3 09:51 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 6 12月 3 09:52 .qmail-postmaster
-rw-r--r-- 1 root qmail 6 12月 3 09:50 .qmail-root
-rw-r--r-- 1 root qmail 6 12月 8 18:59 .qmail-webmaster
mailere-daemon,postmaster,root,webmaster宛てのメールはadminに届く。
sendmailラッパーのリンクをはる。
# rm -f /usr/sbin/sendmail# rm -f /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
Muttrcの修正
/etcの下にMuttrcがあるか確認する。無ければインストールする# yum -y install muttrc*
下記部分を修正する。
set folder="~/Maildir"
set mbox="~/Maildir"
set mbox_type=Maildir
set spoolfile="~/Maildir"
実在ユーザと仮想ユーザ用のパスワードディレクトリの作成
# /var/qmail/bin/vida-pwdinit
このコマンドを実行することで/var/qmail/authdbの下にpop、pwdusersディレクトリが作成され、ユーザ登録をすると、自動的にcdb、passwdファイルが作成される。
起動スクリプトの作成
Stray Penguinさんのサイトにならい、qmail本体の起動スクリプト、qpop3dの起動スクリプト、qsmtpdの起動スクリプトと三つにわけました。
それぞれのファイルはこちら
qmail本体の起動スクリプト
qpop3dの起動スクリプト
qsmtpdの起動スクリプト
*qpop3dとpsmtpdの10行目のMYSVNAMEを自分のサーバ名に変更してください。
環境変数の設定
pop3 用 tcp.pop3.cdbを作成# mkdir /etc/service
# cd /etc/service
# vi tcp.pop3
:allow,ALLOWPLAIN=""
を書いたら保存し、cdbに書き出す
# tcprules tcp.pop3.cdb tcp.pop3.tmp < tcp.pop3d
smtp 用 tcp.smtp.cdbを作成
同じく/etc/serviceのディレクトリで
# vi tcp.smtp
127.0.0.1:allow,RELAYCLIENT="",ALLOWPLAIN=""
:allow,ALLOWPLAIN=""
保存し、cdbに書き出す
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
ユーザマネジメント
新規ユーザを作成したときユーザのhomeディレクトリに自動的にディレクトリMaildirと.qmailファイルが作成できるようにする# cd /etc/skel
# /var/qmail/bin/maildirmake Maildir
# touch .qmail
# echo ./Maildir/ > ./.qmail
既存ユーザの場合
対象ユーザになる。
# su - hiruneko
そのユーザのディレクトリに移るのでMaildirが無ければ作る
# /var/qmail/bin/maildirmake Maildir
# touch .qmail
# echo ./Maildir/ > /home/hiruneko/.qmail
パーミッションを確認
.qmailが600、Maildirが700になっているか確認
# ls -alF
-rw------- 1 hiruneko hiruneko 11 11月 27 18:59 .qmail
drwx------ 6 hiruneko hiruneko 4096 11月 27 18:55 Maildir/
パスワードの作成
# /var/qmail/bin/vida-passwd
パスワードの変更
# /var/qmail/bin/vida-passwd -c
登録解除の場合
/var/qmail/bin/vida-passwd -d
新規ユーザの場合
/etc/skelにMaildirと.qmailがあれば、自動的にMaildirと.qmailが作成されます。
後は/var/qmail/bin/vida-passwdでパスワードを作ってください。
メールユーザのみの作成
user$ su pop
pop$ /var/qmail/bin/vida-passwd -a -u hanako
pop$ /var/qmail/bin/vida-assign -a -u hanako
pop$ /var/qmail/bin/vida-maildirmake hanako Maildir
.qmailは自動で作成されないので手動で作成する必要がある。
validrcpttoのパッチをあててある場合は/var/qmail/control下のvalidcpttoにユーザ名を書かなければメール配送がされませんので注意してください。
ユーザのメール容量に制限をかけたい場合など、詳しいことはStray Penguinさんのサイトをご覧ください。