ネットワークサーバの構築のページに戻る

qmailによるメールサーバの構築

qmailはセキュリティーホールが見つかったことのない安全なMTUです。 MTUとしては sendmailが広く使われていますが、sendmailのセキュリティー ホールは非常に多くバージョンアップが頻繁です。

私が使っているサーバはsendmailで運用していますが、こんなことが ありました。ある人が大きなファイルをメーリングリストに出しました。 sendmailはリストの順にメールを送りますので、リストの途中で ネットワーク的に遠い人がいれば、そのリストの後に名前のある人は その分メールが届くのがおそくなります。それである人から、 出したメールがまだ届かないのだが、問題があるのではないかと 連絡をもらいました。
qmailでは並行処理を行うことによりに、この問題を解決している ようです。

今後は,qmailが広く使われるようになるかもしれません。

パッケージ名 qmail-1.03.tgz
導入環境FeeBSD 3.3-RELEASE


自分でmakeしてインストールする方法

ディレクトリの作成
以下のコマンドを実行して必要なディレクトリを作成します。
# mkdir /var/qmail
# mkdir /var/qmail/alias
グループとIDの作成
/etc/groupに以下の内容を追加します。
qmail:*:2107:
nofiles:*:2108:
さらにvipwで以下の内容を追加し、IDを作成します
alias:*:7790:2108::0:0::/var/qmail/alias:/sbin/nologin
qmaild:*:7791:2108::0:0::/var/qmail:/sbin/nologin
qmaill:*:7792:2108::0:0::/var/qmail:/sbin/nologin
qmailp:*:7793:2108::0:0::/var/qmail:/sbin/nologin
qmailq:*:7794:2107::0:0::/var/qmail:/sbin/nologin
qmailr:*:7795:2107::0:0::/var/qmail:/sbin/nologin
qmails:*:7796:2107::0:0::/var/qmail:/sbin/nologin
コンパイルして、必要なディレクトリ階層を作ります。
# tar zxvf qmail-1.03.tar.gz
# cd qmail-1.03
# make setup check
設定ファイルを作ります
# ./config
configはIPアドレスから逆引きして行うのでIPアドレスの逆引きができなければ この処理はうまくいきません
これを実行すると以下のファイルが作られます。
  • /var/qmail/control/me (このホストの名前)
  • /var/qmail/control/defaultdomain
  • /var/qmail/control/plusdomain
  • /var/qmail/control/locals
  • /var/qmail/control/rcpthosts (localsからコピーされる)
上記のdefaultdomain, plusdomain, locals にある名前が @に一致したときにメールを受け取ります。 またrcpthostsにはsmtpアクセスを受け入れるホスト名が 保存されます
起動スクリプトの設定
# ln -s /var/qmail/boot/home /var/qmail/rc
エイリアスの設定
# cd ~alias
# sh
# for i in postmaster root
# do touch .qmail-$i;chmod 644 .qmail-$i
# done
これにより~alias/Mailboxにメールが届くようになる これらのファイル(~alias/.qmail-postmasterなど)の中に "&fujiki@fc-lab.com"と記述するとfujiki@fc-lab.comにフォワードするようになります
各ユーザの設定
各ユーザが以下のコマンドを実行します。
% /var/qmail/bin/maildirmake $HOME/Maildir
% echo ./Maildir/ > ~/.qmail
これにより、mailbox形式の~/Mailboxに受信するのではなく、MailDirに入るようにします

tcpserverからのqmail-smtpdの起動設定

tcpserverをデーモンとして動かし、qmail-smtpを起動させるために tcpserverを以下のようにしてインストールします。
% tar zxvf ucspi-tcp-0.88.tar.gz
% cd ucspi-tcp-0.88
% make
# make setup check
次に/etc/tcp.smtpを以下のように記述します
192.168.0.:allow,RELAYCLIENT="" 
127.:allow,RELAYCLIENT="" 
:allow 
このファイルから、tcpserverが読み込むcdb形式のファイルを以下のコマンドを 使って作ります。
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 
これで、127.*と192.168.0.*は/var/qmail/control/rcpthostsに記述が無くても 使えるようになります。他のホストについてはallowの行が適用され、 /var/qmail/control/rcpthostsで制限されることになります。 他のホストからメールを受け取るために、最後の行のallowは必要ですから 必ず設定してください。

