ひるねこ日記

Linux編


<Linux設定>

netqmail+qmail-vidaをFedora Core4にインストール

 qmailは致命的な欠陥が無いせいか、バージョンアップが長い間されていません。
しかし、機能拡張の為のパッチが沢山でていて、パッチをあてるのが面倒です。
現在、パッチをあてるのが簡単なnetqmailというのがでています。
今回はStray Penguinさんのサイトを参考にバーチャルドメイン、SMTP-AUTHとCRAM-MD5による暗号化、APOPなどをサポートしたqmai-vidaをnetqmai-1.05と組み合わせてインストールしました。 Stray Penguinさんのサイトは、いろいろな自作パッチを公開されているので、必見です。

ダウンロードするソフト

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と同じ内容で良い。

defaultdomain
hxge.cxmが書かれている筈。

plusdomain
mente+ など "+" で終わる宛先を指定したメールに付加するドメイン名。
hxge.cxm

databytes
smtpセッションで送受信を許可する最大メッセージサイズ。
4メガなら4*1024*1024で4194304

badmailfrom
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さんのサイトをご覧ください。

©2005 hiruneko