メールサーバー · 1 min read · Oct 05, 2025

フルメールサーバーソリューション w/ バーチャルドメインとユーザー (Debian Etch, Postfix, Mysql, Dovecot, DSpam, ClamAV, Postgrey, RBL) - ページ 6

V. メール配信サーバー

メール配信サーバーは、DSPAMというサービスを介してベイジアンアルゴリズムを使用してSPAMをチェックするサーバーです。DSPAMは非常に優れた機能を持ち、さまざまな設定に関する良いドキュメントが付属しています。私たちの特定の設定はかなりシンプルです。MX-1とMX-2は、LMTPを介してpostman.internal.example.comにメールを配信します。LMTPはローカルメール転送プロトコルで、基本的な情報はここにあります。DSPAMはメールを受信し、自身のアルゴリズムに対してチェックを行い、ウイルス検出のためにClamAVにメールを渡します。すべてが正常であれば、メールは最終配信のためにDovecotに渡されます。

セクションを一つずつ見ていきましょう。それでは、postman.internal.example.comで作業を始めましょう。

A. NFS設定

Dovecotが私たちのメールを配信するので、vmailディレクトリをメール配信サーバーにマッピングする必要があります。

以下のようにvmailユーザーとディレクトリを作成してください:

# useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "バーチャルメールボックス" vmail  
# mkdir /var/vmail  
# chmod 770 /var/vmail/  
# chown vmail:mail /var/vmail/

次に、NFSクライアントツールをインストールする必要があります:

# apt-get install nfs-common portmap

その後、ディレクトリをNFS共有にマウントする必要があります。簡単なテストを行うために、以下を実行してください:

# mount files-1.internal.example.com:/vmail /vmail

これで、files-1から/vmail共有にアクセスできるようになりました。ファイルを書き込んでみてください:

# cd /vmail  
# touch tmp

今回は正常に動作するはずです(postmanはNFSマウントに対して読み書きアクセスがあります… MXサーバーは読み取りアクセスのみでした)。

すべてが正常に動作していると仮定して、NFSをアンマウントしてください:

# cd /  
umount /vmail

次に、以下を/etc/fstabに追加してマウントを永続化します:

[...]  
files-1.internal.example.com:/vmail /vmail nfs rw,rsize=4096,wsize=4096,hard,intr,tcp,noatime,nodev,async 0 0

ファイルシステムを最後にもう一度マウントしてください:

# mount /vmail

… これで準備完了です!

B. DSPAMのインストール

再度、debianはこれを非常に簡単にします:

# apt-get install dspam dspam-doc libdspam7-drv-mysql

libdspam7-drv-mysqlのデータベースをdbconfig-commonで設定するかどうか尋ねられますが、’いいえ’を選択してください。正直なところ、dbconfigを使用したい場合は何も止めるものはありませんが、ドキュメントのために設定を詳しく説明します。

C. MySQLデータベースの設定

MySQLデータベースにいくつかのテーブルを設定する必要があるので、sql-1.internal.example.comにログインし、rootとしてmysqlクライアントを起動します:

# mysql -u root -p

次に、新しいDSPAMデータベースとユーザーを作成します:

MYSQL> CREATE DATABASE dspam_db;  
MYSQL> GRANT ALL PRIVILEGES ON dspam_db.* TO 'dspam_user'@'postman.internal.example.com' IDENTIFIED BY 'dspam_user_password';

注意:dspam_user_passwordを安全なパスワードに変更してください!

D. MySQL用のDSPAMの設定

MySQLにDSPAMデータベースとユーザーアカウントがあるので、DSPAM MySQLドライバーからテーブルをインポートできます。これらはメール配信サーバー(postman.internal.example.com)の/usr/share/doc/libdspam7-drv-mysqlに保存されています。スキーマには2つの異なるバージョンがあり、1つは速度のために、もう1つはハードディスクスペースを節約するために構築されています。私たちは速度のためのものを使用しますが、どちらを選んでも構いません。ドキュメントを読むことを忘れないでください、それが存在する理由です!

メインスキーマをインストールします:

# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/mysql_objects-speed.sql

権限エラーが発生した場合は、mysqlサーバーに戻り、ユーザーが正しく作成されたか確認してください。

すべてがうまくいったと仮定して、バーチャルユーザー用のテーブルもインポートします:

# mysql -u dspam_user -h sql-1.internal.example.com -p dspam_db < /usr/share/doc/libdspam7-drv-mysql/virtual_users.sql

次に、DSPAMにMySQL DBと通信する方法を教える必要があります。これは/etc/dspam/dspam.d/mysql.confファイルを介して行います。適宜編集してください:

[...]  
MySQLServer sql-1.internal.example.com  
MySQLPort 3306  
MySQLUser dspam_user  
MySQLPass dspam_user_password  
MysqLDb dspam_db  
[...]  
MySQLVirtualTable dspam_virtual_uids  
MySQLVirtualUIDField uid  
MySQLVirtualUsernameField username  
[...]  

これでDSPAMはすべての情報をMySQL DB内に保存します。

注意:これは一時的な設定です。これは、私たちがこのガイドを書く前にDSPAMバーチャルユーザーのインストールを完了していなかったためです。理想的には、DSPAMはPostfixと同じバーチャルユーザーテーブルを参照して、すべてのトークン情報が正しく保存されるようにしたいです。この変更が完了したら、ガイドを更新します。

Share: X/Twitter LinkedIn

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

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