メールサーバー · 3 min read · Oct 03, 2025

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

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

バージョン 1.0
著者: Falko Timme
Twitterでフォローしてください

このチュートリアルは、Falko Timme による著作権 (c) 2011 です。これは、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 をインストールする方法も示します。

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

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

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

1 前提条件

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

/bin/sh を /bin/bash へのシンボリックリンクにすることが非常に重要です:

dpkg-reconfigure dash

dash をデフォルトのシステムシェル (/bin/sh) として使用しますか? <– いいえ

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 libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

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

一般的なメール構成のタイプ: <– インターネットサイト
システムメール名: <– server1.example.com
MySQL の「root」ユーザーの新しいパスワード: <– yourrootsqlpassword
MySQL の「root」ユーザーのパスワードを再入力: <– yourrootsqlpassword
ウェブベースの管理用のディレクトリを作成しますか? <– いいえ
SSL 証明書が必要ですか <– はい
ワークグループ/ドメイン名: <– WORKGROUP
自動的に再構成するウェブサーバー: <– apache2
phpmyadmin のデータベースを dbconfig-common で構成しますか? <– いいえ

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

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

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

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

postconf -d | grep mail_version

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

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

)

wget http://vda.sourceforge.net/VDA/postfix-vda-2.7.1.patch  
cd postfix-2.7.1  
patch -p1 < ../postfix-vda-2.7.1.patch  
dpkg-buildpackage

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

cd ..

コマンド

ls -l

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

root@server1:/usr/src# ls -l  
total 6416  
drwxr-xr-x 19 root root 4096 Feb 28 15:33 postfix-2.7.1  
-rw-r--r-- 1 root root 3980 Feb 28 15:33 postfix_2.7.1-1_amd64.changes  
-rw-r--r-- 1 root root 1419128 Feb 28 15:33 postfix_2.7.1-1_amd64.deb  
-rw-r--r-- 1 root root 234708 Feb 28 15:31 postfix_2.7.1-1.diff.gz  
-rw-r--r-- 1 root root 1181 Feb 28 15:31 postfix_2.7.1-1.dsc  
-rw-r--r-- 1 root root 3418747 Jun 21 2010 postfix_2.7.1.orig.tar.gz  
-rw-r--r-- 1 root root 42086 Feb 28 15:33 postfix-cdb_2.7.1-1_amd64.deb  
-rw-r--r-- 1 root root 146770 Feb 28 15:33 postfix-dev_2.7.1-1_all.deb  
-rw-r--r-- 1 root root 1003542 Feb 28 15:33 postfix-doc_2.7.1-1_all.deb  
-rw-r--r-- 1 root root 50510 Feb 28 15:33 postfix-ldap_2.7.1-1_amd64.deb  
-rw-r--r-- 1 root root 44160 Feb 28 15:33 postfix-mysql_2.7.1-1_amd64.deb  
-rw-r--r-- 1 root root 44252 Feb 28 15:33 postfix-pcre_2.7.1-1_amd64.deb  
-rw-r--r-- 1 root root 44214 Feb 28 15:33 postfix-pgsql_2.7.1-1_amd64.deb  
-rw-r--r-- 1 root root 59667 Nov 5 15:05 postfix-vda-2.7.1.patch  
root@server1:/usr/src#

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

dpkg -i postfix_2.7.1-1_amd64.deb postfix-mysql_2.7.1-1_amd64.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 が mail データベースに接続するために使用されます:

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 INT(10) 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] へのメールを転送します。

sourcedestination
[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

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

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