メールサーバー · 4 min read · Oct 13, 2025
Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (Fedora 18 x86_64)
このチュートリアルは、Falko Timmeによる著作権(c) 2013です。これは、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のインストールもカバーします。また、ユーザーがメールを読み、送信し、パスワードを変更できるようにするために、WebメールインターフェースとしてSquirrelMailをインストールする方法も示します。
このような「仮想」セットアップ(MySQLデータベース内の仮想ユーザーとドメイン)の利点は、「実際の」システムユーザーに基づくセットアップよりもはるかにパフォーマンスが高いことです。この仮想セットアップを使用すると、メールサーバーは数千のドメインとユーザーを処理できます。さらに、新しいユーザー/ドメインを追加したり、既存のものを編集したりする際に、MySQLデータベースのみを扱えばよいため、管理が容易です。dbファイルを作成するためのpostmapコマンドや、Postfixの再読み込みは不要です。MySQLデータベースの管理には、phpMyAdminのようなWebベースのツールを使用できます。このhowtoでもインストールされます。3つ目の利点は、ユーザーがユーザー名としてメールアドレスを持つこと(ユーザー名+メールアドレスの代わりに)で、理解しやすく、記憶しやすいことです。
このhowtoは実用的なガイドとして意図されています。理論的な背景はカバーしていません。それらはWeb上の他の多くの文書で扱われています。
この文書には、いかなる種類の保証もありません!これは、このようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はたくさんありますが、これは私が取る方法です。これがあなたにとって機能するという保証はありません!
1 前提条件
このチュートリアルはFedora 18 x86_64に基づいているため、このチュートリアルを続ける前に基本的なFedora 18サーバーのインストールを設定する必要があります。システムには静的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 |
その後、システムを再起動する必要があります:
reboot2 ソフトウェアのインストール
まず、システム上の既存のパッケージを更新します:
yum update次に、後で必要なソフトウェアをインストールします:
yum groupinstall 'Development Tools'yum groupinstall 'Development Libraries'3 Apache、MySQL、phpMyAdminのインストール
これらはすべて1つのコマンドでインストールできます(Courier-IMAPをビルドするために必要なパッケージを含む):
yum install ntp httpd mod_ssl 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 sqlite-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 https://sourceforge.net/projects/courier/files/authlib/0.65.0/courier-authlib-0.65.0.tar.bz2
wget https://sourceforge.net/projects/courier/files/imap/4.12.0/courier-imap-4.12.0.tar.bz2
wget https://sourceforge.net/projects/courier/files/maildrop/2.6.0/maildrop-2.6.0.tar.bz2次に($HOME/downloads内で)、courier-authlibをビルドできます:
sudo rpmbuild -ta courier-authlib-0.65.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 616
-rw-r--r-- 1 root root 140580 Jan 31 17:14 courier-authlib-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 324148 Jan 31 17:14 courier-authlib-debuginfo-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 38928 Jan 31 17:14 courier-authlib-devel-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 18756 Jan 31 17:14 courier-authlib-ldap-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 13044 Jan 31 17:14 courier-authlib-mysql-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 14208 Jan 31 17:14 courier-authlib-pgsql-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 9356 Jan 31 17:14 courier-authlib-pipe-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 11696 Jan 31 17:14 courier-authlib-sqlite-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 37580 Jan 31 17:14 courier-authlib-userdb-0.65.0-1.fc18.x86_64.rpm
[falko@server1 downloads]$インストールしたいものを選択し、次のようにインストールします:
sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/courier-authlib-0.65.0-1.fc18.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-mysql-0.65.0-1.fc18.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-devel-0.65.0-1.fc18.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.12.0.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 1256
-rw-rw-r-- 1 falko falko 344996 Jan 31 17:19 courier-imap-4.12.0-1.18.x86_64.rpm
-rw-rw-r-- 1 falko falko 934056 Jan 31 17:19 courier-imap-debuginfo-4.12.0-1.18.x86_64.rpm
[falko@server1 x86_64]$次のようにcourier-imapをインストールできます:
sudo rpm -ivh courier-imap-4.12.0-1.18.x86_64.rpm次に、ダウンロードディレクトリに戻ります:
cd $HOME/downloadsそして、次のコマンドを実行して、maildropパッケージをビルドします:
sudo rpmbuild -ta maildrop-2.6.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 1880
-rw-r--r-- 1 root root 140580 Jan 31 17:14 courier-authlib-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 324148 Jan 31 17:14 courier-authlib-debuginfo-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 38928 Jan 31 17:14 courier-authlib-devel-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 18756 Jan 31 17:14 courier-authlib-ldap-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 13044 Jan 31 17:14 courier-authlib-mysql-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 14208 Jan 31 17:14 courier-authlib-pgsql-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 9356 Jan 31 17:14 courier-authlib-pipe-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 11696 Jan 31 17:14 courier-authlib-sqlite-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 37580 Jan 31 17:14 courier-authlib-userdb-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 309340 Jan 31 17:23 maildrop-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 805928 Jan 31 17:23 maildrop-debuginfo-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 105756 Jan 31 17:23 maildrop-devel-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 66416 Jan 31 17:23 maildrop-man-2.6.0-1.18.x86_64.rpm
[falko@server1 downloads]$次のようにmaildropをインストールできます:
sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/maildrop-2.6.0-1.18.x86_64.rpmすべての必要なパッケージをコンパイルしてインストールした後、次のようにrootに戻ることができます:
exit5 Postfixにクォータパッチを適用
Postfixのソースrpmを取得し、クォータパッチでパッチを当て、新しいPostfix rpmパッケージをビルドしてインストールする必要があります。
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/18/Everything/source/SRPMS/p/postfix-2.9.4-3.fc18.src.rpm
rpm -ivh postfix-2.9.4-3.fc18.src.rpm最後のコマンドは、無視できるいくつかの警告を表示します:
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using rootcd /root/rpmbuild/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-vda-v11-2.9.4.patch
cd /root/rpmbuild/SPECS/次に、ファイルpostfix.specを編集する必要があります:
vi postfix.spec| [...] # パッチ Patch0: postfix-vda-v11-2.9.4.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-develyum 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 10504
-rw-r--r-- 1 root root 140580 Jan 31 17:14 courier-authlib-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 324148 Jan 31 17:14 courier-authlib-debuginfo-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 38928 Jan 31 17:14 courier-authlib-devel-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 18756 Jan 31 17:14 courier-authlib-ldap-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 13044 Jan 31 17:14 courier-authlib-mysql-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 14208 Jan 31 17:14 courier-authlib-pgsql-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 9356 Jan 31 17:14 courier-authlib-pipe-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 11696 Jan 31 17:14 courier-authlib-sqlite-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 37580 Jan 31 17:14 courier-authlib-userdb-0.65.0-1.fc18.x86_64.rpm
-rw-r--r-- 1 root root 309340 Jan 31 17:23 maildrop-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 805928 Jan 31 17:23 maildrop-debuginfo-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 105756 Jan 31 17:23 maildrop-devel-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 66416 Jan 31 17:23 maildrop-man-2.6.0-1.18.x86_64.rpm
-rw-r--r-- 1 root root 2553200 Jan 31 17:30 postfix-2.9.4-3.fc18.x86_64.rpm
-rw-r--r-- 1 root root 6203284 Jan 31 17:30 postfix-debuginfo-2.9.4-3.fc18.x86_64.rpm
-rw-r--r-- 1 root root 66108 Jan 31 17:30 postfix-perl-scripts-2.9.4-3.fc18.x86_64.rpm
[root@server1 x86_64]#Postfixパッケージを選択し、次のようにインストールします:
rpm -ivh postfix-2.9.4-3.fc18.x86_64.rpm新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。