設定が終わったら以下のようにして、tcpserverからqmail-smtpdの起動する スクリプト/usr/local/etc/rc.d/qmail.shを以下のように作成してください。
/var/qmail/rc &
tcpserver -u 7791 -g 2108 -x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd & 
ここで指定している7791 は qmaild の UID で、2108 は nofiles の GID です。

POP3サーバの立ち上げ

まずpopサーバでの認証に必要なcheckpasswordを http://cr.yp.to/checkpwd.htmlなどから入手し、 以下のようにしてインストールします。
% tar zxvf checkpassword-0.90.tar.gz
% cd checkpassword-0.90
% make
# make setup check
次にtcpserverからqmail-pop3dも起動します。
# tcpserver 0 pop3 /var/qmail/bin/qmail-popup bear.fc-lab.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
これも上で設定した/usr/local/etc/rc.d/qmail.shに追加しておいた方が よいでしょう。

ローカルのunix shellで使うメールの変更について

最後に今まで使っていたsendmailとbinmail(/usr/libexec/mail.local)を 以下のように無効にして作業は終了です
# chmod 0 /usr/sbin/sendmail
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# chmod 0 /usr/libexec/mail.local
あと/var/qmail/qmail-inject を /usr/libexec/mail.localと 入れ替えればよいかもしれません

バイナリパッケージを使ったインストール

バイナリパッケージを使えば以下のコマンド一発で簡単にインストールできます。
# pkg_add qmail-1.03.tgz

smtpサーバの設定

設定ファイル

/var/qmail/control/の下に以下の内容の設定ファイルをおく
ファイル内容
defaultdomain このホストのドメイン名fc-lab.com
localsこのドメインのローカルホスト localhost
bear.fc-lab.com
me このホスト名panda.fc-lab.com
rcpthosts smtpでリレーを許すホスト*.kitakyu-techno-ctr.co.jp

以上の localsとrcphostsで設定されたホストからはsmtpアクセスが可能となる。

さらに上記の設定の場合DNSでMXをpanda.fc-lab.comで出すとメールが届く ようになります。

/etc/inetd.conf

smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd

/var/qmail/alias

".qmail-root" ".qmail-postmaster" ".qmail-mailer-daemon"を 作る。このファイルのなかに
&fujiki@kitakyu-techno-ctr.co.jp
のように記述するとエイリアスとなります。

これらのファイルのモードは644としてください。

メールボックスの設定

qmailのMailDir形式を使う場合

# ln -s /var/qmail/boot/maildir /var/qmail/rc

さらに以下の処理をしてメールの入るディレクトリを作ります。
% maildirmake /home/fujiki/Maildir
% echo ./Maildir/ > /home/fujiki/.qmail

UNIX mailbox形式のファイルを使う場合

# ln -s /var/qmail/boot/home /var/qmail/rc

さらに各ユーザのホームディレクトリに Mailboxという名前の ファイルを作り、スプールからシンボリックリンクをはります。 以下は fujiki というユーザの例です。
# mv /var/mail/fujiki /home/fujiki/Mailbox
# chown fujiki /home/fujiki/Mailbox
# ln -s /home/fujiki/Mailbox /var/mail/fujiki
/var/mail/fujikiが存在しない場合は touch /home/fujiki/Mailbox で作成してください。

pop3サーバの設定

checkpasswordのインストール

checkpasswordを 入手してインストールします。展開して、make;make install でOKです。

/etc/inetd.conf

pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup shibushi.kitakyu-techno-ctr.co.jp /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir

参考
POP/IMAPの導入,qmailの仕組み , Internals qmail-1.03
「サーバの構築」のページへ戻る ホームへ戻る