メールサーバー · 2 min read · Nov 07, 2025

Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (CentOS 4.8 i386)

Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (CentOS 4.8 i386)

バージョン 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-AUTHTLS、およびクォータに対応しています(クォータはデフォルトではPostfixに組み込まれていませんので、適切にPostfixをパッチする方法を示します)。パスワードはデータベースに暗号化された形式で保存されます(私が見つけたほとんどの文書は、セキュリティリスクであるプレーンテキストパスワードを扱っていました)。さらに、このチュートリアルでは、スパムとウイルスのスキャンのためにメールをスキャンするためにAmavisdSpamAssassin、およびClamAVのインストールもカバーします。また、ユーザーがメールを読み、送信し、パスワードを変更できるようにするために、WebメールインターフェースとしてSquirrelMailをインストールする方法も示します。

このような「仮想」セットアップ(MySQLデータベース内の仮想ユーザーとドメイン)の利点は、「実際の」システムユーザーに基づくセットアップよりもはるかにパフォーマンスが高いことです。この仮想セットアップを使用すると、メールサーバーは数千のドメインとユーザーを処理できます。さらに、新しいユーザー/ドメインを追加したり、既存のものを編集したりする際にMySQLデータベースのみを扱えばよいため、管理が容易です。dbファイルを作成するためのpostmapコマンドや、Postfixの再読み込みは不要です。MySQLデータベースの管理には、phpMyAdminのようなWebベースのツールを使用できます。このhowtoでもインストールされます。3つ目の利点は、ユーザーがユーザー名としてメールアドレスを持つこと(ユーザー名+メールアドレスではなく)で、理解しやすく、記憶しやすいことです。

このhowtoは実用的なガイドとして意図されており、理論的な背景はカバーしていません。それらはWeb上の他の多くの文書で扱われています。

この文書には、いかなる種類の保証もありません!このシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はたくさんありますが、これが私の取る方法です。これがあなたにとって機能することを保証するものではありません!

1 前提条件

このチュートリアルはCentOS 4.8 i386に基づいているため、このチュートリアルを続ける前に基本的なCentOS 4.8サーバーインストールを設定する必要があります(例:The Perfect Server - CentOS 4.8 Server i386 [ISPConfig 2]の最初の5章に示されているように)。システムには静的IPアドレスが必要です。このチュートリアルでは、192.168.0.100をIPアドレスとして、server1.example.comをホスト名として使用します。

ファイアウォールがオフになっていること(少なくとも今のところ)と、SELinuxが無効になっていることを確認してください(これは重要です!)。

このセットアップはi386システムでテストしました。セットアップはx86_64システムでも似ているか、場合によっては同一であるはずですが、私はテストしていません。

2 ソフトウェアのインストール

まず、システム上の既存のパッケージを更新します:

yum update

次に、後で必要になるソフトウェアをインストールします:

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'

3 Apache、MySQL、phpMyAdminのインストール

まず、CentOSシステムでRPMforgeリポジトリを有効にします。これは、このチュートリアルの過程でインストールする多くのパッケージが公式のCentOS 4.8リポジトリには存在しないためです:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm -Uhv http://apt.sw.be/redhat/el4/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el4.rf.i386.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 openldap-servers libtool gdbm-devel pam-devel gamin-devel

4 Courier-IMAP、Courier-Authlib、およびMaildropのインストール

残念ながら、Courier-IMAP、Courier-Authlib、およびMaildropのrpmパッケージは存在しないため、自分でビルドする必要があります。

RPMパッケージはrootとしてビルドすべきではありません。courier-imapは、コンパイルがrootユーザーとして実行されていることを検出すると、コンパイルを拒否します。したがって、通常のユーザーアカウント(この例ではcompileuser)を作成し、パスワードを設定します:

useradd -m -s /bin/bash compileuser  
passwd compileuser

後でsudoコマンドが必要になるので、compileuserがrpmパッケージをコンパイルしてインストールできるように、compileuserにすべてのコマンドをsudoで実行できるように許可する必要があります:

実行します

visudo

開いたファイルには、root ALL=(ALL) ALLという行があります。その行のすぐ下にfalko用の同様の行を追加します:

| [...] root ALL=(ALL) ALL compileuser ALL=(ALL) ALL [...] |

