メールサーバー · 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-mysqllibdspam7-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と同じバーチャルユーザーテーブルを参照して、すべてのトークン情報が正しく保存されるようにしたいです。この変更が完了したら、ガイドを更新します。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。