メールサーバー · 4 min read · Nov 10, 2025

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

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

Version 1.0
Author: Falko Timme
Follow me on Twitter

このチュートリアルは、Falko Timmeによる著作権(c) 2012です。これは、http://workaround.orgで見つけることができるChristoph Haasのチュートリアルに基づいています。このチュートリアルは、クリエイティブ・コモンズライセンス2.5またはそれ以降のバージョンの下で自由に使用できます。

この文書は、仮想ユーザーとドメインに基づくPostfixメールサーバーのインストール方法を説明します。つまり、MySQLデータベースにあるユーザーとドメインです。また、Courier(Courier-POP3、Courier-IMAP)のインストールと設定も示しますので、CourierはPostfixが使用するのと同じMySQLデータベースに対して認証できます。

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

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

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

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

1 予備ノート

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

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

2 追加リポジトリを有効にし、いくつかのソフトウェアをインストールする

最初に、ソフトウェアパッケージのGPGキーをインポートします:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

次に、CentOSシステムでRPMforgeおよびEPELリポジトリを有効にします。チュートリアルの過程でインストールする多くのパッケージは、公式のCentOS 6.2リポジトリにはありません:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
cd /tmp  
 wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm  
 rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

(上記のリンクがもう機能しない場合は、rpmforge-releaseの現在のバージョンをここで見つけることができます:http://packages.sw.be/rpmforge-release/)

rpm --import https://fedoraproject.org/static/0608B895.txt  
 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm  
 rpm -ivh epel-release-6-5.noarch.rpm
yum install yum-priorities

/etc/yum.repos.d/epel.repoを編集します…

vi /etc/yum.repos.d/epel.repo

…そして[epel]セクションにpriority=10という行を追加します:

| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |

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

yum update

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

yum groupinstall 'Development Tools'

3 Apache、MySQL、phpMyAdminをインストールする

これらはすべて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-devel libidn-devel db4-devel mod_ssl telnet

4 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のための同様の行を追加します:

| [...] ## Allow root to run any commands anywhere 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_64
echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

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

mkdir $HOME/downloads  
 cd $HOME/downloads
wget https://sourceforge.net/projects/courier/files/authlib/0.63.0/courier-authlib-0.63.0.tar.bz2/download  
wget https://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap-4.9.3.tar.bz2/download  
wget https://sourceforge.net/projects/courier/files/maildrop/2.5.5/maildrop-2.5.5.tar.bz2/download

(ここでは、Courier-IMAP 4.9.3を使用しています。新しい4.10.0はsystemctlに依存しているため、Fedoraには存在しますが、CentOSにはありません。)

次に($HOME/downloads内で)、courier-authlibをビルドできます:

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

ビルドプロセスの後、rpmパッケージは/root/rpmbuild/RPMS/x86_64に見つかります(i386システムの場合は/root/rpmbuild/RPMS/i386)。コマンド

sudo ls -l /root/rpmbuild/RPMS/x86_64

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

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64  
 total 528  
 -rw-r--r-- 1 root root 124032 Jan 26 17:09 courier-authlib-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 270900 Jan 26 17:09 courier-authlib-debuginfo-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 35068 Jan 26 17:09 courier-authlib-devel-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 17372 Jan 26 17:09 courier-authlib-ldap-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 13928 Jan 26 17:09 courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 13080 Jan 26 17:09 courier-authlib-pgsql-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 8316 Jan 26 17:09 courier-authlib-pipe-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 34068 Jan 26 17:09 courier-authlib-userdb-0.63.0-1.el6.x86_64.rpm  
 [falko@server1 downloads]$

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

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/courier-authlib-0.63.0-1.el6.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-devel-0.63.0-1.el6.x86_64.rpm

次に、ダウンロードディレクトリに戻ります:

cd $HOME/downloads

次のコマンドを実行して、必要なディレクトリを作成し、ディレクトリの権限を変更します(そうしないと、Courier-Imapのビルドプロセスが失敗します):

sudo mkdir -p /var/cache/ccache/tmp  
sudo chmod o+rwx /var/cache/ccache/  
sudo chmod 777 /var/cache/ccache/tmp

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

rpmbuild -ta courier-imap-4.9.3.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 1088  
 -rw-r--r-- 1 falko falko 333540 Jan 26 17:27 courier-imap-4.9.3-1.x86_64.rpm  
 -rw-r--r-- 1 falko falko 776100 Jan 26 17:27 courier-imap-debuginfo-4.9.3-1.x86_64.rpm  
 [falko@server1 x86_64]$ 

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

sudo rpm -ivh courier-imap-4.9.3-1.x86_64.rpm

次に、ダウンロードディレクトリに戻ります:

cd $HOME/downloads

そして、次のコマンドを実行してmaildropパッケージをビルドします:

sudo rpmbuild -ta maildrop-2.5.5.tar.bz2

ビルドプロセスの後、rpmパッケージは/root/rpmbuild/RPMS/x86_64に見つかります(i386システムの場合は/root/rpmbuild/RPMS/i386)。コマンド

sudo ls -l /root/rpmbuild/RPMS/x86_64

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

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64  
 total 1712  
 -rw-r--r-- 1 root root 124032 Jan 26 17:09 courier-authlib-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 270900 Jan 26 17:09 courier-authlib-debuginfo-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 35068 Jan 26 17:09 courier-authlib-devel-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 17372 Jan 26 17:09 courier-authlib-ldap-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 13928 Jan 26 17:09 courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 13080 Jan 26 17:09 courier-authlib-pgsql-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 8316 Jan 26 17:09 courier-authlib-pipe-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 34068 Jan 26 17:09 courier-authlib-userdb-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 286480 Jan 26 17:32 maildrop-2.5.5-1.x86_64.rpm  
 -rw-r--r-- 1 root root 751348 Jan 26 17:32 maildrop-debuginfo-2.5.5-1.x86_64.rpm  
 -rw-r--r-- 1 root root 102108 Jan 26 17:32 maildrop-devel-2.5.5-1.x86_64.rpm  
 -rw-r--r-- 1 root root 65940 Jan 26 17:32 maildrop-man-2.5.5-1.x86_64.rpm  
 [falko@server1 downloads]$

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

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/maildrop-2.5.5-1.x86_64.rpm

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

exit

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

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

cd /usr/src  
 wget http://vault.centos.org/6.2/os/Source/SPackages/postfix-2.6.6-2.2.el6_1.src.rpm  
 rpm -ivh postfix-2.6.6-2.2.el6_1.src.rpm

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

warning: user mockbuild does not exist - using root  
 warning: group mockbuild does not exist - using root
cd /root/rpmbuild/SOURCES  
 wget http://vda.sourceforge.net/VDA/postfix-2.6.5-vda-ng.patch.gz  
 gunzip postfix-2.6.5-vda-ng.patch.gz  
 cd /root/rpmbuild/SPECS/

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

vi postfix.spec

| [...] # Patches Patch0: postfix-2.6.5-vda-ng.patch Patch1: postfix-2.6.1-config.patch Patch2: postfix-2.6.1-files.patch Patch3: postfix-alternatives.patch Patch8: postfix-large-fs.patch Patch9: pflogsumm-1.1.1-datecalc.patch Patch10: postfix-2.6.6-CVE-2011-0411.patch Patch11: postfix-2.6.6-CVE-2011-1720.patch [...] %prep %setup -q # Apply obligatory patches %patch0 -p1 -b .vda-ng %patch1 -p1 -b .config %patch2 -p1 -b .files %patch3 -p1 -b .alternatives %patch8 -p1 -b .large-fs [...] |

次に、クォータとMySQLサポートを持つ新しいPostfix rpmパッケージをビルドします:

rpmbuild -ba postfix.spec

私たちのPostfix rpmパッケージは/root/rpmbuild/RPMS/x86_64に作成されます(i386システムの場合は/root/rpmbuild/RPMS/i386)。そこに移動します:

cd /root/rpmbuild/RPMS/x86_64

コマンド

ls -l

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

[root@server1 x86_64]# ls -l  
 total 10728  
 -rw-r--r-- 1 root root 124032 Jan 26 17:09 courier-authlib-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 270900 Jan 26 17:09 courier-authlib-debuginfo-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 35068 Jan 26 17:09 courier-authlib-devel-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 17372 Jan 26 17:09 courier-authlib-ldap-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 13928 Jan 26 17:09 courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 13080 Jan 26 17:09 courier-authlib-pgsql-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 8316 Jan 26 17:09 courier-authlib-pipe-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 34068 Jan 26 17:09 courier-authlib-userdb-0.63.0-1.el6.x86_64.rpm  
 -rw-r--r-- 1 root root 286480 Jan 26 17:32 maildrop-2.5.5-1.x86_64.rpm  
 -rw-r--r-- 1 root root 751348 Jan 26 17:32 maildrop-debuginfo-2.5.5-1.x86_64.rpm  
 -rw-r--r-- 1 root root 102108 Jan 26 17:32 maildrop-devel-2.5.5-1.x86_64.rpm  
 -rw-r--r-- 1 root root 65940 Jan 26 17:32 maildrop-man-2.5.5-1.x86_64.rpm  
 [root@server1 x86_64]# 

システムに以前のバージョンのpostfixがインストールされていないことを確認するには、次のコマンドを使用します:

yum remove postfix

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

rpm -ivh postfix-2.6.6-2.2.el6.x86_64.rpm
Share: X/Twitter LinkedIn

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

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