メールサーバー · 1 min read · Nov 11, 2025

Postfix、Courier、MySQLを使用した仮想ユーザーとドメイン (+ SMTP-AUTH、クォータ、SpamAssassin、ClamAV)

これは“コピー&ペースト”のHowToです! このチュートリアルに従う最も簡単な方法は、コマンドラインクライアント/SSHクライアント(Windows用のPuTTYなど)を使用し、コマンドを単純にコピー&ペーストすることです(IPアドレス、ホスト名、パスワードなどの自分の情報を提供する必要がある場合を除く)。これにより、タイプミスを避けることができます。

Postfix、Courier、MySQLを使用した仮想ユーザーとドメイン (+ SMTP-AUTH、クォータ、SpamAssassin、ClamAV)

バージョン 1.0
著者: Falko Timme

このチュートリアルはFalko Timmeによる著作権(c) 2005です。これは、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つ目の利点は、ユーザーがユーザー名としてメールアドレスを持つこと(ユーザー名+メールアドレスではなく)で、理解しやすく、記憶しやすいことです。

このチュートリアルはDebian Sarge(Debian 3.1)に基づいています。ここに記載されているように、基本的なDebianシステムをすでにセットアップしている必要があります: https://www.howtoforge.com/perfect_setup_debian_sarge および https://www.howtoforge.com/perfect_setup_debian_sarge_p2。

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

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

1 Postfix、Courier、Saslauthd、MySQL、phpMyAdminをインストールする

これらはすべて1つのコマンドでインストールできます:

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authmysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls libsasl2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin (1行!)

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

suExecを有効にしますか? <– はい
Webベースの管理用のディレクトリを作成しますか? <– いいえ
一般的な構成タイプは? <– インターネットサイト
rootのメールはどこに送りますか? <– なし
メール名は? <– server1.example.com
受け入れる他の宛先は?(なしの場合は空白) <– server1.example.com、localhost、localhost.localdomain
メールキューの同期更新を強制しますか? <– いいえ
SSL証明書が必要ですか <– はい
インストールヒント <– はい
自動的に再構成したいWebサーバーはどれですか? <– apache、apache2
今すぐapacheを再起動しますか? <– はい

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

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

apt-get install build-essential dpkg-dev fakeroot debhelper libdb4.2-dev libgdbm-dev libldap2-dev libpcre3-dev libmysqlclient10-dev libssl-dev libsasl2-dev postgresql-dev po-debconf dpatch (1行!)
cd /usr/src
apt-get source postfix
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.1.5-trash.patch.gz
gunzip postfix-2.1.5-trash.patch.gz
cd postfix-2.1.5
patch -p1 < ../postfix-2.1.5-trash.patch
dpkg-buildpackage
cd ..
dpkg -i postfix_2.1.5-9_i386.deb
dpkg -i postfix-mysql_2.1.5-9_i386.deb
dpkg -i postfix-tls_2.1.5-9_i386.deb

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

デフォルトでは、MySQLはrootパスワードなしでインストールされますので、すぐに変更します(yourrootsqlpasswordを使用したいパスワードに置き換えます):

mysqladmin -u root password yourrootsqlpassword

次に、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

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

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