メールサーバー · 4 min read · Oct 14, 2025

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

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

Version 1.0
Author: Falko Timme
Follow me on Twitter

このチュートリアルはFalko Timmeによる著作権(c) 2012です。これはChristoph Haasのチュートリアルから派生したもので、http://workaround.orgで見つけることができます。このチュートリアルはCreative Commonsライセンス2.5またはそれ以降のバージョンの下で自由に使用できます。

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

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

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

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

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

1 予備ノート

このチュートリアルはFedora 17 x86_64に基づいているため、このチュートリアルを続ける前に基本的なFedora 17サーバーインストールを設定する必要があります。システムには静的IPアドレスが必要です。このチュートリアルでは192.168.0.100をIPアドレスとして、server1.example.comをホスト名として使用します。

ファイアウォールがオフになっていることを確認してください(少なくとも今のところ)。

また、SELinuxが無効になっていることを確認してください:

/etc/selinux/configを編集し、SELINUX=disabledに設定します:

vi /etc/selinux/config

| # このファイルはシステム上のSELinuxの状態を制御します。 # SELINUX=はこれらの3つの値のいずれかを取ることができます: # enforcing - SELinuxセキュリティポリシーが強制されます。 # permissive - SELinuxは強制する代わりに警告を表示します。 # disabled - SELinuxポリシーは読み込まれません。 SELINUX=disabled # SELINUXTYPE=はこれらの2つの値のいずれかを取ることができます: # targeted - 対象プロセスが保護されます。 # minimum - 対象ポリシーの変更。選択されたプロセスのみが保護されます。 # mls - マルチレベルセキュリティ保護。 SELINUXTYPE=targeted |

その後、システムを再起動する必要があります:

reboot

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

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

yum update

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

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

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

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

| [...] ## 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_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.64.0/courier-authlib-0.64.0.tar.bz2  
wget https://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap-4.9.3.tar.bz2  
wget https://sourceforge.net/projects/courier/files/maildrop/2.5.5/maildrop-2.5.5.tar.bz2

(courier-imap-4.9.3.tar.bz2をダウンロードし、最新のcourier-imap-4.10.0.tar.bz2をダウンロードしないようにしてください。courier-imap-4.10.0.tar.bz2をビルドしようとすると、システムが再現可能に停止しました。)

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

sudo rpmbuild -ta courier-authlib-0.64.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 580  
-rw-r--r-- 1 root root 127673 Jun 11 17:29 courier-authlib-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 315769 Jun 11 17:29 courier-authlib-debuginfo-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  37937 Jun 11 17:29 courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  17657 Jun 11 17:29 courier-authlib-ldap-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13865 Jun 11 17:29 courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13101 Jun 11 17:29 courier-authlib-pgsql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   8421 Jun 11 17:29 courier-authlib-pipe-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  34917 Jun 11 17:29 courier-authlib-userdb-0.64.0-1.fc17.x86_64.rpm  
[falko@server1 downloads]$

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

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/courier-authlib-0.64.0-1.fc17.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm

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

cd $HOME/downloads

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

sudo mkdir /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 1248  
-rw-rw-r-- 1 falko falko 318293 Jun 11 18:28 courier-imap-4.9.3-1.17.x86_64.rpm  
-rw-rw-r-- 1 falko falko 957697 Jun 11 18:28 courier-imap-debuginfo-4.9.3-1.17.x86_64.rpm  
[falko@server1 x86_64]$

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

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

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

cd $HOME/downloads

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

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 1844  
-rw-r--r-- 1 root root 127673 Jun 11 17:29 courier-authlib-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 315769 Jun 11 17:29 courier-authlib-debuginfo-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  37937 Jun 11 17:29 courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  17657 Jun 11 17:29 courier-authlib-ldap-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13865 Jun 11 17:29 courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13101 Jun 11 17:29 courier-authlib-pgsql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   8421 Jun 11 17:29 courier-authlib-pipe-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  34917 Jun 11 17:29 courier-authlib-userdb-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 285877 Jun 11 18:42 maildrop-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root 829453 Jun 11 18:42 maildrop-debuginfo-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root 102417 Jun 11 18:42 maildrop-devel-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root  66177 Jun 11 18:42 maildrop-man-2.5.5-1.17.x86_64.rpm  
[falko@server1 downloads]$

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

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

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

exit

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

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

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/17/Everything/source/SRPMS/p/postfix-2.9.2-2.fc17.src.rpm  
rpm -ivh postfix-2.9.2-2.fc17.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-vda-v11-2.9.1.patch  
cd /root/rpmbuild/SPECS/

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

vi postfix.spec

| [...] # Patches Patch0: postfix-vda-v11-2.9.1.patch Patch1: postfix-2.7.0-config.patch Patch2: postfix-2.6.1-files.patch Patch3: postfix-alternatives.patch Patch8: postfix-large-fs.patch Patch9: pflogsumm-1.1.3-datecalc.patch [...] %prep %setup -q # 必須パッチを適用 %patch0 -p1 -b .vda-v11 %patch1 -p1 -b .config %patch2 -p1 -b .files %patch3 -p1 -b .alternatives %patch8 -p1 -b .large-fs [...] |

新しいPostfixパッケージをビルドする前に、その要件libdb-develをインストールする必要があります。そして、libdb-develはdb4-develと競合するため、最初にそのパッケージを削除する必要があります:

yum remove db4-devel
yum install libdb-devel

次に、クォータと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 10312  
-rw-r--r-- 1 root root  127673 Jun 11 17:29 courier-authlib-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  315769 Jun 11 17:29 courier-authlib-debuginfo-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   37937 Jun 11 17:29 courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   17657 Jun 11 17:29 courier-authlib-ldap-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   13865 Jun 11 17:29 courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   13101 Jun 11 17:29 courier-authlib-pgsql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root    8421 Jun 11 17:29 courier-authlib-pipe-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   34917 Jun 11 17:29 courier-authlib-userdb-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  285877 Jun 11 18:42 maildrop-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root  829453 Jun 11 18:42 maildrop-debuginfo-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root  102417 Jun 11 18:42 maildrop-devel-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root   66177 Jun 11 18:42 maildrop-man-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root 2291437 Jun 11 19:04 postfix-2.9.2-2.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 6308357 Jun 11 19:04 postfix-debuginfo-2.9.2-2.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   65393 Jun 11 19:04 postfix-perl-scripts-2.9.2-2.fc17.x86_64.rpm  
[root@server1 x86_64]#

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

rpm -ivh postfix-2.9.2-2.fc17.x86_64.rpm
Share: X/Twitter LinkedIn

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

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