これで、rpmパッケージをビルドする準備が整いました。まず、compileuserユーザーになります:

su compileuser

次に、ビルド環境を作成します:

mkdir $HOME/rpm  
mkdir $HOME/rpm/SOURCES  
mkdir $HOME/rpm/SPECS  
mkdir $HOME/rpm/BUILD  
mkdir $HOME/rpm/SRPMS  
mkdir $HOME/rpm/RPMS  
mkdir $HOME/rpm/RPMS/i386  
mkdir $HOME/rpm/RPMS/x86_64
echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

次に、http://www.courier-mta.org/download.phpからソースファイルをダウンロードします:

cd /tmp  
wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.62.4.tar.bz2  
wget http://prdownloads.sourceforge.net/courier/courier-imap-4.6.0.tar.bz2  
wget http://prdownloads.sourceforge.net/courier/maildrop-2.2.0.tar.bz2

次に(まだ/tmpにいる間に)、courier-authlibをビルドできます:

sudo rpmbuild -ta courier-authlib-0.62.4.tar.bz2

ビルドプロセスの後、rpmパッケージは$HOME/rpm/RPMS/i386に見つかります(x86_64システムの場合は$HOME/rpm/RPMS/x86_64):

cd $HOME/rpm/RPMS/i386

コマンド

ls -l

は、利用可能なrpmパッケージを表示します:

[compileuser@server1 i386]$ ls -l  
total 616  
-rw-r--r--  1 root root 142923 Sep 24 15:50 courier-authlib-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root 346388 Sep 24 15:50 courier-authlib-debuginfo-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root  35075 Sep 24 15:50 courier-authlib-devel-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root  17473 Sep 24 15:50 courier-authlib-ldap-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root  13032 Sep 24 15:50 courier-authlib-mysql-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root  12585 Sep 24 15:50 courier-authlib-pgsql-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root   7457 Sep 24 15:50 courier-authlib-pipe-0.62.4-1.i386.rpm  
-rw-r--r--  1 root root  32403 Sep 24 15:50 courier-authlib-userdb-0.62.4-1.i386.rpm  
[compileuser@server1 i386]$

インストールしたいものを選択し、次のようにインストールします:

sudo rpm -ivh courier-authlib-0.62.4-1.i386.rpm courier-authlib-mysql-0.62.4-1.i386.rpm courier-authlib-devel-0.62.4-1.i386.rpm

次に、/tmpディレクトリに戻ります:

cd /tmp

そして、再度rpmbuildを実行します。今度はsudoなしで、そうしないとコンパイルがrootとして実行されたために失敗します:

rpmbuild -ta courier-imap-4.6.0.tar.bz2

ビルドプロセスの後、rpmパッケージは$HOME/rpm/RPMS/i386に見つかります(x86_64システムの場合は$HOME/rpm/RPMS/x86_64):

cd $HOME/rpm/RPMS/i386

コマンド

ls -l

は、利用可能なrpmパッケージを表示します:

[compileuser@server1 i386]$ ls -l  
total 1812  
-rw-r--r--  1 root        root        142923 Sep 24 15:50 courier-authlib-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root        346388 Sep 24 15:50 courier-authlib-debuginfo-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         35075 Sep 24 15:50 courier-authlib-devel-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         17473 Sep 24 15:50 courier-authlib-ldap-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         13032 Sep 24 15:50 courier-authlib-mysql-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         12585 Sep 24 15:50 courier-authlib-pgsql-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root          7457 Sep 24 15:50 courier-authlib-pipe-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         32403 Sep 24 15:50 courier-authlib-userdb-0.62.4-1.i386.rpm  
-rw-r--r--  1 compileuser compileuser 357587 Sep 24 16:05 courier-imap-4.6.0-1.i386.rpm  
-rw-r--r--  1 compileuser compileuser 854996 Sep 24 16:05 courier-imap-debuginfo-4.6.0-1.i386.rpm  
[compileuser@server1 i386]$

次のようにcourier-imapをインストールできます:

sudo rpm -ivh courier-imap-4.6.0-1.i386.rpm

次に、/tmpディレクトリに戻ります:

cd /tmp

そして、今度はmaildropパッケージをビルドするためにrpmbuildを再度実行します:

sudo rpmbuild -ta maildrop-2.2.0.tar.bz2

