qmailでメールサーバを作ろう! 第1回
qmailの導入とSMTPとしての設定
濱野 賢一朗(khamano@d-d.co.jp)
株式会社デジタルデザイン
Project BLUE
2000/9/7
今回のおもな内容![]() ![]() ![]() ![]() ![]() |
qmailは最近人気がでてきているメールサーバです。今までLinuxでメールサーバを構築する場合にはsendmailを使うことが標準的でしたが、最近ではqmailをはじめ、postfixなどsendmailに代わるメールサーバを利用することも徐々に増えてきているようです。この連載では、この新しいメールサーバqmailの導入方法や活用法、メーリングリストの運用などについて解説していきたいと思います。
近年、メール配信サービスやメーリングリストが多く利用されるようになり、大量のメールを処理しなくてはならない環境になってきたり、またセキュリティへの意識が高まってきているといえます。sendmailではなくqmailが利用されることが多くなってきているのは、こうした背景があります。その理由は、やはりqmailが「高速で安全でわかりやすい」ということにあります。ここでは、sendmail、postfixと比較することでqmailの概要を簡単に整理してみました。
高速性 | セキュリ ティ |
sendmailとの 互換性 |
特徴 | |
qmail | ○ | ○ | △ | 安心して利用できる |
sendmail | ○ | ○ | - | デファクト スタンダード |
postfix | ○ | ○ | ○ | sendmail互換の高速MTA |
今までメールサーバのシェアを圧倒的に握ってきたsendmailが
- 設定ファイル(sendmail.cf)が煩雑
- 配送が高速でない
- セキュリティホールがなくならない
- スパムメール対策が比較的面倒
といった問題を持っている一方、qmailではこれらを解決し、
- 設定ファイルが簡潔
- 配送が高速である
- セキュリティホールがない
- スパムメール対策が容易
といった特長があります。
実際、さわったことがある方ならおわかりだと思いますが、sendmailの設定ファイルはお世辞にも簡潔とは言えません。ただ後述しますが、qmailを使う問題として、sendmail用に作られたアプリケーションとの互換性が低くなってしまう可能性があります。例えば、転送用に利用される/etc/aliasesや .forwardなどのファイルが(そのままでは)利用できなくなります。もし、sendmail互換性が必要で高速であることを要求する場合は、sendmail互換性を重視して作られているpostfixを利用する方が好ましいでしょう(最近ではsendmailの配送効率をよくするためにsmtpfeedというものも開発されています)。
参考に、それぞれのメールサーバの情報を下記に紹介しておきます。
- 日本語 qmail のページ(http://www.jp.qmail.org/)
- Japanized Postfix Document(http://www.jah.ne.jp/~t-akasak/postfix/)
- The Postfix (formerly VMailer) Home Page(http://koyan.freedom.ne.jp/postfix/start.html)
それでは、何はともあれ、qmailを使ってみましょう。
qmailを利用するためには、qmaild、qmaill、qmailp、alias、qmailq、qmailr、qmailsといったユーザーと、nofiles、qmail というグループの登録が必要です。
# mkdir /var/qmail |
このユーザーがそれぞれどのような役割を握っているのかについては、第2回で説明したいと思います。
それでは、さっそく qmail をインストールしましょう。まずは、qmailのソースパッケージとパッチを入手します。以下のftpサイトから、2つのファイルを入手してください。
ftp://ftp.nlc.net.au/pub/unix/mail/qmail/
- qmail-1.03.tar.gz
- qmail-date-localtime.patch
qmail-1.03.tar.gzのアーカイブを適当な場所に展開して、qmail-date-localtime.patchのパッチをあてることにしましょう。ここでは、ダウンロードしたファイルが /home/user以下にあって、/home/user/qmail-1.03 に展開するものとします。下記にコマンドを示します。
% setenv LANG C |
では、コンパイルしましょう。
# make setup |
これで、/var/qmail以下に必要なファイルがインストールされ、基本的な設定が行われているはずです。qmailの設定ファイルは/var/qmail/control以下に保存されるようになっており、おもな設定ファイルは以下のようになっています。
設定ファイル | 説明 |
defaultdomain | toなどにドメイン名が省略された場合、補完されるドメイン名 |
locals | 受信するホスト名・ドメイン名(qmail-sendが利用) |
rcpthosts | 受信するホスト名・ドメイン名(qmail-smtpdが利用) |
me | サーバのFQDN(Fully Qualified Domain Name) |
次に、起動スクリプトと必要最低限のエイリアスの設定をしておきましょう。
# cp /var/qmail/boot/home /var/qmail/rc |
これで、qmailのインストールは完了です。ただし、すでにsendmailが動いている場合は停止しておく必要があります。念のために、
# /etc/rc.d/init.d/sendmail stop |
としてsendmailを停止しておきましょう。また、qmailの起動中に間違ってsendmailが立ち上がらないためにも、さらに以下のように設定しておきます。こうすることで、sendmailコマンドを使ったアプリケーションであってもqmail側にデータが渡されることになります。
# mv /etc/rc.d/rc2.d/S80sendmail _S80sendmail |
では、早速qmailを動かしてみましょう。さきほどコピーした起動スクリプトを実行します。
# /var/qmail/rc & |
これで、qmailが立ち上がるはずです。確認してみましょう。
% ps -ef | grep "[q]mail" |
ただ、これだけでは、外部からメールを受け付けることはできません。qmailでは外部からのメールをqmail-smtpdが受け付けることになっており、これはinetdもしくはtcpserver経由で起動することになります。ここでは、inetdで設定することにします(tcpserverは次回紹介します)。
/etc/inetd.confに、
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env
tcp-env /var/qmail/bin/qmail-smtpd |
の1行を追加し、inetdを再起動します(killコマンドの引数はinetdのプロセスIDです)。
# ps auxw | grep inet | grep -v grep |
tcp_wappersでアクセス制限をしている場合は、/etc/hosts.allowに、
tcp-env: 127. : setenv =
RELAYCLIENT |
の2行を書き加えます。これで、外部からのメールも受け付けることができるようになります(DNSのMXレコードの設定もお忘れなく!)。
それでは、実際にメールの送受信のテストをしてみましょう。まずは、qmailが動いているサーバからローカルに対して送信してみましょう。
$ /var/qmail/bin/qmail-inject |
これで、/home/user/Mailboxに、このメールが配信されているはずです。
次に外部からのメールを受信してみましょう。ふだん使っているメーラーなどから送信してみてください。配信状況は、
# tail -f /var/log/maillog |
とやると読むことができます。もし、うまく配信できない場合は、ログを読んだ上で、
- qmailはちゃんと起動しているか?
- tcp_wrappersの設定が適切か?
- DNSの設定は適切か?
- ユーザーアカウントは存在するか?
を確認するといいでしょう。
ここまで順調に動けば、基本的なqmailの設定は正常に完了していると思われます。通常の運用を行ううえで困ることはないでしょう。
最後に、Linux起動時にqmailが立ち上がるように設定します。/etc/rc.d/rc.localの最後に以下の1行を追加します。
# qmail startup |
ただし、ユーザー数がかなり増えたり、メールの量が膨大になる時には、通常利用される Mailboxという形式ではかなり負担がでてくることになります。そこで、ここでは、maildirという形式でメールが保存されるように設定することにします。
Mailbox形式は、/var/spool/mail/ユーザー名 というファイルに格納されるようになっています。しかし、すべてのユーザーのメールがこの1つのディレクトリに集まったり、1つのユーザー宛のメールすべてが1つのファイルに格納されて巨大になったりすると、煩雑なうえにサーバに負荷がかかることになります。そこで、それを解決するのが、Maildir形式なのです。
Maildir形式では、各ユーザー宛のメールは、ユーザーのホームディレクトリにできるMaildir以下のディレクトリに1メール1ファイルで保存されるようになります。
それでは、早速設定しましょう。まず、各ユーザーディレクトリにMaildirディレクトリを作る必要がありますが、これは
/var/qmail/bin/makedirmake ~user/Maildir |
と実行することで簡単に生成できます。また、
/var/qmail/bin/maildirmake /etc/skel |
としておくと、ユーザーを作成した際に自動的にMaildirディレクトリが作られるので、ユーザー管理にともなうメールディレクトリ管理の手間が省けるでしょう。
以上の手順が終わったらqmailを停止し、/var/qmail/rc を以下のように修正してqmailを立ち上げ直します。
#!/bin/sh |
これで、Maildir形式でqmailが動作するようになります。メーリングリストなどを大量に購読しているユーザーにとっては、Maildir形式はかなり有効に働くものと思います。実際、筆者はMailbox形式で格納されているメールを直接ファイルから削除しなくてはいけないという事態が発生してしまったときに、膨大なサイズになってしまったMailboxファイルを前からずらーっと眺めて、探し出すのに非常に苦労したことがあります。
今回は、qmailの導入から基本的な設定を行いましたが、次回は、tcpserver の利用法、POPやIMAP、APOPとの連携などの設定方法、そしてqmailの配送の仕組みなどについて説明したいと思います。
Linux Squareフォーラム サーバ構築・運用関連記事 |
![]() |
連載:Heartbeatでかんたんクラスタリング(連載中) オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します |
![]() |
特集:Apache 2.2でWebサイトをパフォーマンスアップ! 最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する |
![]() |
連載:実用 Apache 2.0運用・管理術(全8回) 本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える |
![]() |
連載:実用
BIND 9で作るDNSサーバ(全15回) 本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく |
![]() |
連載:実用qmailサーバ運用・管理術(全14回) 本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで |
![]() |
特集:Samba
3.0の全貌 改訂版 Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する |
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
![]() |
||
|
||
![]() |
Linux & OSS 記事ランキング
- 「国連オープンソース原則」をOSIが公式支持 IT業界に与える影響は?
- Microsoft、WSLのアップデートを発表 新しい提供方式、tarベースのWSLディストリビューションアーキテクチャとは
- Linuxディストリビューション「Ubuntu 24.04.1 LTS」公開 新機能は? サポート期間は?
- 「Llama2」やXの「Grok」などが不合格になったOSIの「オープンソースAIの定義 1.0」、その中身とは? 合格したAIは?
- 「Azure Linux」は「CentOS 7」の移行先になり得るか LinkedInの選択
- オープンソースハイパーバイザー「Xen 4.20」公開 セキュリティとパフォーマンスが向上
- Sysdig、「クラウド版Wireshark」をうたう「Stratoshark」をオープンソースで公開
- オープンソースのシステム監視/アラートツールキット「Prometheus 3.0」公開 7年ぶりのメジャーリリースで何が変わった?
- OpenELA、「RHEL」新バージョンのリリースから数日以内に最新ソースを提供へ