メールサーバー · 3 min read · Sep 27, 2025
Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (CentOS 5.3 x86_64)
Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (CentOS 5.3 x86_64)
バージョン 1.0
著者: Falko Timme
このチュートリアルは、Falko Timmeによる著作権 (c) 2009です。これは、http://workaround.orgで見つけることができるChristoph Haasのチュートリアルから派生したものです。このチュートリアルは、クリエイティブ・コモンズライセンス2.5またはそれ以降のバージョンの下で自由に使用できます。
この文書では、仮想ユーザーとドメインに基づくPostfixメールサーバーのインストール方法を説明します。つまり、MySQLデータベースにあるユーザーとドメインです。また、Courier(Courier-POP3、Courier-IMAP)のインストールと設定を示し、CourierがPostfixと同じMySQLデータベースに対して認証できるようにします。
結果として得られるPostfixサーバーは、SMTP-AUTH、TLS、およびクォータに対応しています(クォータはデフォルトではPostfixに組み込まれていませんので、Postfixを適切にパッチする方法を示します)。パスワードはデータベースに暗号化された形式で保存されます(私が見つけたほとんどの文書は、セキュリティリスクであるプレーンテキストパスワードを扱っていました)。さらに、このチュートリアルでは、スパムとウイルスのスキャンを行うためにAmavisd、SpamAssassin、およびClamAVのインストールもカバーします。また、ユーザーがメールを読み書きし、パスワードを変更できるようにするために、SquirrelMailをウェブメールインターフェースとしてインストールする方法も示します。
このような「仮想」セットアップ(MySQLデータベース内の仮想ユーザーとドメイン)の利点は、実際のシステムユーザーに基づくセットアップよりもはるかにパフォーマンスが良いことです。この仮想セットアップを使用すると、メールサーバーは数千のドメインとユーザーを処理できます。さらに、新しいユーザー/ドメインを追加したり、既存のものを編集したりする際にMySQLデータベースのみを扱えばよいため、管理が容易です。dbファイルを作成するためのpostmapコマンドや、Postfixの再読み込みも不要です。MySQLデータベースの管理には、phpMyAdminのようなウェブベースのツールを使用できます。このhowtoでもインストールされます。3つ目の利点は、ユーザーがユーザー名としてメールアドレスを持つこと(ユーザー名+メールアドレスの代わりに)で、理解しやすく、記憶しやすいことです。
このhowtoは実践的なガイドとして意図されています。理論的な背景はカバーしていません。それらはウェブ上の他の多くの文書で扱われています。
この文書には、いかなる種類の保証もありません!このシステムを設定する唯一の方法ではないことをお伝えしたいと思います。この目標を達成する方法はたくさんありますが、これが私が取る方法です。これがあなたにとって機能することを保証するものではありません!
1 前提条件
このチュートリアルはCentOS 5.3 x86_64に基づいているため、このチュートリアルを続ける前に基本的なCentOS 5.3サーバーのインストールを設定する必要があります(例:The Perfect Server - CentOS 5.3 x86_64の最初の6章に示されているように)。システムには静的IPアドレスが必要です。このチュートリアルでは、192.168.0.100をIPアドレスとして、server1.example.comをホスト名として使用します。
ファイアウォールがオフになっていること(少なくとも今のところ)と、SELinuxが無効になっていることを確認してください(これは重要です!)。
このセットアップはx86_64システムでテストしました。セットアップはi386システムでも似ているか、場合によっては同一であるはずですが、テストはしていません。
2 ソフトウェアのインストール
まず、システム上の既存のパッケージを更新します:
yum update次に、後で必要になるソフトウェアをインストールします:
yum groupinstall 'Development Tools'yum groupinstall 'Development Libraries'3 Apache、MySQL、phpMyAdminのインストール
まず、CentOSシステムでRPMforgeリポジトリを有効にします。これは、このチュートリアルの過程でインストールする多くのパッケージが公式のCentOS 5.3リポジトリにはないためです:
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpmその後、必要なパッケージを1つのコマンドでインストールできます(Courier-IMAPをビルドするために必要なパッケージも含まれています):
yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpmyadmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel4 Courier-IMAP、Courier-Authlib、およびMaildropのインストール
残念ながら、Courier-IMAP、Courier-Authlib、およびMaildropのrpmパッケージは存在しないため、自分でビルドする必要があります。
RPMパッケージはrootとしてビルドすべきではありません。courier-imapは、コンパイルがrootユーザーとして実行されていることを検出すると、コンパイルを拒否します。したがって、今、通常のユーザーアカウントを作成します(この例ではfalko)し、パスワードを設定します:
useradd -m -s /bin/bash falko
passwd falko後でsudoコマンドが必要になるので、falkoがrpmパッケージをコンパイルしてインストールできるように、falkoがすべてのコマンドをsudoで実行できるようにします:
実行します
visudo開いたファイルには、root ALL=(ALL) ALLという行があります。その行のすぐ下にfalkoのための同様の行を追加します:
| [...] ## rootがどこでも任意のコマンドを実行できるようにする root ALL=(ALL) ALL falko ALL=(ALL) ALL [...] |
これでrpmパッケージをビルドする準備が整いました。まず、falkoユーザーになります:
su falko次に、ビルド環境を作成します:
mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/BUILDROOT
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386
mkdir $HOME/rpm/RPMS/x86_64echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros次に、ダウンロードディレクトリを作成し、http://www.courier-mta.org/download.phpからソースファイルをダウンロードします:
mkdir $HOME/downloads
cd $HOME/downloadswget http://prdownloads.sourceforge.net/courier/courier-authlib-0.62.2.tar.bz2
wget http://prdownloads.sourceforge.net/courier/courier-imap-4.4.1.tar.bz2
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2次に($HOME/downloads内で)、courier-authlibをビルドできます:
sudo rpmbuild -ta courier-authlib-0.62.2.tar.bz2ビルドプロセスの後、rpmパッケージは$HOME/rpm/RPMS/x86_64(i386システムの場合は$HOME/rpm/RPMS/i386)に見つかります:
cd $HOME/rpm/RPMS/x86_64コマンド
ls -lは、利用可能なrpmパッケージを表示します:
[falko@server1 x86_64]$ ls -l
total 608
-rw-r--r-- 1 root root 139732 Apr 20 15:25 courier-authlib-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 328468 Apr 20 15:25 courier-authlib-debuginfo-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35327 Apr 20 15:25 courier-authlib-devel-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 18307 Apr 20 15:25 courier-authlib-ldap-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 14497 Apr 20 15:25 courier-authlib-mysql-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 13711 Apr 20 15:25 courier-authlib-pgsql-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 8361 Apr 20 15:25 courier-authlib-pipe-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35285 Apr 20 15:25 courier-authlib-userdb-0.62.2-1.x86_64.rpm
[falko@server1 x86_64]$インストールしたいものを選択し、次のようにインストールします:
sudo rpm -ivh courier-authlib-0.62.2-1.x86_64.rpm
sudo rpm -ivh courier-authlib-devel-0.62.2-1.x86_64.rpm
sudo rpm -ivh courier-authlib-mysql-0.62.2-1.x86_64.rpm次に、ダウンロードディレクトリに戻ります:
cd $HOME/downloadsそして、今度はsudoなしでrpmbuildを再実行します。そうしないと、コンパイルがrootとして実行されたために失敗します:
rpmbuild -ta courier-imap-4.4.1.tar.bz2ビルドプロセスの後、rpmパッケージは$HOME/rpm/RPMS/x86_64(i386システムの場合は$HOME/rpm/RPMS/i386)に見つかります:
cd $HOME/rpm/RPMS/x86_64コマンド
ls -lは、利用可能なrpmパッケージを表示します:
[falko@server1 x86_64]$ ls -l
total 1920
-rw-r--r-- 1 root root 139732 Apr 20 15:25 courier-authlib-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 328468 Apr 20 15:25 courier-authlib-debuginfo-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35327 Apr 20 15:25 courier-authlib-devel-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 18307 Apr 20 15:25 courier-authlib-ldap-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 14497 Apr 20 15:25 courier-authlib-mysql-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 13711 Apr 20 15:25 courier-authlib-pgsql-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 8361 Apr 20 15:25 courier-authlib-pipe-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35285 Apr 20 15:25 courier-authlib-userdb-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 falko falko 391473 Apr 20 15:37 courier-imap-4.4.1-1.x86_64.rpm
-rw-r--r-- 1 falko falko 939716 Apr 20 15:37 courier-imap-debuginfo-4.4.1-1.x86_64.rpm
[falko@server1 x86_64]$次のようにcourier-imapをインストールできます:
sudo rpm -ivh courier-imap-4.4.1-1.x86_64.rpm次に、ダウンロードディレクトリに戻ります:
cd $HOME/downloadsそして、今度はmaildropパッケージをビルドするためにrpmbuildを再実行します:
sudo rpmbuild -ta maildrop-2.0.4.tar.bz2ビルドプロセスの後、rpmパッケージは$HOME/rpm/RPMS/x86_64(i386システムの場合は$HOME/rpm/RPMS/i386)に見つかります:
cd $HOME/rpm/RPMS/x86_64コマンド
ls -lは、利用可能なrpmパッケージを表示します:
[falko@server1 x86_64]$ ls -l
total 3172
-rw-r--r-- 1 root root 139732 Apr 20 15:25 courier-authlib-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 328468 Apr 20 15:25 courier-authlib-debuginfo-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35327 Apr 20 15:25 courier-authlib-devel-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 18307 Apr 20 15:25 courier-authlib-ldap-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 14497 Apr 20 15:25 courier-authlib-mysql-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 13711 Apr 20 15:25 courier-authlib-pgsql-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 8361 Apr 20 15:25 courier-authlib-pipe-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 root root 35285 Apr 20 15:25 courier-authlib-userdb-0.62.2-1.x86_64.rpm
-rw-r--r-- 1 falko falko 391473 Apr 20 15:37 courier-imap-4.4.1-1.x86_64.rpm
-rw-r--r-- 1 falko falko 939716 Apr 20 15:37 courier-imap-debuginfo-4.4.1-1.x86_64.rpm
-rw-r--r-- 1 root root 298373 Apr 20 15:47 maildrop-2.0.4-1.x86_64.rpm
-rw-r--r-- 1 root root 767039 Apr 20 15:47 maildrop-debuginfo-2.0.4-1.x86_64.rpm
-rw-r--r-- 1 root root 134030 Apr 20 15:47 maildrop-devel-2.0.4-1.x86_64.rpm
-rw-r--r-- 1 root root 58400 Apr 20 15:47 maildrop-man-2.0.4-1.x86_64.rpm
[falko@server1 x86_64]$次のようにmaildropをインストールできます:
sudo rpm -ivh maildrop-2.0.4-1.x86_64.rpm必要なすべてのパッケージをコンパイルしてインストールした後、再びrootになるには、次のように入力します
exit5 Postfixにクォータパッチを適用
Postfixのソースrpmを取得し、クォータパッチでパッチを当て、新しいPostfix rpmパッケージをビルドしてインストールする必要があります。
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.3/os/SRPMS/postfix-2.3.3-2.1.el5_2.src.rpm
rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm最後のコマンドは、無視できるいくつかの警告を表示します:
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using rootcd /usr/src/redhat/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
gunzip postfix-2.3.3-vda.patch.gz
cd /usr/src/redhat/SPECS/次に、postfix.specファイルを編集する必要があります:
vi postfix.spec%define MYSQL 0を%define MYSQL 1に変更し、# PatchesスタンザにPatch0: postfix-2.3.3-vda.patchを追加し、最後に%setup -qスタンザに%patch0 -p1 -b .vdaを追加します:
| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.3.3-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch Patch10: postfix-CVE-2008-2936.patch [...] %setup -q # 必須のパッチを適用 %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus %patch10 -p1 -b .CVE-2008-2936 [...] |
次に、クォータとMySQLサポートを持つ新しいPostfix rpmパッケージをビルドします:
rpmbuild -ba postfix.spec私たちのPostfix rpmパッケージは/usr/src/redhat/RPMS/x86_64に作成されます(i386システムの場合は/usr/src/redhat/RPMS/i386)ので、そこに移動します:
cd /usr/src/redhat/RPMS/x86_64コマンド
ls -lは、利用可能なパッケージを表示します:
[root@server1 x86_64]# ls -l
total 11732
-rw-r--r-- 1 root root 3940163 Apr 20 15:58 postfix-2.3.3-2.1.x86_64.rpm
-rw-r--r-- 1 root root 7999370 Apr 20 15:59 postfix-debuginfo-2.3.3-2.1.x86_64.rpm
-rw-r--r-- 1 root root 49761 Apr 20 15:58 postfix-pflogsumm-2.3.3-2.1.x86_64.rpm
[root@server1 x86_64]#Postfixパッケージを選択し、次のようにインストールします:
rpm -ivh postfix-2.3.3-2.1.x86_64.rpm新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。