ビルドプロセスの後、rpmパッケージは$HOME/rpm/RPMS/i386に見つかります(x86_64システムの場合は$HOME/rpm/RPMS/x86_64):

cd $HOME/rpm/RPMS/i386

コマンド

ls -l

は、利用可能なrpmパッケージを表示します:

[compileuser@server1 i386]$ ls -l  
total 3012  
-rw-r--r--  1 root        root        142923 Sep 24 15:50 courier-authlib-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root        346388 Sep 24 15:50 courier-authlib-debuginfo-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         35075 Sep 24 15:50 courier-authlib-devel-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         17473 Sep 24 15:50 courier-authlib-ldap-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         13032 Sep 24 15:50 courier-authlib-mysql-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         12585 Sep 24 15:50 courier-authlib-pgsql-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root          7457 Sep 24 15:50 courier-authlib-pipe-0.62.4-1.i386.rpm  
-rw-r--r--  1 root        root         32403 Sep 24 15:50 courier-authlib-userdb-0.62.4-1.i386.rpm  
-rw-r--r--  1 compileuser compileuser 357587 Sep 24 16:05 courier-imap-4.6.0-1.i386.rpm  
-rw-r--r--  1 compileuser compileuser 854996 Sep 24 16:05 courier-imap-debuginfo-4.6.0-1.i386.rpm  
-rw-r--r--  1 root        root        283291 Sep 24 16:13 maildrop-2.2.0-1.i386.rpm  
-rw-r--r--  1 root        root        734265 Sep 24 16:13 maildrop-debuginfo-2.2.0-1.i386.rpm  
-rw-r--r--  1 root        root        122406 Sep 24 16:13 maildrop-devel-2.2.0-1.i386.rpm  
-rw-r--r--  1 root        root         63497 Sep 24 16:13 maildrop-man-2.2.0-1.i386.rpm  
[compileuser@server1 i386]$

次のようにmaildropをインストールできます:

sudo rpm -ivh maildrop-2.2.0-1.i386.rpm

すべての必要なパッケージをコンパイルしてインストールした後、再びrootになるには、次のように入力します:

exit

5 Postfixにクォータパッチを適用

Postfixのソースrpmを取得し、クォータパッチでパッチを当て、新しいPostfix rpmパッケージをビルドしてインストールする必要があります。

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/4.8/os/SRPMS/postfix-2.2.10-1.2.1.el4_7.src.rpm  
rpm -ivh postfix-2.2.10-1.2.1.el4_7.src.rpm

最後のコマンドは、無視できるいくつかの警告を表示します:

warning: user mockbuild does not exist - using root  
warning: group mockbuild does not exist - using root
cd /usr/src/redhat/SOURCES  
wget http://vda.sourceforge.net/VDA/postfix-2.2.10-vda.patch.gz  
gunzip postfix-2.2.10-vda.patch.gz  
cd /usr/src/redhat/SPECS/

次に、postfix.specファイルを編集する必要があります:

vi postfix.spec

%define MYSQL 0を%define MYSQL 1に変更し、# PatchesスタンザにPatch0: postfix-2.2.10-vda.patchを追加し、最後に%setup -qスタンザに%patch0 -p1 -b .vdaを追加します:

| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.2.10-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.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-2.2.10-CVE-2008-2936.patch [...] %setup -q # Apply obligatory patches %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch4 -p1 -b .postfix-hostname-fqdn %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/i386に作成されます(x86_64システムの場合は/usr/src/redhat/RPMS/x86_64)ので、そこに移動します:

cd /usr/src/redhat/RPMS/i386

コマンド

ls -l

は、利用可能なパッケージを表示します:

[root@server1 i386]# ls -l  
total 10052  
-rw-r--r--  1 root root 3237646 Sep 28 16:49 postfix-2.2.10-1.2.1.i386.rpm  
-rw-r--r--  1 root root 6984691 Sep 28 16:49 postfix-debuginfo-2.2.10-1.2.1.i386.rpm  
-rw-r--r--  1 root root   49047 Sep 28 16:49 postfix-pflogsumm-2.2.10-1.2.1.i386.rpm  
[root@server1 i386]#

Postfixパッケージを選択し、次のようにインストールします:

rpm -ivh postfix-2.2.10-1.2.1.i386.rpm
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。