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

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

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

Version 1.0
Author: 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のインストールもカバーします。また、ユーザーがメールを読み書きし、パスワードを変更できるようにするために、SquirrelMailをWebメールインターフェースとしてインストールする方法も示します。

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

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

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

1 前提条件

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

2 Postfix、Courier、Saslauthd、MySQL、phpMyAdminのインストール

Postfix、Courier、Saslauthd、MySQL、およびphpMyAdminをインストールするには、次のコマンドを実行します。

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

いくつかの質問が表示されます:

MySQL「root」ユーザーの新しいパスワード: <– yourrootsqlpassword
MySQL「root」ユーザーのパスワードを再入力してください: <– yourrootsqlpassword
Webベースの管理用にディレクトリを作成しますか? <– いいえ
メール設定の一般的なタイプ: <– インターネットサイト
システムメール名: <– server1.example.com
SSL証明書が必要 <– はい
ワークグループ/ドメイン名: <– WORKGROUP
DHCPからのWINS設定を使用するようにsmb.confを変更しますか? <– いいえ
自動的に再構成するWebサーバー: <– apache2

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

Postfixのソースを取得し、クォータパッチを適用し、新しいPostfix.debパッケージをビルドしてそれらの.debパッケージをインストールする必要があります。

apt-get build-dep postfix
cd /usr/src  
apt-get source postfix

(次のコマンドで正しいPostfixバージョンを使用していることを確認してください。私はPostfix 2.5.5をインストールしています。Postfixのバージョンは次のコマンドを実行することで確認できます。

postconf -d | grep mail_version

出力は次のようになります:

server1:/usr/src# postconf -d | grep mail_version  
mail_version = 2.5.5  
milter_macro_v = $mail_name $mail_version  
server1:/usr/src#

wget http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz  
gunzip postfix-2.5.5-vda-ng.patch.gz  
cd postfix-2.5.5  
patch -p1 < ../postfix-2.5.5-vda-ng.patch  
dpkg-buildpackage

dpkg-buildpackageコマンドの最後に次のような警告が表示されることがあります:

dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

このメッセージは無視できます。

次に、1つ上のディレクトリに移動します。そこに新しい.debパッケージが作成されています:

cd ..

コマンド

ls -l

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

server1:/usr/src# ls -l  
total 5880  
drwxr-xr-x 19 root root 4096 2009-02-20 14:15 postfix-2.5.5  
-rw-r--r-- 1 root src 236910 2009-02-20 14:12 postfix_2.5.5-1.1.diff.gz  
-rw-r--r-- 1 root src 1178 2009-02-20 14:12 postfix_2.5.5-1.1.dsc  
-rw-r--r-- 1 root src 3695 2009-02-20 14:17 postfix_2.5.5-1.1_i386.changes  
-rw-r--r-- 1 root src 1233138 2009-02-20 14:17 postfix_2.5.5-1.1_i386.deb  
-rw-r--r-- 1 root src 3157877 2008-09-02 23:18 postfix_2.5.5.orig.tar.gz  
-rw-r--r-- 1 root src 58389 2008-09-06 05:02 postfix-2.5.5-vda-ng.patch  
-rw-r--r-- 1 root src 41572 2009-02-20 14:17 postfix-cdb_2.5.5-1.1_i386.deb  
-rw-r--r-- 1 root src 141394 2009-02-20 14:17 postfix-dev_2.5.5-1.1_all.deb  
-rw-r--r-- 1 root src 915978 2009-02-20 14:17 postfix-doc_2.5.5-1.1_all.deb  
-rw-r--r-- 1 root src 48934 2009-02-20 14:17 postfix-ldap_2.5.5-1.1_i386.deb  
-rw-r--r-- 1 root src 43512 2009-02-20 14:17 postfix-mysql_2.5.5-1.1_i386.deb  
-rw-r--r-- 1 root src 43448 2009-02-20 14:17 postfix-pcre_2.5.5-1.1_i386.deb  
-rw-r--r-- 1 root src 43586 2009-02-20 14:17 postfix-pgsql_2.5.5-1.1_i386.deb  
server1:/usr/src#

postfixおよびpostfix-mysqlパッケージを選択し、次のようにインストールします:

dpkg -i postfix_2.5.5-1.1_i386.deb postfix-mysql_2.5.5-1.1_i386.deb

4 Postfix/Courier用のMySQLデータベースを作成する

次に、mailという名前のデータベースを作成します:

mysqladmin -u root -p create mail

次に、MySQLシェルに移動します:

mysql -u root -p

MySQLシェルで、mailデータベースに対してSELECT、INSERT、UPDATE、DELETE権限を持つmail_adminというユーザーを作成します(自分のパスワードに置き換えてください)。このユーザーは、PostfixとCourierがメールデータベースに接続するために使用されます:

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';  
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';  
FLUSH PRIVILEGES;

MySQLシェルのままで、PostfixとCourierに必要なテーブルを作成します:

USE mail;
CREATE TABLE domains (  
domain varchar(50) NOT NULL,  
PRIMARY KEY (domain) )  
TYPE=MyISAM;
CREATE TABLE forwardings (  
source varchar(80) NOT NULL,  
destination TEXT NOT NULL,  
PRIMARY KEY (source) )  
TYPE=MyISAM;
CREATE TABLE users (  
email varchar(80) NOT NULL,  
password varchar(20) NOT NULL,  
quota bigint(20) DEFAULT '10485760',  
PRIMARY KEY (email)  
) TYPE=MyISAM;
CREATE TABLE transport (  
domain varchar(128) NOT NULL default '',  
transport varchar(128) NOT NULL default '',  
UNIQUE KEY domain (domain)  
) TYPE=MyISAM;
quit;

ご覧のとおり、quit;コマンドでMySQLシェルを終了し、Linuxシェルに戻りました。

domainsテーブルは、Postfixがメールを受信する各仮想ドメインを保存します(例:example.com)。

domain
example.com

forwardingsテーブルは、1つのメールアドレスを別のメールアドレスにエイリアスするためのもので、たとえば[email protected]のメールを[email protected]に転送します。

usersテーブルは、すべての仮想ユーザー(すなわち、メールアドレス、メールアドレスとユーザー名が同じであるため)とパスワード(暗号化された形式!)および各メールボックスのクォータ値を保存します(この例では、デフォルト値は10485760バイト、つまり10MBです)。

emailpasswordquota
[email protected]No9.E4skNvGa.(暗号化された形式の「秘密」)10485760

transportテーブルはオプションで、上級ユーザー向けです。特定のユーザー、全ドメイン、またはすべてのメールを別のサーバーに転送することを可能にします。たとえば、

domaintransport
example.comsmtp:[1.2.3.4]

は、example.comのすべてのメールをsmtpプロトコルを介してIPアドレス1.2.3.4のサーバーに転送します(角括弧[]は「MX DNSレコードのルックアップを行わない」という意味です(IPアドレスに対しては意味があります…)。完全修飾ドメイン名(FQDN)を代わりに使用する場合は、角括弧を使用しません)。

ちなみに、(あなたのメールサーバーシステムのIPアドレスが192.168.0.100であると仮定しています)ブラウザでhttp://192.168.0.100/phpmyadmin/にアクセスし、mail_adminとしてログインできます。次に、データベースを確認できます。後でphpMyAdminを使用してメールサーバーを管理できます。

Share: X/Twitter LinkedIn

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

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