メールサーバー · 2 min read · Sep 28, 2025

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

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

バージョン 1.0
著者: Falko Timme

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

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

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

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

このチュートリアルはCentOS 5.1(i386)に基づいています。ここで説明されているように、基本的なCentOSシステムをすでにセットアップしている必要があります: https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig および https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p2。また、ファイアウォールがオフになっていること(少なくとも今のところ)と、SELinuxが無効になっていること(これは重要です!)を確認してください。これは、https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p3の第6章に示されています。

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

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

1 /etc/hostsを編集する

この例では、ホスト名はserver1.example.comで、IPアドレスは192.168.0.100ですので、/etc/hostsを次のように変更します:

vi /etc/hosts

| # 以下の行を削除しないでください。さもないと、ネットワーク機能を必要とするさまざまなプログラムが失敗します。 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 ::1 localhost6.localdomain6 localhost6 |

2 一部のソフトウェアをインストールする

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

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

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

yum update

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

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

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

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

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

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

その後、次の単一のコマンドで必要なパッケージをインストールできます(Courier-IMAPをビルドするために必要なパッケージを含む):

yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel

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

残念ながら、Courier-IMAP、Courier-Authlib、およびMaildropのrpmパッケージはないため、このチュートリアルで説明されているようにインストールする必要があります: Fedora、RedHat、CentOSにおけるcourier-imap、courier-authlib、およびmaildropのインストール方法

rpmパッケージを作成する際に問題が発生した場合は、私のものをダウンロードできます:

  • courier-authlib-0.60.2-1.i386.rpm
  • courier-authlib-devel-0.60.2-1.i386.rpm
  • courier-authlib-mysql-0.60.2-1.i386.rpm
  • courier-imap-4.2.1-1.i386.rpm
  • maildrop-2.0.4-1.i386.rpm

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

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

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm  
rpm -ivh postfix-2.3.3-2.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.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 [...] %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 [...] |

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

rpmbuild -ba postfix.spec

次のような多くの警告が表示されますが、無視できます:

msg.h:12:1: warning: "/*" within comment  
msg.h:14:1: warning: "/*" within comment  
msg.h:33:1: warning: "/*" within comment  
msg.h:34:1: warning: "/*" within comment  
msg.h:35:1: warning: "/*" within comment  
msg.h:36:1: warning: "/*" within comment

私たちのPostfix rpmパッケージは/usr/src/redhat/RPMS/i386に作成されますので、そこに移動します:

cd /usr/src/redhat/RPMS/i386

コマンド

ls -l

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

[root@server1 i386]# ls -l  
total 11280  
-rw-r--r-- 1 root root 3819299 Dec  5 15:25 postfix-2.3.3-2.i386.rpm  
-rw-r--r-- 1 root root 7655069 Dec  5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm  
-rw-r--r-- 1 root root   50346 Dec  5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm  
[root@server1 i386]#

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

rpm -ivh postfix-2.3.3-2.i386.rpm

(Postfix rpmパッケージの作成に問題がある場合は、ここから私のものをダウンロードできます: postfix-2.3.3-2.i386.rpm。)

6 MySQLパスワードを設定し、phpMyAdminを構成する

MySQLを起動します:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

次に、MySQLのrootアカウントのパスワードを設定します:

mysqladmin -u root password yourrootsqlpassword  
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

次に、phpMyAdminを構成します。phpMyAdminがlocalhostからの接続だけでなく、接続を許可するようにApacheの設定を変更します(スタンザのコメントアウト):

vi /etc/httpd/conf.d/phpmyadmin.conf

| # # MySQLを管理するためのWebアプリケーション # # # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin |

次に、phpMyAdminの認証をcookieからhttpに変更します:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* 認証タイプ */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

その後、Apacheのシステム起動リンクを作成し、起動します:

chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

これで、ブラウザをhttp://server1.example.com/phpmyadmin/またはhttp://192.168.0.100/phpmyadmin/に向け、ユーザー名rootと新しいroot MySQLパスワードでログインできます。

Share: X/Twitter LinkedIn

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

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